• OpenStack IceHouse 部署


    Mysql部署配置

     安装

    安装mysql,mysql的python绑定

    apt-get install  mysql-server
    

    安装过程中会要求设定mysql的root账户的密码,这里假定设为mysql_root

    配置

    mysql的配置文件在/etc/mysql/my.cnf

    设定绑定地址

    打开/etc/mysql/my.cnf,找到[mysqld]一节,将其修改为控制节点的IP(0.0.0.0表示所有地址都可以)

    [mysqld]
    ...
    bind-address = 10.14.39.202
    

    设定字符集

    编辑/etc/mysql/my.cnf

    [mysqld]
    ...
    collation-server = utf8_general_ci
    init-connect = 'SET NAMES utf8'
    character-set-server = utf8
    

    设定默认数据库引擎

    编辑/etc/mysql/my.cnf

    [mysqld]
    ...
    default-storage-engine = innodb
    

    更新服务

    重启mysql服务

    sudo service mysql restart
    

    安全

    删除匿名与测试数据库,但不更改已设定的密码

    sudo mysql_install_db
    sudo mysql_secure_installation
    

    测试

    使用mysql客户端进行root帐号登录测试

    mysql -u root -p
    

    回车后输入安装时设定的root密码(假定为mysql_root),然后查看数据库列表

    admin@controller:~$ mysql -u root -p
    Enter password: 
    Welcome to the MySQL monitor.  Commands end with ; or g.
    Your MySQL connection id is 2857
    Server version: 5.5.37-0ubuntu0.14.04.1 (Ubuntu)
    
    Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
    
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    
    Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
    
    mysql> show databases;
    ...

    RabbitMQ消息队列服务

    安装

    sudo apt-get install rabbitmq-server
    

    配置

    rabbitmq中有一个guest的默认用户起帐户密码也为guest,这里我们修改一下这个默认帐号的密码(rabbit123)

    sudo rabbitmqctl change_password guest rabbit123
    

    注意

    rabbitmq用户的密码中不要使用特殊字符

    Keystone(身份验证服务)部署配置

     前置工作

    由于我们想让keystone使用mysql数据库而不是sqlite文件数据库,所以必须先为其创建一个空数据库(keystone)和访问帐号(直接使用root帐号,存在很大安全隐患),该帐号仅有keystone数据库内的所有权限,并且可以通过任意地址访问:

    $ 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
    

    这里我们假设新创建的这个帐号的密码时keystone_dbpass

    安装

    sudo apt-get install keystone
    

    配置

    keystone配置文件为/etc/keystone/keystone.conf

    数据库

    修改keystone.conf文件中database节的connection字段

    [database]
    connection = mysql://keystone:keystone_dbpass@controller/keystone
    

    删除原sqlite数据库文件

    sudo rm /var/lib/keystone/keystone.db
    

    配置管理token

    使用以下命令随机生成一个token

    openssl rand -hex 10
    

    修改keystone配置文件,将其中的DEFAULT一节中修改admin_token字段

    [DEFAULT]
    # A "shared secret" between keystone and other openstack services
    admin_token = ADMIN_TOKEN
    

    配置日志

    修改keystone配置文件,将其中的DEFAULT一节中修改log_dir字段

    [DEFAULT]
    ...
    log_dir = /var/log/keystone
    

    配置cron定时清理日志文件

    $ sudo su
    # (crontab -l 2>&1 | grep -q token_flush) || 
    echo '@hourly /usr/bin/keystone-manage token_flush >/var/log/keystone/keystone-tokenflush.log 2>&1' 
    >>/var/spool/cron/crontabs/root
    

    验证

    admin@controller:~$ sudo crontab -l
    @hourly /usr/bin/keystone-manage token_flush >/var/log/keystone/keystone-tokenflush.log 2>&1
    

    初始化数据

    在mysql中创建keystone相关表

    $ sudo su
    # keystone-manage db_sync
    

    验证

    $ mysql -u root -p
    
    mysql>use keystone;
    Database changed
    
    mysql> show tables;
    +-----------------------+
    | Tables_in_keystone    |
    +-----------------------+
    | assignment            |
    | credential            |
    | domain                |
    | endpoint              |
    | group                 |
    | migrate_version       |
    | policy                |
    | project               |
    | region                |
    | role                  |
    | service               |
    | token                 |
    | trust                 |
    | trust_role            |
    | user                  |
    | user_group_membership |
    +-----------------------+
    16 rows in set (0.00 sec)
    

    更新服务

    sudo service keystone restart
    

    创建用户与角色

    为了以后的openstack服务能够顺利进行,我们需要创建一个管理用户和普通用户以便测试,同时添加相关的租户空间.

    准备

    由于keystone系统刚刚配置完成,其中没有任何用户,我们需要使用keystone客户端对其服务访问,创建一个管理用户.在没有用户的情况下我们可以提供配置时设定的ADMIN_TOKEN通过keystone的验证,从而进行一些管理动作(创建用户等,服务注册等).当管理用户创建且keystone服务被注册后,我们就可以使用用户名密码的形式通过keystone验证,进行后续的管理操作了.设定keystone验证所需的环境变量如下:

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

    其中ADMIN_TOKEN请用keystone配置时设定的值替换.

    创建管理用户

    $ keystone user-create --name=admin --pass=ADMIN_PASS --email=ADMIN_EMAIL
    
    $ keystone role-create --name=admin
    
    $ keystone tenant-create --name=admin --description="Admin Tenant"
    
    $ keystone user-role-add --user=admin --tenant=admin --role=admin
    
    $ keystone user-role-add --user=admin --role=_member_ --tenant=admin
    

    其中__member__是keystone的一个默认用户角色,多数OpenStack服务对其开放,另外多数OpenStack的服务对名为admin的用户开放管理权限. 其中ADMIN_PASS 为管理用户的密码.

    创建普通用户

    普通用户(名为demo),作为一个普通OpenStack用户,不具有OpenStack管理配置权限,但是他可以在自己的租户空间内进行虚拟机,虚拟网络的配置等.其配置如下:

    $ keystone user-create --name=demo --pass=DEMO_PASS --email=DEMO_EMAIL
    
    $ keystone tenant-create --name=demo --description="Demo Tenant"
    
    $ keystone user-role-add --user=demo --role=_member_ --tenant=demo
    

    其中DEMO_PASS 为普通用户(demo)的密码.

    创建服务租户空间

    每一个OpenStack内的服务都有自己的keystone用户账户和密码,在以后配置各个服务的过程中会逐个创建.为了简单起见,让各个服务用户都共享一个租户空间.现在首先为这些服务用户创建一个租户空间以便他们可以添加到这个空间中来.

    $ keystone tenant-create --name=service --description="Service Tenant"
    

    服务注册

    依然使用创建上述创建用户时所用的两个环境变量设定.首先创建keystone服务准备向自己注册自己...

    $ keystone service-create --name=keystone --type=identity --description="OpenStack Identity"
    

    创建service endpoint,即服务注册

    $ 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
    

    验证

    在上一节中我们通过设定ADMIN_TOKEN环境变量的形式,通过keystone验证进行管理操作.既然已经创建了一个管理用户,我们就可以直接通过用户名密码的形式对keystone进行管理访问了.首先为了排除干扰,删除原先设定的两个环境变量:

    $ unset OS_SERVICE_TOKEN
    $ unset OS_SERVICE_ENDPOINT
    

    然后使用keystone的python客户端,提供用户名和密码进行访问

    $ keystone --os-username=admin --os-password=ADMIN_PASS --os-auth-url=http://controller:35357/v2.0 token-get
    
    $ keystone --os-username=admin --os-password=ADMIN_PASS 
      --os-tenant-name=admin --os-auth-url=http://controller:35357/v2.0 
      token-get
    

    其中前者取回用户id和对应的token,后者返回tenantid和对应的token,测试是否通过验证并访问对应tenant.

    由于以后的配置中需要频繁的使用keystone进行一些服务创建注册工作(另外其他OpenStack客户端也是通过相同的方式进行验证的),通过每次在命令行中指定验证参数的方式显得过于繁琐,我们可以创建一个包含了验证信息的一个脚本在每次需要运行管理用户权限的相关OpenStack客户端之前运行即可,其实是设定一些环境变量,而默认情况下,各个OpenStack客户端都会读取他们进行验证.现在创建一个名为admin-openrc.sh的脚本:

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

    然后在当前shell环境内执行他们(不能将脚本设为可执行,然后运行脚本,这样设定环境变量只会存在于为了运行该脚本而新建的一个shell中,当脚本执行完毕,该shell退出后,当前shell中的环境变量其实没有发生任何改变),执行如下命令(等同于手工一条一条输完脚本文件中的命令)

    $ source ./admin-openrc.sh
    

    为了少输入几个字符"source"可以用"."替代如下

    $ . ./admin-openrc.sh
    

    然后我们可以进行验证:

    $ . ./admin-openrc.sh
    $ keystone user-list
    +----------------------------------+---------+---------+--------------------------+
    |                id                |   name  | enabled |          email           |
    +----------------------------------+---------+---------+--------------------------+
    | 67af10efaae54455815c1069b87942a4 |  admin  |   True  |  changpeng3336@163.com   |
    | fb041f3a239c407e805a1c3891da6621 |   demo  |   True  | changpeng3336@zju.edu.cn |
    +----------------------------------+---------+---------+--------------------------+
    

    可以看到刚刚创建的两个用户

    部署验证脚本

    当提供keystone验证信息后,可以从其他主机远程访问控制节点上的服务,为了日后管理与测试方便我们建议在每台节点的admin用户的home目录下创建以下两个用于设定验证信息的文件

    admin-openrc.sh
    管理用户验证
    demo-openrc.sh
    普通用户验证

    admin-openrc.sh

    内容如下:

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

    demo-openrc.sh

    内容如下:

    export OS_USERNAME=demo
    export OS_PASSWORD=DEMO_PASS
    export OS_TENANT_NAME=demo
    export OS_AUTH_URL=http://controller:35357/v2.0
    

    分发

    可以在一个节点上创建这两个脚本,测试通过后,用scp命令将两个脚本复制到其他节点.这里假设从控制节点上scp到其他两个节点:

    $ scp admin-openrc.sh admin@network:/home/admin
    $ scp open-openrc.sh admin@network:/home/admin
    
    $ scp admin-openrc.sh admin@compute1:/home/admin
    $ scp open-openrc.sh admin@compute1:/home/admin

    Glance(映像服务)部署配置

     说明

    glance服务可以用Object Storage作为存储后台,也可以之间使用本地文件系统,默认情况下映像保存在/var/lib/glance/images/目录下.这里我们先使用本地文件存储, 由于常用的映像一般都是上GB的,所以一定要保证在节点上有足够的空间.glance包括两部分如下:

    glance-api
    Accepts Image API calls for image discovery, retrieval, and storage.
    glance-registry
    Stores, processes, and retrieves metadata about images. Metadata includes items such as size and type.

    本页具体内容参见 官方指导

    前置工作

    数据库

    与配置keystone服务类似,glance服务需要使用一个数据库来保存映像的相关信息,可以使用sqlite文件数据库,也可以使用mysql,为了方便集中管理,这里应该使用mysql,所以我们需要为其创建一个数据库和相应的帐号glance,密码假定为glance_dbpass。

    $ 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';
    

    删除原来的sqlite文件

    sudo rm /var/lib/glance/glance.sqlite
    

    keystone账户

    glance使用keystone进行账户管理,所以需要在keystone系统中为其创建一个用于服务管理的帐号,这里使用keystone的python进行这项工作,客户端的使用参见OpenStack客户端验证.这里我们假定创建的这个keystone帐号(glance)使用的密码为glance_pass

    $ . admin-openrc.sh
    $ keystone user-create --name=glance --pass=glance_pass --email=glance@example.com
    $ keystone user-role-add --user=glance --tenant=service --role=admin
    

    安装

    sudo apt-get install glance python-glanceclient
    

    配置

    /etc/glance/glance-api.conf

    数据库连接

    将配置文件中[database]小节的数据库连接字符串修改为(假定用户密码为glance_dbpass):

    [database]
    connection = mysql://glance:glance_dbpass@controller/glance
    

    消息队列

    将配置文件中[DEFAULT]小节中相应字段修改为(假设先前rabbitmq服务guest用户的密码是rabiit123):

    [DEFAULT]
    ...
    rpc_backend = rabbit
    rabbit_host = controller
    rabbit_password = rabbit123
    

    keystone对接

    由于我们将keystone作为glance的身份验证服务,需要对配置文件的[keystone_authtoken]小节进行修改:

    [keystone_authtoken]
    auth_uri = http://controller:5000
    auth_host = controller
    auth_port = 35357
    auth_protocol = http
    admin_tenant_name = service
    admin_user = glance
    admin_password = glance_pass
    

    这里我们假定glance用户的密码为glance_pass, 同时在[paste_deploy]小节中指定使用keystone作为身份验证服务:

    [paste_deploy]
    ...
    flavor = keystone
    

    /etc/glance/glance-registry.conf

    注意不需要配置消息队列服务

    数据库

    参见glance-api.conf相应部分配置

    keystone对接

    参见glance-api.conf相应部分配置

    初始化数据库

    sudo glance-manage db_sync
    

    验证

    mysql -u root -p
    mysql>use glance;
    mysql>show tables; 
    

    注册服务

    向keystone系统注册服务,客户端的使用参见OpenStack客户端验证

    $ . admin-openrc.sh
    $ 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
    

    更新服务

    sudo service glance-registry restart
    sudo service glance-api restart
    

    验证

    通过上传一个OpenStack环境下的超小型Linux映像进行对glance服务的验证: 首先下载该小型映像(不到15MB)

    wget http://cdn.download.cirros-cloud.net/0.3.2/cirros-0.3.2-x86_64-disk.img
    

    进行导入身份验证环境变量参见客户端的使用参见OpenStack客户端验证,进行上传

    admin@network:~$ . admin-openrc.sh 
    admin@network:~$ glance image-create --name "cirros_64_uploadtest" --disk-format qcow2 
    > --container-format bare --is-public True --progress < cirros-0.3.2-x86_64-disk.img 
    [=============================>] 100%
    +------------------+--------------------------------------+
    | Property         | Value                                |
    +------------------+--------------------------------------+
    | checksum         | 64d7c1cd2b6f60c92c14662941cb7913     |
    | container_format | bare                                 |
    | created_at       | 2014-05-24T14:07:31                  |
    | deleted          | False                                |
    | deleted_at       | None                                 |
    | disk_format      | qcow2                                |
    | id               | ed1911c0-be7e-41fc-9532-eacc426353fe |
    | is_public        | True                                 |
    | min_disk         | 0                                    |
    | min_ram          | 0                                    |
    | name             | cirros_64_uploadtest                 |
    | owner            | 1c949ef8c0e749f5a43c93c58ae28379     |
    | protected        | False                                |
    | size             | 13167616                             |
    | status           | active                               |
    | updated_at       | 2014-05-24T14:07:32                  |
    | virtual_size     | None                                 |
    +------------------+--------------------------------------+
    

    列出glance中的映像

    admin@network:~$ glance image-list
    +--------------------------------------+-----------------------+-------------+------------------+------------+--------+
    | ID                                   | Name                  | Disk Format | Container Format | Size       | Status |
    +--------------------------------------+-----------------------+-------------+------------------+------------+--------+
    | ed1911c0-be7e-41fc-9532-eacc426353fe | cirros_64_uploadtest  | qcow2       | bare             | 13167616   | active |
    +--------------------------------------+-----------------------+-------------+------------------+------------+--------+

    Nova(计算管理)部署配置

     参考

    本页依照官方指定进行配置,具体请参见

    前置工作

    数据库

    与其他服务类似,nova管理服务也需要用到数据库,默认可以使用sqlite文件数据库,这里我们设定为mysql,所以为其创建一个库和相应权限的账户,假设密码为nova_dbpass

    $ 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';
    

    移除sqlite文件

    sudo rm /var/lib/nova/nova.sqlite
    

    keystone账户

    与其他服务一样,nova管理部分也使用keystone作为身份验证服务,因此需要为其添加相应的账户,客户端的使用参见OpenStack客户端验证

    $ . admin-openrc.sh
    $ keystone user-create --name=nova --pass=nova_pass --email=nova@example.com
    $ keystone user-role-add --user=nova --tenant=service --role=admin
    

    这里假设帐号nova的用户名为nova_pass

    安装

    sudo install nova-api nova-cert nova-conductor nova-consoleauth nova-novncproxy nova-scheduler python-novaclient
    
    nova-api
    外部对nova子系统的访问API由其提供,再由其向nova内的各个模块发送指令进行执行协调
    nova-novncproxy
    提供虚拟机的VNC访问代理
    nova-scheduler
    负责决定虚拟机创建到那台物理节点上的调度分配工作
    nova-novaclient
    nova的python客户端

    配置

    nova配置文件位于/etc/nova/nova.conf

    数据库

    编辑配置文件加入如下[database]小节:

    [database]
    connection = mysql://nova:nova_dbpass@controller/nova
    

    这里假定nova使用的数据库帐号密码nova_dbpass

    VNC服务

    外部访问虚拟机可以通过VNC进行,编辑配置文件,在[DEFAULT]节中配置VNC服务参数如下:

    [DEFAULT]
    ...
    my_ip = 10.14.39.202
    vncserver_listen = 10.14.39.202
    vncserver_proxyclient_address = 10.14.39.202
    

    10.14.39.202为本(控制)节点的ip.

    rabbitmq对接

    由于各个节点之间需要用到消息队列进行通信,为其配置rabbitmq消息队列,编辑配置文件,在[DEFAULT]一节中加入如下字段:

    [DEFAULT]
    ...
    rpc_backend = rabbit
    rabbit_host = controller
    rabbit_password = rabbit123
    

    这里假定rabbitmq默认用户(guest)的密码已经被改为rabbit123

    keystone对接

    为了与keystone服务通信,编辑配置文件,在[DEFAULT]节中设定使用keystone作为身份验证服务,并且在[keystone_authtoken]节(没有则加入)中加入刚刚在前置工作中设定的keystone帐号

    [DEFAULT]
    ...
    auth_strategy = keystone
    
    [keystone_authtoken]
    ...
    auth_uri = http://controller:5000
    auth_host = controller
    auth_port = 35357
    auth_protocol = http
    admin_tenant_name = service
    admin_user = nova
    admin_password = nova_pass
    

    这里假定nova服务keystone密码已在前置工作设定为nova_pass

    metadata服务

    编辑配置文件 /etc/nova/nova.conf,在[DEFAULT]节中设定相关字段如下:

    [DEFAULT]
    ...
    service_neutron_metadata_proxy = true
    neutron_metadata_proxy_shared_secret = metadatasecret
    

    这里的neutron_metadata_proxy_shared_secret字段值在配置网络节点时需要用到.

    初始化数据

    初始数据库数据

    sudo nova-manage db sync
    

    注册服务

    向keystone注册服务,以便其他服务能够知晓访问

    $ 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
    

    直接复制执行即可,这里的controller即为hosts文件中设定的控制节点的主机名

    更新服务

    建议在admin的home目录下创建一个脚本文件nova_restart.sh以便日后管理,其内如下:

    #! /bin/bash
    service nova-api restart 
    && service nova-cert restart 
    && service nova-consoleauth restart 
    && service nova-scheduler restart 
    && service nova-conductor restart 
    && service nova-novncproxy restart
    

    修改权限

    chmod +x nova_restart.sh

    执行以使各个配置生效

    ./nova_restart.sh

    验证

    列出映像,可以看到在验证glance服务时创建的cirros映像,说明nova服务已经可以和glance通信了

    admin@controller:~$ . admin-openrc.sh
    admin@controller:~$ nova image-list
    +--------------------------------------+-----------------------+--------+--------------------------------------+
    | ID                                   | Name                  | Status | Server                               |
    +--------------------------------------+-----------------------+--------+--------------------------------------+
    | ed1911c0-be7e-41fc-9532-eacc426353fe | cirros_64_uploadtest  | ACTIVE |                                      |
    +--------------------------------------+-----------------------+--------+--------------------------------------+

    Neutron(网络管理)部署配置

     参考

    本页依照官方指导进行配置,参见

    前置工作

    数据库

    同样我们把mysql作为网络服务的数据库,因而在mysql中为其添加一个库和相应的帐号(假定密码为neurton_dbpass)

    $ mysql -u root -p
    mysql> CREATE DATABASE neutron;
    
    mysql> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'neurton_dbpass';
    
    mysql> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'neurton_dbpass';
    

    keystone

    neutron同样使用keystone作为后台身份验证,因此需要为其创建相应的keystone帐号(假定密码为neutron_pass)

    $ . admin-openrc.sh
    $ keystone user-create --name neutron --pass neutron_pass --email neutron@example.com
    $ keystone user-role-add --user neutron --tenant service --role admin
    

    安装

    sudo apt-get install neutron-server neutron-plugin-ml2
    

    配置

    在没有特别的说明的情况下,下文指的配置文件为/etc/neutron/neutron.conf

    数据库

    修改配置文件[database]小节中(没有则添加)的数据库连接字符串

    [database]
    ...
    connection = mysql://neutron:neutron_dbpass@controller/neutron
    

    keystone对接

    修改配置文件中[DEFAULT]节中auth_strategy字段(没有则添加),指定使用keystone作为身份验证后台

    [DEFAULT]
    ...
    auth_strategy = keystone
    

    然后修改配置文件中[keystone_authtoken]小节中的相关字段(没有则添加)如下

    [keystone_authtoken]
    ...
    auth_uri = http://controller:5000
    auth_host = controller
    auth_protocol = http
    auth_port = 35357
    admin_tenant_name = service
    admin_user = neutron
    admin_password = neutron_pass
    

    rabbitmq对接

    修改配置文件中[DEFAULT]节中的配置如下

    [DEFAULT]
    ...
    rpc_backend = neutron.openstack.common.rpc.impl_kombu
    rabbit_host = controller
    rabbit_password = rabbit123
    

    假定rabbit默认用户(guest)的密码设定为rabbit123

    Neutron与Nova服务对接

    为了使nova计算服务使用neutron网络需要进行一些配置包括两个配置文件(是一个双向的过程,因此涉及两个方面)

    /etc/neutron/neutron.conf
    neturon本身的配置文件
    /etc/nova/nova.conf
    nova服务配置文件

    /etc/neutron/neutron.conf

    修改neutron服务的配置文件,向配置文件的[DEFAULT]小节中加入(修改)以下内容

    [DEFAULT]
    ...
    notify_nova_on_port_status_changes = True
    notify_nova_on_port_data_changes = True
    nova_url = http://controller:8774/v2
    nova_admin_username = nova
    nova_admin_tenant_id = SERVICE_TENANT_ID
    nova_admin_password = nova_pass
    nova_admin_auth_url = http://controller:35357/v2.0
    

    其中假定nova的keystone密码为nova_pass, SERVICE_TENANT_ID可以通过以下命令获得

    $ . admin-openrc.sh
    $ keystone tenant-get service
    $ keystone tenant-get service
    +-------------+----------------------------------+
    |   Property  |              Value               |
    +-------------+----------------------------------+
    | description |          Service Tenant          |
    |   enabled   |               True               |
    |      id     | 696d11c35f27442a877571422e063f1f |
    |     name    |             service              |
    +-------------+----------------------------------+
    

    /etc/nova/nova.conf

    修改nova服务的配置文件,向其中的[DEFAULT]小节中加人(或修改为)如下内容

    [DEFAULT]
    ...
    network_api_class = nova.network.neutronv2.api.API
    neutron_url = http://controller:9696
    neutron_auth_strategy = keystone
    neutron_admin_tenant_name = service
    neutron_admin_username = neutron
    neutron_admin_password = neutron_pass
    neutron_admin_auth_url = http://controller:35357/v2.0
    linuxnet_interface_driver = nova.network.linux_net.LinuxOVSInterfaceDriver
    firewall_driver = nova.virt.firewall.NoopFirewallDriver
    security_group_api = neutron
    

    ml2插件配置

    配置涉及两个文件:

    /etc/neutron/neutron.conf
    neutron配置文件,指定使用ml2插件与一些参数
    /etc/neutron/plugins/ml2/ml2_conf.ini
    ml2插件配置文件,配置一些具体参数如使用网络类型等

    /etc/neutron/neutron.conf

    修改neutron配额文件,向其中的[DEFAULT]小节中加人(或修改为)如下内容:

    [DEFAULT]
    ...
    core_plugin = ml2
    service_plugins = router
    allow_overlapping_ips = True
    verbose = True
    

    其中将verbose设定为true便于调试分析,并且注释掉(在行开头加入一个#)所有[service_providers]节中的内容

    /etc/neutron/plugins/ml2/ml2_conf.ini

    在配置文件中的[ml2]小节中,修改为如下内容:

    [ml2]
    ...
    type_drivers = gre
    tenant_network_types = gre
    mechanism_drivers = openvswitch
    

    即neutron节点之间的数据传输使用GRE隧道,采用OpenVSwitch实现机制

    在[ml2_type_gre]小节中,修改GRE隧道id范围,如下:

    [ml2_type_gre]
    ...
    tunnel_id_ranges = 1:1000
    

    修改[securitygroup]小节,指定防火墙为iptables实现,启用安全组,内容如下:

    [securitygroup]
    ...
    firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
    enable_security_group = True
    

    注册服务

    向keystone体系提供neutron服务信息,以便其他服务能够访问

    $ keystone service-create --name neutron --type network --description "OpenStack Networking"
    $ keystone endpoint-create 
      --service-id $(keystone service-list | awk '/ network / {print $2}') 
      --publicurl http://controller:9696 
      --adminurl http://controller:9696 
      --internalurl http://controller:9696
    

    更新服务

    nova

    执行在nova部署时创建的脚本nova_restart.sh

    sudo ./nova_restart.sh
    

    neutron-server

    建议创建一个脚本文件neutron_restart.sh便于日后管理,内容如下

    #! /bin/bash
    service neutron-server restart
    

    修改权限

    chmod +x neutron_restart.sh
    

    重启服务,以便应用最新的配置

    sudo ./neutron_restart.sh
    

    验证

    admin@controller:~$ sudo su
    [sudo] password for admin: 
    root@controller:/home/admin# nova-manage service list
    Binary           Host                                 Zone             Status     State Updated_At
    nova-cert        controller                           internal         enabled    :-)   2014-05-25 07:47:45
    nova-consoleauth controller                           internal         enabled    :-)   2014-05-25 07:47:44
    nova-scheduler   controller                           internal         enabled    :-)   2014-05-25 07:47:38
    nova-conductor   controller                           internal         enabled    :-)   2014-05-25 07:47:46
    

    应有以上类似输出,特别注意status列,:-)表示服务正常

  • 相关阅读:
    [美团 CodeM 初赛 Round A]最长树链
    [POI2005]Toy Cars
    [CodePlus2017NOV]晨跑
    [JLOI2011]不重复数字
    [NEERC2007][SHOI2008]Cactus Reloaded
    [NOI2015]软件包管理器
    [HAOI2015]树上操作
    CF1097D Makoto and a Blackboard
    Luogu P5339 [TJOI2019]唱、跳、rap和篮球
    HNCPC2019H 有向图
  • 原文地址:https://www.cnblogs.com/lailailai/p/3783481.html
Copyright © 2020-2023  润新知