OpenStack安装流程(juno版)- 添加计算服务(nova)

在controller节点上安装和配置

创建nova的数据库,服务证书和API端点

  1. 创建数据库:
    使用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>

退出数据库。

  1. 启动admin证书:
    $ source admin-openrc.sh
  2. 创建服务证书:
    创建nova用户:
    <pre>$ keystone user-create --name nova --pass NOVA_PASS
PropertyValue
email
enabledTrue
id127790ae638a4ae08e09907d64972fb6
namenova
usernamenova

+----------+----------------------------------+</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"
PropertyValue
descriptionOpenStack Compute
enabledTrue
id33b16e3a184f436da27b3655bfd2c336
namenova
typecompute

+-------------+----------------------------------+</pre>

  1. 创建计算服务的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
PropertyValue
adminurlhttp://controller:8774/v2/%(tenant_id)s
id91e19b234a6d4a61961ea6136b75e7a7
internalurlhttp://controller:8774/v2/%(tenant_id)s
publicurlhttp://controller:8774/v2/%(tenant_id)s
regionregionOne
service_id33b16e3a184f436da27b3655bfd2c336

+-------------+-----------------------------------------+</pre>

在controller节点上安装和配置nova组件

  1. 安装所需包:

# apt-get install nova-api nova-cert nova-conductor nova-consoleauth \<br>nova-novncproxy nova-scheduler python-novaclient

  1. 编辑# 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>

  1. 同步数据库:
    # nova-manage db sync

完成安装

  1. 重启计算服务:

# service nova-api restart
# service nova-cert restart
# service nova-consoleauth restart
# service nova-scheduler restart
# service nova-conductor restart
# service nova-novncproxy restart

  1. 删除Ubuntu默认产生的SQLite数据库:
    # rm -f /var/lib/nova/nova.sqlite

在compute节点上安装和配置

安装和配置计算服务的hypervisor组件:

  1. 安装所需包:

# apt-get install nova-compute sysfsutils

  1. 编辑# 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>

完成安装

  1. 测试compute节点是否支持对虚拟机的硬件加速:

$ egrep -c '(vmx|svm)' /proc/cpuinfo
如果结果返回“1”或更大的值,说明compute节点支持硬件加速,不需做额外的设置。
如果返回“0”,则说明不支持硬件加速,需在libvirt选项里用QEMU代替KVM。
编辑# vi /etc/nova/nova-compute.conflibvirt部分:
<pre>[libvirt]<br>...<br>virt_type = qemu</pre>

  1. 重启计算服务

# service nova-compute restart

  1. 删除Ubuntu默认产生的SQLite数据库:

# rm -f /var/lib/nova/nova.sqlite

验证操作

在controller节点上执行以下操作。

  1. 启动admin证书:

$ source admin-openrc.sh

  1. 确保计算服务每个组件的服务都已成功启动:
    <pre>$ nova image-list
IdBinaryHostZoneStatusStateUpdated_atDisabled Reason
1nova-certcontrollerinternalenabledup2015-11-26T05:30:46.000000-
2nova-consoleauthcontrollerinternalenabledup2015-11-26T05:30:46.000000-
3nova-schedulercontrollerinternalenabledup2015-11-26T05:30:47.000000-
4nova-conductorcontrollerinternalenabledup2015-11-26T05:30:47.000000-
5nova-computecomputenovaenabledup2015-11-26T05:30:49.000000-

+----+------------------+------------+----------+---------+-------+----------------------------+-----------------+</pre>

  1. 检查计算服务与镜像服务和认证服务之间的连接:
    <pre>$ nova image-list
IDNameStatusServer
6db9f9c9-4011-4cf5-a12b-dc70423ec0c3cirros-0.3.3-x86_64ACTIVE

+--------------------------------------+---------------------+--------+--------+</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前的初始状态重新安装。

相关推荐