OpenStack IceHouse 部署 - 3 - 控制节点部署

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列,:-)表示服务正常

posted @ 2014-06-12 10:56  卖程序的小歪  阅读(927)  评论(0编辑  收藏  举报