zoukankan      html  css  js  c++  java
  • 【转】基于openstack安装部署私有云详细图文教程

     更新时间:2017年02月04日 08:46:53   转载 作者:朱培  

     
    本文中作者通过自身基于OpenStack搭建私有云平台的实战经验,对OpenStack实施私有云落地的需求进行梳理,综合产生个人的观点和评价并和读者分享。
     

    本文主要分享的是云计算、openstack的使用、私有云平台建设、云服务器云硬盘的构建和使用。从基本概念入手到私有云建设,信息量非常大。对于openstack的安装部署都是从官方文档中一步步的介绍,内容非常详细。

    一、云计算 基本概念

    云计算(cloud computing)是基于互联网的相关服务的增加、使用和交付模式,通常涉及通过互联网来提供动态易扩展且经常是虚拟化的资源。云是网络、互联网的一种比喻说法。过去在图中往往用云来表示电信网,后来也用来表示互联网和底层基础设施的抽象。因此,云计算甚至可以让你体验每秒10万亿次的运算能力,拥有这么强大的计算能力可以模拟核爆炸、预测气候变化和市场发展趋势。用户通过电脑、笔记本、手机等方式接入数据中心,按自己的需求进行运算。

    云计算分类

    简单来说,就是把应用程序和数据都放在由大量服务器组成的云中,用户需要什么只要购买相应服务并使用即可。

    云计算分为私有云、公有云、混合云。

    云计算的服务分类:基础设施即服务、平台即服务、软件即服务。

    1. 超大规模。“云”具有相当的规模,Google云计算已经拥有100多万台服务器,亚马逊、IBM、微软和Yahoo等公司的“云”均拥有几十万台服务器。“云”能赋予用户前所未有的计算能力。
    2. 虚拟化。云计算支持用户在任意位置使用各种终端获取服务。所请求的资源来自“云”,而不是固定的有形的实体。应用在“云”中某处运行,但实际上用户无需了解应用运行的具体位置,只需要一台笔记本或一个PDA,就可以通过网络服务来获取各种能力超强的服务。
    3. 高可靠性。“云”使用了数据多副本容错、计算节点同构可互换等措施来保障服务的高可靠性,使用云计算比使用本地计算机更加可靠。
    4. 通用性。云计算不针对特定的应用,在“云”的支撑下可以构造出于变万化的应用,同一片“云”可以同时支撑不同的应用运行。
    5. 高可伸缩性。“云”的规模可以动态伸缩,满足应用和用户规模增长的需要。
    6. 按需服务。“云”是一个庞大的资源池,用户按需购买,像自来水、电和煤气那样计费。
    7. 极其廉价。“云”的特殊容错措施使得可以采用极其廉价的节点来构成云;“云”的自动化管理使数据中心管理成本大幅降低;“云”的公用性和通用性使资源的利用率大幅提升;“云”设施可以建在电力资源丰富的地区,从而大幅降低能源成本。

     二、Openstack基本概念

    OpenStack是一个开源的云计算管理平台项目,由几个主要的组件组合起来完成

    具体工作。OpenStack支持几乎所有类型的云环境,项目目标是提供实施简单、

    可大规模扩展、丰富、标准统一的云计算管理平台。OpenStack通过各种互补的

    服务提供了基础设施即服务(IaaS)的解决方案,每个服务提供API以进行集成。

    常见组件:

    • Dashboard(web项目)
    • Keystone(权限管理)
    • Nova(管理虚拟机)
    • Nova-network(管理网络流量和ip)
    • Glance(镜像管理项目)
    • Cinder(磁盘管理)
    • Swift(网盘,对象)

    基础的系统图

    三、Openstack安装部署

    下面来说一说openstack的安装部署。首先说明openstack的整体安装非常复杂,文末提供官方安装文档下载,我就是根据这个英文的官方文档来安装部署的。以下内容是参照官方文档“openstack-install-guide-yum-icehouse.pdf”来的。

    首先需要准备3台linux的机器。我这里选用的是centos6.6的64位的系统。配置IP地址,关闭防火墙,修改主机名。

    • Controller Node: 1 processor, 2 GB memory, and 5 GB storage

    • Compute01: 1 processor, 512 MB memory, and 5 GB storage

    • Compute02 Node: 1 processor, 2 GB memory, and 10 GB storage

    我这里controller的ip地址是:192.168.44.147

    computer01:192.168.44.148

    computer02:192.168.44.149

    基本环境配置

    以下内容是在controller机器上配置的。

    1、数据库安装。

    因为需要一个数据库,所以这里选用了mysql数据库。

    1
    yum install mysql mysql-server MySQL-python

    编辑/etc/my.cnf文件,在里面添加如下内容,主要意思就是设置编码为utf-8。

    1
    2
    3
    4
    5
    default-storage-engine = innodb
    innodb_file_per_table
    collation-server = utf8_general_ci
    init-connect = 'SET NAMES utf8'
    character-set-server = utf8

    然后启动服务,开机启动。

    1
    2
    3
    4
    # service mysqld start
    # chkconfig mysqld on
    # mysql_install_db
    # mysql_secure_installation

    赋权,使其可以远程登录。

    1
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'a';

    2、openstack基本包安装。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    # yum install yum-plugin-priorities
     
     
    noarch.rpm
     
    # yum install openstack-utils
     
    # yum install openstack-selinux

    3、安装消息队列

    1
    yum install qpid-cpp-server

    启动服务

    1
    2
    service qpidd start
    chkconfig qpidd on

    权限认证服务(keystone)

    安装权限认证服务:

    1
    yum install openstack-keystone python-keystoneclient -y

    创建用户,写入到配置文件中:

    1
    2
    openstack-config --set /etc/keystone/keystone.conf
    database connection mysql://keystone:KEYSTONE_DBPASS@controller/keystone

    创建keystone数据库表:

    1
    2
    3
    4
    5
    6
    7
    $ mysql -u root -p
    mysql> CREATE DATABASE keystone;
    mysql> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost'
    IDENTIFIED BY 'KEYSTONE_DBPASS';
    mysql> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%'
    IDENTIFIED BY 'KEYSTONE_DBPASS';
    mysql> exit

    自动生成表:

    1
    su -s /bin/sh -c "keystone-manage db_sync" keystone

    设置用户环境变量:

    1
    2
    3
    4
    5
    6
    7
    8
    ADMIN_TOKEN=$(openssl rand -hex 10)
    echo $ADMIN_TOKEN
    openstack-config --set /etc/keystone/keystone.conf DEFAULT
    admin_token $ADMIN_TOKEN
     
    # keystone-manage pki_setup --keystone-user keystone --keystone-group keystone
    # chown -R keystone:keystone /etc/keystone/ssl
    # chmod -R o-rwx /etc/keystone/ssl

    启动keystone服务:

    1
    2
    service openstack-keystone start
    chkconfig openstack-keystone on

    将admin_token设置到环境变量中去。

    1
    2
    export OS_SERVICE_TOKEN=$ADMIN_TOKEN
    export OS_SERVICE_ENDPOINT=http://controller:35357/v2.0

    创建管理员用户,默认的用户名为admin,密码为ADMIN_PASS,你可以自定义修改:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    [root@controller keystone]# keystone user-create --name=admin --pass=ADMIN_PASS --email=ADMIN_EMAIL
    +----------+----------------------------------+
    | Property | Value |
    +----------+----------------------------------+
    | email | ADMIN_EMAIL|
    | enabled | True |
    |id| 332f5ecb18c64bf687b154facd629fb6 |
    | name | admin |
    | username | admin |
    +----------+----------------------------------+
    [root@controller keystone]# keystone role-create --name=admin
    +----------+----------------------------------+
    | Property | Value |
    +----------+----------------------------------+
    |id| ab5da2c50d7443efb0514e84c2b4adb7 |
    | name | admin |
    +----------+----------------------------------+
    [root@controller keystone]# keystone tenant-create --name=admin --description="Admin Tenant"
    +-------------+----------------------------------+
    | Property | Value |
    +-------------+----------------------------------+
    | description | Admin Tenant |
    | enabled | True |
    | id | b89723a38b154eeea6416a83b293b0ad |
    | name| admin |
    +-------------+----------------------------------+
    [root@controller keystone]# keystone user-role-add --user=admin --tenant=admin --role=admin
    [root@controller keystone]# keystone user-role-add --user=admin --role=_member_ --tenant=admin
    [root@controller keystone]#

    创建一个权限认证服务,因为我这里的主机名是controller,所以下面有 http://controller:35357/v2.0 这些信息,可以自定义修改:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    [root@controller keystone]# keystone service-create --name=keystone --type=identity
    > --description="OpenStack Identity"
    +-------------+----------------------------------+
    | Property | Value |
    +-------------+----------------------------------+
    | description |OpenStack Identity|
    | enabled | True |
    | id | 4bfd5f39b86c45edb92d5c0488987dd8 |
    | name| keystone |
    | type| identity |
    +-------------+----------------------------------+
    [root@controller keystone]# keystone endpoint-create
    > --service-id=$(keystone service-list | awk '/ identity / {print $2}')
    > --publicurl=http://controller:5000/v2.0
    > --internalurl=http://controller:5000/v2.0
    > --adminurl=http://controller:35357/v2.0
    +-------------+----------------------------------+
    | Property | Value |
    +-------------+----------------------------------+
    | adminurl | http://controller:35357/v2.0 |
    | id | 0350b72901a141498fe48304b13a1b98 |
    | internalurl | http://controller:5000/v2.0|
    | publicurl | http://controller:5000/v2.0|
    |region |regionOne |
    | service_id | 4bfd5f39b86c45edb92d5c0488987dd8 |
    +-------------+----------------------------------+
    [root@controller keystone]# keystone user-create --name=demo --pass=DEMO_PASS --email=DEMO_EMAIL
    +----------+----------------------------------+
    | Property | Value |
    +----------+----------------------------------+
    | email |DEMO_EMAIL|
    | enabled | True |
    |id| b44a9a1462d74f4e928b3b339289a2ae |
    | name | demo |
    | username | demo |
    +----------+----------------------------------+
    [root@controller keystone]# keystone tenant-create --name=demo --description="Demo Tenant"
    +-------------+----------------------------------+
    | Property | Value |
    +-------------+----------------------------------+
    | description | Demo Tenant|
    | enabled | True |
    | id | 7bd79509ee184a2098ca0644679b60a8 |
    | name| demo |
    +-------------+----------------------------------+
    [root@controller keystone]# keystone user-role-add --user=demo --role=_member_ --tenant=demo
    [root@controller keystone]#

    为了方便我们取到token,我们可以vi admin-openrc.sh,然后添加如下内容:

    1
    2
    3
    4
    export OS_USERNAME=admin
    export OS_PASSWORD=ADMIN_PASS
    export OS_TENANT_NAME=admin
    export OS_AUTH_URL=http://controller:35357/v2.0

    在每次关机重启之后都要重新执行下面的命令,让环境变量起作用。否则会报”Expecting an auth URL via either –os-auth-url or env[OS_AUTH_URL]”的错误:

    1
    source admin-openrc.sh

    我们可以使用下面的命令查看keystone目前的用户有哪些:

    1
    keystone user-list

    测试效果:

    打开restclient-ui-3.5-jar-with-dependencies.jar来测试效果:

    url地址是: http://192.168.44.147:5000/v2.0/

    访问成功。

    配置镜像服务(glance)

    在controller服务器中安装服务:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    yum install openstack-glance python-glanceclient
     
     
    openstack-config --set /etc/glance/glance-api.conf database
    connection mysql://glance:GLANCE_DBPASS@controller/glance
     
     
    openstack-config --set /etc/glance/glance-registry.conf database
    connection mysql://glance:GLANCE_DBPASS@controller/glance

    在mysql数据库中创建glance数据库:

    1
    2
    3
    4
    5
    6
    7
    8
    $ mysql -u root -p
    mysql> CREATE DATABASE glance;
    mysql> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost'
    IDENTIFIED BY 'GLANCE_DBPASS';
    mysql> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%'
    IDENTIFIED BY 'GLANCE_DBPASS';
     
    flush privileges;

    自动生成表:

    1
    su -s /bin/sh -c "glance-manage db_sync" glance

    在keystone上创建用户:

    1
    2
    keystone user-create --name=glance --pass=GLANCE_PASS --email=glance@example.com
    $ keystone user-role-add --user=glance --tenant=service --role=admin

    配置授权服务:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    openstack-config --set /etc/glance/glance-api.conf keystone_authtoken
    auth_uri http://controller:5000
    openstack-config --set /etc/glance/glance-api.conf keystone_authtoken
    auth_host controller
    openstack-config --set /etc/glance/glance-api.conf keystone_authtoken
    auth_port 35357
    openstack-config --set /etc/glance/glance-api.conf keystone_authtoken
    auth_protocol http
    openstack-config --set /etc/glance/glance-api.conf keystone_authtoken
    admin_tenant_name service
    openstack-config --set /etc/glance/glance-api.conf keystone_authtoken
    admin_user glance
    openstack-config --set /etc/glance/glance-api.conf keystone_authtoken
    admin_password GLANCE_PASS
    openstack-config --set /etc/glance/glance-api.conf paste_deploy
    flavor keystone
    openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken
    auth_uri http://controller:5000
    openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken
    auth_host controller
    openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken
    auth_port 35357
    openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken
    auth_protocol http
    openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken
    admin_tenant_name service
    openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken
    admin_user glance
    openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken
    admin_password GLANCE_PASS
    openstack-config --set /etc/glance/glance-registry.conf paste_deploy
    flavor keystone

    启动服务:

    1
    2
    3
    4
    service openstack-glance-api start
    # service openstack-glance-registry start
    # chkconfig openstack-glance-api on
    # chkconfig openstack-glance-registry on

    创建服务:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    $ keystone service-create --name=glance --type=image
    --description="OpenStack Image Service"
     
     
    $ keystone endpoint-create
    --service-id=$(keystone service-list | awk '/ image / {print $2}')
    --publicurl=http://controller:9292
    --internalurl=http://controller:9292
    --adminurl=http://controller:9292
     
    [root@controller ~]# keystone service-create --name=glance --type=image
    > --description="OpenStack Image Service"
    /usr/lib64/python2.6/site-packages/Crypto/Util/number.py:57: PowmInsecureWarning: Not using mpz_powm_sec. You should rebuild using libgmp >= 5 to avoid timing attack vulnerability.
     _warn("Not using mpz_powm_sec. You should rebuild using libgmp >= 5 to avoid timing attack vulnerability.", PowmInsecureWarning)
    +-------------+----------------------------------+
    | Property | Value |
    +-------------+----------------------------------+
    | description | OpenStack Image Service |
    | enabled | True |
    | id | a45f77cfc12c42d19a45a6ea12cdfc51 |
    | name| glance |
    | type| image |
    +-------------+----------------------------------+
    [root@controller ~]# keystone endpoint-create
    > --service-id=$(keystone service-list | awk '/ image / {print $2}')
    > --publicurl=http://controller:9292
    > --internalurl=http://controller:9292
    > --adminurl=http://controller:9292
     
    +-------------+----------------------------------+
    | Property | Value |
    +-------------+----------------------------------+
    | adminurl | http://controller:9292 |
    | id | 75deb2d2f85e4b7b88fe18bf5fca1a87 |
    | internalurl | http://controller:9292 |
    | publicurl | http://controller:9292 |
    |region |regionOne |
    | service_id | a45f77cfc12c42d19a45a6ea12cdfc51 |
    +-------------+----------------------------------+

    创建镜像,先将下载好的cirros-0.3.2-x86_64-disk.img放置在/root目录下,然后执行下面的命令:

    复制代码代码如下:

    glance image-create --name "cirros-0.3.2-x86_64" --disk-format qcow2
    --container-format bare --is-public True --progress < cirros-0.3.2-x86_64-disk.img

    查看镜像列表:

    1
    glance image-list

    在前面我们已经对kvm虚拟化有所了解,所以我们现在知道qcow2就是一个镜像文件。

    服务器管理(Nova)

    对于虚拟机管理我们需要从controller和computer01进行配置。

    先来看controller的配置:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    yum install openstack-nova-api openstack-nova-cert openstack-nova-conductor
    openstack-nova-console openstack-nova-novncproxy openstack-nova-scheduler
    python-novaclient
     
    $ mysql -u root -p
    mysql> CREATE DATABASE nova;
    mysql> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost'
    IDENTIFIED BY 'NOVA_DBPASS';
    mysql> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%'
    IDENTIFIED BY 'NOVA_DBPASS';
     
    openstack-config --set /etc/nova/nova.conf database connection mysql://nova:NOVA_DBPASS@controller/nova
     
    openstack-config --set /etc/nova/nova.conf DEFAULT rpc_backend qpid
    openstack-config --set /etc/nova/nova.conf DEFAULT qpid_hostname controller
     
    openstack-config --set /etc/nova/nova.conf DEFAULT my_ip 192.168.44.147
    openstack-config --set /etc/nova/nova.conf DEFAULT vncserver_listen 192.168.216.210
    openstack-config --set /etc/nova/nova.conf DEFAULT vncserver_proxyclient_address 192.168.44.147
     
     
    openstack-config --set /etc/nova/nova.conf DEFAULT auth_strategy keystone
    openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_uri http://controller:5000
    openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_host controller
    openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_protocol http
    openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_port 35357
    openstack-config --set /etc/nova/nova.conf keystone_authtoken admin_user nova
    openstack-config --set /etc/nova/nova.conf keystone_authtoken admin_tenant_name service
    openstack-config --set /etc/nova/nova.conf keystone_authtoken admin_password NOVA_PASS
     
     
     
    $ keystone user-create --name=nova --pass=NOVA_PASS --email=nova@example.com
    $ keystone user-role-add --user=nova --tenant=service --role=admin
     
     
    $ keystone service-create --name=nova --type=compute
    --description="OpenStack Compute"
    $ keystone endpoint-create
    --service-id=$(keystone service-list | awk '/ compute / {print $2}')
    --publicurl=http://controller:8774/v2/%(tenant_id)s
    --internalurl=http://controller:8774/v2/%(tenant_id)s
    --adminurl=http://controller:8774/v2/%(tenant_id)s

    然后是computer01的配置:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    yum install openstack-nova-compute
     
     openstack-config --set /etc/nova/nova.conf database connection mysql://nova:NOVA_DBPASS@controller/nova
     openstack-config --set /etc/nova/nova.conf DEFAULT auth_strategy keystone
     openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_uri http://controller:5000
     openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_host controller
     openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_protocol http
     openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_port 35357
     openstack-config --set /etc/nova/nova.conf keystone_authtoken admin_user nova
     openstack-config --set /etc/nova/nova.conf keystone_authtoken admin_tenant_name service
     openstack-config --set /etc/nova/nova.conf keystone_authtoken admin_password NOVA_PASS
     
     openstack-config --set /etc/nova/nova.conf DEFAULT rpc_backend qpid
     openstack-config --set /etc/nova/nova.conf DEFAULT qpid_hostname controller
     
     
     openstack-config --set /etc/nova/nova.conf DEFAULT my_ip 192.168.44.148
     openstack-config --set /etc/nova/nova.conf DEFAULT vnc_enabled True
     openstack-config --set /etc/nova/nova.conf DEFAULT vncserver_listen 0.0.0.0
     openstack-config --set /etc/nova/nova.conf DEFAULT vncserver_proxyclient_address 192.168.44.148
     openstack-config --set /etc/nova/nova.conf DEFAULT novncproxy_base_url http://controller:6080/vnc_auto.html
     
     
    openstack-config --set /etc/nova/nova.conf DEFAULT glance_host controller
     
    openstack-config --set /etc/nova/nova.conf libvirt virt_type kvm

    启动服务:

    1
    2
    3
    4
    5
    6
    service libvirtd start
     service messagebus start
     service openstack-nova-compute start
     chkconfig libvirtd on
     chkconfig messagebus on
     chkconfig openstack-nova-compute on

    网络服务配置

    在controller端:

    1
    2
    3
    4
    5
    openstack-config --set /etc/nova/nova.conf DEFAULT
    network_api_class nova.network.api.API
     
    openstack-config --set /etc/nova/nova.conf DEFAULT
    security_group_api nova

    在computer01端:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    yum install openstack-nova-network openstack-nova-api
     
     
    # openstack-config --set /etc/nova/nova.conf DEFAULT
    network_api_class nova.network.api.API
    # openstack-config --set /etc/nova/nova.conf DEFAULT
    security_group_api nova
    # openstack-config --set /etc/nova/nova.conf DEFAULT
    network_manager nova.network.manager.FlatDHCPManager
     
    # openstack-config --set /etc/nova/nova.conf DEFAULT
    firewall_driver nova.virt.libvirt.firewall.IptablesFirewallDriver
     
    # openstack-config --set /etc/nova/nova.conf DEFAULT
    network_size 254
    # openstack-config --set /etc/nova/nova.conf DEFAULT
    allow_same_net_traffic False
    # openstack-config --set /etc/nova/nova.conf DEFAULT
    multi_host True
    # openstack-config --set /etc/nova/nova.conf DEFAULT
    send_arp_for_ha True
    # openstack-config --set /etc/nova/nova.conf DEFAULT
    share_dhcp_address True
    # openstack-config --set /etc/nova/nova.conf DEFAULT
    force_dhcp_release True
    # openstack-config --set /etc/nova/nova.conf DEFAULT
    flat_network_bridge br100
    # openstack-config --set /etc/nova/nova.conf DEFAULT
    flat_interface eth1
    # openstack-config --set /etc/nova/nova.conf DEFAULT
    public_interface eth0

    nova network-create demo-net –bridge br100 –multi-host T

    –fixed-range-v4 88.8.8.16/28

    然后使用nova net-list来查看:

    创建虚拟机

    1、配置ssh密码登录:

    1
    ssh-keygen

    2、增加公钥到openstack环境中:

    1
    nova keypair-add --pub-key ~/.ssh/id_rsa.pub demo-key

    3、验证是否配置成功:

    1
    2
    3
    nova keypair-list
     
    nova flavor-list

    4、创建实例:

    复制代码代码如下:
    nova boot --flavor m1.tiny --image cirros-0.3.2-x86_64 --nic netid=DEMO_NET_ID
    --security-group default --key-name demo-key demo-instance1

    说明:

    DEMO_NET_ID:指的是nova net-list的ID。

    demo-instance1指的是虚拟机的名字。

    例如我的成功执行如下:

    nova boot --flavor m1.tiny --image cirros-0.3.2-x86_64 --nic net-id=55fc305f-570f-4d4f-89d0-ce303e589f20 
    --security-group default --key-name demo-key tfjt

    5、使用nova list进行查看。

    从这里我们看到我这上面有一个ip地址192.168.44.17.这个地址就是浮动IP。

    6、配置浮动IP

    浮动ip

    1
    nova-manage floating create --ip_range=192.168.44.16/28

    查看可用地址

    1
    nova-manage floating list

    nova floating-ip-create

    给创建的虚拟机绑定浮动ip,这个7bc0086…就是我之前创建的虚拟机的ID。后面接上IP地址即可。

    1
    nova add-floating-ip 7bc00086-1870-4367-9f05-666d5067ccff 192.168.44.17

    监听

    cpdump -n -i eth0 icmp

    在controller上:

    nova secgroup-add-rule default icmp -1 -1 0.0.0.0/0

    nova secgroup-add-rule default tcp 22 22 0.0.0.0/0

    7、使用下面的命令可以输出一个url地址:

    1
    nova get-vnc-console tfjt novnc

    8、我们可以在浏览器中进行访问。

    到这里为止,我们的云服务器就算完成了。可以在浏览器上访问我们的云服务器,怎么样是不是很激动。

    界面服务(dashboard)

    上面我们可以看到很多操作是在终端进行的,那么肯定是有界面版的,所以我们在computer02中进行配置。

    1、安装服务

    yum install memcached python-memcached mod_wsgi openstack-dashboard

    2、文件配置。

    在controller中

    配置/etc/openstack-dashboard/local_settings。修改为如下内容。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    ALLOWED_HOSTS = ['*']
     
     
    CACHES = {
    'default': {
    'BACKEND' : 'django.core.cache.backends.memcached.MemcachedCache',
    'LOCATION' : '127.0.0.1:11211'
    }
    }
     
    OPENSTACK_HOST = "controller"

    3、连接

    1
    2
    3
    4
    5
    6
    setsebool -P httpd_can_network_connect on
     
    service httpd start
    # service memcached start
    # chkconfig httpd on
    # chkconfig memcached on

    4、浏览器中访问。

    1
    http://192.168.44.147/dashboard/project/

     

    用户名就是我们之前配置的admin,密码是ADMIN_PASS

    在这个界面版里面的各种操作我这里就不细说了,可以自己去体验。

    在这里可以看到我们的云服务器实例。

    云硬盘服务(cinder)

    了解过阿里云或者腾讯云的就知道,里面都有一个云硬盘服务,可以给我们的机器增加磁盘。

    在controller端:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    yum stall openstack-cinde
     
    openstack-config --set /etc/cinder/cinder.conf
    database connection mysql://cinder:CINDER_DBPASS@controller/cinder
     
    mysql> CREATE DATABASE cinder;
    mysql> GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost'
    IDENTIFIED BY 'CINDER_DBPASS';
    mysql> GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%'
    IDENTIFIED BY 'CINDER_DBPASS';

    创建数据库表:

    1
    # su -s /bin/sh -c "cinder-manage db sync" cinder

    创建用户并赋予角色:

    1
    2
    $ keystone user-create --name=cinder --pass=CINDER_PASS--email=cinder@example.com
    $ keystone user-role-add --user=cinder --tenant=service --role=admin

    权限控制配置:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    # openstack-config --set /etc/cinder/cinder.conf DEFAULT
    auth_strategy keystone
    # openstack-config --set /etc/cinder/cinder.conf keystone_authtoken
    auth_uri http://controller:5000
    # openstack-config --set /etc/cinder/cinder.conf keystone_authtoken
    auth_host controller
    # openstack-config --set /etc/cinder/cinder.conf keystone_authtoken
    auth_protocol http
    # openstack-config --set /etc/cinder/cinder.conf keystone_authtoken
    auth_port 35357
    # openstack-config --set /etc/cinder/cinder.conf keystone_authtoken
    admin_user cinder
    # openstack-config --set /etc/cinder/cinder.conf keystone_authtoken
    admin_tenant_name service
    # openstack-config --set /etc/cinder/cinder.conf keystone_authtoken
    admin_password CINDER_PASS

    消息队列配置:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    # openstack-config --set /etc/cinder/cinder.conf
    DEFAULT rpc_backend qpid
    # openstack-config --set /etc/cinder/cinder.conf
    DEFAULT qpid_hostname controller
     
     
     
    $ keystone service-create --name=cinder --type=volume --description="OpenStack Block Storage"
    $ keystone endpoint-create
    --service-id=$(keystone service-list | awk '/ volume / {print $2}')
    --publicurl=http://controller:8776/v1/%(tenant_id)s
    --internalurl=http://controller:8776/v1/%(tenant_id)s
    --adminurl=http://controller:8776/v1/%(tenant_id)s
     
     
    $ keystone service-create --name=cinderv2 --type=volumev2 --description="OpenStack Block Storage v2"
    $ keystone endpoint-create
    --service-id=$(keystone service-list | awk '/ volumev2 / {print $2}')
    --publicurl=http://controller:8776/v2/%(tenant_id)s
    --internalurl=http://controller:8776/v2/%(tenant_id)s
    --adminurl=http://controller:8776/v2/%(tenant_id)s
     
     
    service openstack-cinder-api start
    # service openstack-cinder-scheduler start
    # chkconfig openstack-cinder-api on
    # chkconfig openstack-cinder-scheduler on
     
     
    cinder service-list
    openstack-config --set /etc/cinder/cinder.conf
    DEFAULT qpid_hostname controller
     
    cinder --debug list
     
    keystone user-create --name=cinder --pass=CINDER_PASS --email=cinder@example.com
     
     
    openstack-config --set /etc/cinder/cinder.conf
    DEFAULT my_ip 192.168.44.147

    在node端(computer02)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    pvcreate /dev/sdb
    # vgcreate cinder-volumes /dev/sdb
     yum install openstack-cinder scsi-target-utils
     
    # openstack-config --set /etc/cinder/cinder.conf DEFAULT
    auth_strategy keystone
    # openstack-config --set /etc/cinder/cinder.conf keystone_authtoken
    auth_uri http://controller:5000
    # openstack-config --set /etc/cinder/cinder.conf keystone_authtoken
    auth_host controller
    # openstack-config --set /etc/cinder/cinder.conf keystone_authtoken
    auth_protocol http
    # openstack-config --set /etc/cinder/cinder.conf keystone_authtoken
    auth_port 35357
    # openstack-config --set /etc/cinder/cinder.conf keystone_authtoken
    admin_user cinder
    # openstack-config --set /etc/cinder/cinder.conf keystone_authtoken
    admin_tenant_name service
    # openstack-config --set /etc/cinder/cinder.conf keystone_authtoken
    admin_password CINDER_PASS
     
     
    # openstack-config --set /etc/cinder/cinder.conf
    DEFAULT rpc_backend qpid
    # openstack-config --set /etc/cinder/cinder.conf
    DEFAULT qpid_hostname controller
     
     
     
    # openstack-config --set /etc/cinder/cinder.conf
    database connection mysql://cinder:CINDER_DBPASS@controller/cinde
     
     
     
    # openstack-config --set /etc/cinder/cinder.conf
    DEFAULT my_ip MANAGEMENT_INTERFACE_IP_ADDRESS
     
     
    # openstack-config --set /etc/cinder/cinder.conf
    DEFAULT glance_host controller
     
    # openstack-config --set /etc/cinder/cinder.conf
    DEFAULT iscsi_helper tgtadm

    配置文件中:

    vi /etc/tgt/targets.conf

    1
    include /etc/cinder/volumes/*

    启动服务:

    1
    2
    3
    4
    # service openstack-cinder-volume start
    # service tgtd start
    # chkconfig openstack-cinder-volume on
    # chkconfig tgtd on

    创建磁盘:

    1
    cinder create --display-name myVolume 1

    查看磁盘列表:

    1
    cinder list

    然后再界面端查看云硬盘的配置并进行挂载:

    在云服务器上挂载磁盘:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    $ mkfs.ext3 /dev/vdb1
     
    $ mkdir /mnt/test
    $ mount /dev/vdb1 /mnt/test
    $ mount
     
    $ fdisk /dev/vdb
    Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
    Building a new DOS disklabel with disk identifier 0x64817ea3.
    Changes will remain in memory only, until you decide to write them.
    After that, of course, the previous content won't be recoverable.
     
    Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
     
    Command (m for help): n
    Partition type:
     p primary (0 primary, 0 extended, 4 free)
     e extended
    Select (default p): p
    Partition number (1-4, default 1): 1
    First sector (2048-2097151, default 2048): +1G
    Value out of range.
    First sector (2048-2097151, default 2048): +512M
    Last sector, +sectors or +size{K,M,G} (1048576-2097151, default 2097151):
    Using default value 2097151
     
    Command (m for help): p
     
    Disk /dev/vdb: 1073 MB, 1073741824 bytes
    16 heads, 63 sectors/track, 2080 cylinders, total 2097152 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0x64817ea3
     
     Device Boot Start End Blocks Id System
    /dev/vdb1 1048576 2097151 524288 83 Linux
     
    Command (m for help): w
    The partition table has been altered!
     
    Calling ioctl() to re-read partition table.
    Syncing disks.
    $ df -h

    总结:整个操作流程非常复杂,我也是花了几天才慢慢搭建好的,这其实也就是个基础,给的其实是一个思路,后面需要怎样的扩展可以根据自己的业务需要进行不同的设置。对于不明白的地方可以查阅官方文档。

    openstack官方文档下载地址:https://www.jb51.net/books/530692.html

    转载自: https://www.jb51.net/article/104511.htm

  • 相关阅读:
    C#磁吸屏幕窗体类库
    准备
    我写的诗
    How to turn off a laptop keyboard
    How to tell which commit a tag points to in Git?
    Why should I care about lightweight vs. annotated tags?
    How to get rid of “would clobber existing tag”
    Facebook, Google and Twitter threaten to leave Hong Kong over privacy law changes
    The need for legislative reform on secrecy orders
    Can a foreign key be NULL and/or duplicate?
  • 原文地址:https://www.cnblogs.com/yihr/p/13425604.html
Copyright © 2011-2022 走看看