OpenStack安装流程(juno版)- 添加计算服务(nova)
在controller节点上安装和配置
创建nova的数据库,服务证书和API端点
- 创建数据库:
使用root身份进入数据库:$ mysql -u root -p
创建nova数据库:
<pre>CREATE DATABASE nova;
</pre>把nova数据库的访问权限赋予名为nova,来自任何主机地址的用户,并设定访问密码为NOVA_DBPASS(替换为合适的密码):
<pre>GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'NOVA_DBPASS';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'NOVA_DBPASS';</pre>
退出数据库。
- 启动
admin
证书:$ source admin-openrc.sh
- 创建服务证书:
创建nova
用户:
<pre>$ keystone user-create --name nova --pass NOVA_PASS
Property | Value |
---|---|
enabled | True |
id | 127790ae638a4ae08e09907d64972fb6 |
name | nova |
username | nova |
+----------+----------------------------------+</pre>
用合适的密码代替NOVA_PASS。
把admin
角色赋予给nova
用户: $ keystone user-role-add --user nova --tenant service --role admin
这条命令不产生输出显示。
创建nova
服务实体:
<pre>$ keystone service-create --name nova --type compute \
--description "OpenStack Compute" | |
---|---|
Property | Value |
description | OpenStack Compute |
enabled | True |
id | 33b16e3a184f436da27b3655bfd2c336 |
name | nova |
type | compute |
+-------------+----------------------------------+</pre>
- 创建计算服务的API端点:
<pre>$ 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 \
--region regionOne | |
---|---|
Property | Value |
adminurl | http://controller:8774/v2/%(tenant_id)s |
id | 91e19b234a6d4a61961ea6136b75e7a7 |
internalurl | http://controller:8774/v2/%(tenant_id)s |
publicurl | http://controller:8774/v2/%(tenant_id)s |
region | regionOne |
service_id | 33b16e3a184f436da27b3655bfd2c336 |
+-------------+-----------------------------------------+</pre>
在controller节点上安装和配置nova组件
- 安装所需包:
# apt-get install nova-api nova-cert nova-conductor nova-consoleauth \<br>nova-novncproxy nova-scheduler python-novaclient
- 编辑
# vi /etc/nova/nova.conf
文件:在
[database]
部分,设定数据库的访问选项:
<pre>[database]
...
connection = mysql://nova:NOVA_DBPASS@controller/nova</pre>
NOVA_DBPASS为创建nova数据库时设立的密码。
在[DEFAULT]
部分,设定RabbitMQ的访问选项:
<pre>[DEFAULT]<br>...<br>rpc_backend = rabbit<br>rabbit_host = controller<br>rabbit_password = RABBIT_PASS
</pre>
RABBIT_PASS为RabbitMQ guest账户的密码。
在[DEFAULT]
和 [keystone_authtoken]
部分,设定认证服务的访问选项:
<pre>[DEFAULT]<br>...<br>auth_strategy = keystone
</pre>
<pre>[keystone_authtoken]<br>...<br>auth_uri = <a href="http://controller" rel="nofollow noreferrer">http://controller</a>:5000/v2.0<br>identity_uri = <a href="http://controller" rel="nofollow noreferrer">http://controller</a>:35357<br>admin_tenant_name = service<br>admin_user = nova<br>admin_password = NOVA_PASS
</pre>
NOVA_PASS为创建nova
用户时使用的密码。在[keystone_authtoken]部分,注释掉 auth_host,auth_port,和auth_protocol的选项,因为identity_uri选项是直接代替它们的。
在[DEFAULT]
部分,设定my_ip选项,其值为controller节点在management网络中的IP地址:
<pre>[DEFAULT]<br>...<br>my_ip = 10.10.10.10
</pre>
在[DEFAULT]
部分,设定VNC proxy(Virtual Network Computer),其值为controller节点在management网络中的IP地址:
<pre>[DEFAULT]<br>...<br>vncserver_listen = 10.10.10.10<br>vncserver_proxyclient_address = 10.10.10.10
</pre>
在[DEFAULT]
部分,开启“详细输出日志”选项:
<pre>[DEFAULT]<br>...<br>verbose = True
</pre>
在[glance]
部分,设定镜像服务的位置:
<pre>[glance]<br>...<br>host = controller
</pre>
- 同步数据库:
# nova-manage db sync
完成安装
- 重启计算服务:
# service nova-api restart
# service nova-cert restart
# service nova-consoleauth restart
# service nova-scheduler restart
# service nova-conductor restart
# service nova-novncproxy restart
- 删除Ubuntu默认产生的SQLite数据库:
# rm -f /var/lib/nova/nova.sqlite
在compute节点上安装和配置
安装和配置计算服务的hypervisor组件:
- 安装所需包:
# apt-get install nova-compute sysfsutils
- 编辑
# vi /etc/nova/nova.conf
文件:在
[DEFAULT]
部分,设定RabbitMQ的访问选项:
<pre>[DEFAULT]
...
rpc_backend = rabbit
rabbit_host = controller
rabbit_password = RABBIT_PASS</pre>
RABBIT_PASS为RabbitMQ guest账户的密码。
在[DEFAULT]
和 [keystone_authtoken]
部分,设定认证服务的访问选项:
<pre>[DEFAULT]<br>...<br>auth_strategy = keystone
</pre>
<pre>[keystone_authtoken]<br>...<br>auth_uri = <a href="http://controller" rel="nofollow noreferrer">http://controller</a>:5000/v2.0<br>identity_uri = <a href="http://controller" rel="nofollow noreferrer">http://controller</a>:35357<br>admin_tenant_name = service<br>admin_user = nova<br>admin_password = NOVA_PASS
</pre>
NOVA_PASS为创建nova
用户时使用的密码。在[keystone_authtoken]部分,注释掉 auth_host,auth_port,和auth_protocol的选项,因为identity_uri选项是直接代替它们的。
在[DEFAULT]
部分,设定my_ip选项:
<pre>[DEFAULT]<br>...<br>my_ip = MANAGEMENT_INTERFACE_IP_ADDRESS
</pre>
MANAGEMENT_INTERFACE_IP_ADDRESS为compute节点在management网络中的IP地址,10.10.10.11。
在[DEFAULT]
部分,启用和配置远程控制台访问选项:
<pre>[DEFAULT]<br>...<br>vnc_enabled = True<br>vncserver_listen = 0.0.0.0<br>vncserver_proxyclient_address = MANAGEMENT_INTERFACE_IP_ADDRESS<br>novncproxy_base_url = <a href="http://controller" rel="nofollow noreferrer">http://controller</a>:6080/vnc_auto.html
</pre>
MANAGEMENT_INTERFACE_IP_ADDRESS为compute节点在management网络中的IP地址,10.10.10.11。
在[DEFAULT]
部分,开启“详细输出日志”选项:
<pre>[DEFAULT]<br>...<br>verbose = True
</pre>
在[glance]
部分,设定镜像服务的位置:
<pre>[glance]<br>...<br>host = controller
</pre>
完成安装
- 测试compute节点是否支持对虚拟机的硬件加速:
$ egrep -c '(vmx|svm)' /proc/cpuinfo
如果结果返回“1”或更大的值,说明compute节点支持硬件加速,不需做额外的设置。
如果返回“0”,则说明不支持硬件加速,需在libvirt选项里用QEMU代替KVM。
编辑# vi /etc/nova/nova-compute.conf
的libvirt
部分:
<pre>[libvirt]<br>...<br>virt_type = qemu
</pre>
- 重启计算服务
# service nova-compute restart
- 删除Ubuntu默认产生的SQLite数据库:
# rm -f /var/lib/nova/nova.sqlite
验证操作
在controller节点上执行以下操作。
- 启动
admin
证书:
$ source admin-openrc.sh
- 确保计算服务每个组件的服务都已成功启动:
<pre>$ nova image-list
Id | Binary | Host | Zone | Status | State | Updated_at | Disabled Reason |
---|---|---|---|---|---|---|---|
1 | nova-cert | controller | internal | enabled | up | 2015-11-26T05:30:46.000000 | - |
2 | nova-consoleauth | controller | internal | enabled | up | 2015-11-26T05:30:46.000000 | - |
3 | nova-scheduler | controller | internal | enabled | up | 2015-11-26T05:30:47.000000 | - |
4 | nova-conductor | controller | internal | enabled | up | 2015-11-26T05:30:47.000000 | - |
5 | nova-compute | compute | nova | enabled | up | 2015-11-26T05:30:49.000000 | - |
+----+------------------+------------+----------+---------+-------+----------------------------+-----------------+</pre>
- 检查计算服务与镜像服务和认证服务之间的连接:
<pre>$ nova image-list
ID | Name | Status | Server |
---|---|---|---|
6db9f9c9-4011-4cf5-a12b-dc70423ec0c3 | cirros-0.3.3-x86_64 | ACTIVE |
+--------------------------------------+---------------------+--------+--------+</pre>
至此nova服务安装完毕。
安装时出现的问题及解决方法
- 安装完成后,运行
$ nova service-list
命令后,所有服务的Status都是down,检查/etc/nova/
下的log文件,发现有ERROR提示:“AMQP server controller:5672 closed the connection. Check login credentials:”。这个问题一般是由于RabbitMQ访问密码没设置对,核实/etc/nova/nova.conf
文件中相应设置;如果核实完还是出现上述现象,可以# rabbitmqctl change_password guest RABBIT_PASS
重置RabbitMQ的访问密码,# service rabbitmq-server restart
重启服务后再尝试。 - 安装完成后,运行
$ nova service-list
命令后,controller节点上所有服务没有问题,compute节点上的计算服务是down的状态,一般重启compute节点上计算服务即可。也会出现上述操作还是不起作用的情况,检查/etc/nova/
下的log文件,发现ERROR提示:“AMQP server on controller:5672 is unreachable: [Errno 113] EHOSTUNREACH.”。说明还是访问RabbitMQ出现了问题,最后发现是因为未知的原因导致节点之间通信中断了,相互之间不能ping通,这个未能找到解决方案,只能恢复到安装nova前的初始状态重新安装。