$ mysql -u root -p
建立nova数据库:
<pre>CREATE DATABASE nova;
</pre>html
把nova数据库的访问权限赋予名为nova,来自任何主机地址的用户,并设定访问密码为NOVA_DBPASS(替换为合适的密码):
<pre>GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'NOVA_DBPASS';
python
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'NOVA_DBPASS';</pre>mysql
退出数据库。sql
admin
证书:$ source admin-openrc.sh
nova
用户:$ 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
这条命令不产生输出显示。api
建立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>curl
$ 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 \ide
--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>测试
# apt-get install nova-api nova-cert nova-conductor nova-consoleauth \
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]
</pre>
...
rpc_backend = rabbit
rabbit_host = controller
rabbit_password = RABBIT_PASS
RABBIT_PASS为RabbitMQ guest帐户的密码。
在[DEFAULT]
和 [keystone_authtoken]
部分,设定认证服务的访问选项:
<pre>[DEFAULT]
</pre>
...
auth_strategy = keystone
<pre>[keystone_authtoken]
</pre>
...
auth_uri = http://controller:5000/v2.0
identity_uri = http://controller:35357
admin_tenant_name = service
admin_user = nova
admin_password = NOVA_PASS
NOVA_PASS为建立nova
用户时使用的密码。在[keystone_authtoken]部分,注释掉 auth_host,auth_port,和auth_protocol的选项,由于identity_uri选项是直接代替它们的。
在[DEFAULT]
部分,设定my_ip选项,其值为controller节点在management网络中的IP地址:
<pre>[DEFAULT]
</pre>
...
my_ip = 10.10.10.10
在[DEFAULT]
部分,设定VNC proxy(Virtual Network Computer),其值为controller节点在management网络中的IP地址:
<pre>[DEFAULT]
</pre>
...
vncserver_listen = 10.10.10.10
vncserver_proxyclient_address = 10.10.10.10
在[DEFAULT]
部分,开启“详细输出日志”选项:
<pre>[DEFAULT]
</pre>
...
verbose = True
在[glance]
部分,设定镜像服务的位置:
<pre>[glance]
</pre>
...
host = controller
# 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
# rm -f /var/lib/nova/nova.sqlite
# 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]
</pre>
...
auth_strategy = keystone
<pre>[keystone_authtoken]
</pre>
...
auth_uri = http://controller:5000/v2.0
identity_uri = http://controller:35357
admin_tenant_name = service
admin_user = nova
admin_password = NOVA_PASS
NOVA_PASS为建立nova
用户时使用的密码。在[keystone_authtoken]部分,注释掉 auth_host,auth_port,和auth_protocol的选项,由于identity_uri选项是直接代替它们的。
在[DEFAULT]
部分,设定my_ip选项:
<pre>[DEFAULT]
</pre>
...
my_ip = MANAGEMENT_INTERFACE_IP_ADDRESS
MANAGEMENT_INTERFACE_IP_ADDRESS为compute节点在management网络中的IP地址,10.10.10.11。
在[DEFAULT]
部分,启用和配置远程控制台访问选项:
<pre>[DEFAULT]
</pre>
...
vnc_enabled = True
vncserver_listen = 0.0.0.0
vncserver_proxyclient_address = MANAGEMENT_INTERFACE_IP_ADDRESS
novncproxy_base_url = http://controller:6080/vnc_auto.html
MANAGEMENT_INTERFACE_IP_ADDRESS为compute节点在management网络中的IP地址,10.10.10.11。
在[DEFAULT]
部分,开启“详细输出日志”选项:
<pre>[DEFAULT]
</pre>
...
verbose = True
在[glance]
部分,设定镜像服务的位置:
<pre>[glance]
</pre>
...
host = controller
$ egrep -c '(vmx|svm)' /proc/cpuinfo
若是结果返回“1”或更大的值,说明compute节点支持硬件加速,不需作额外的设置。
若是返回“0”,则说明不支持硬件加速,需在libvirt选项里用QEMU代替KVM。
编辑# vi /etc/nova/nova-compute.conf
的libvirt
部分:
<pre>[libvirt]
</pre>
...
virt_type = qemu
# service nova-compute restart
# rm -f /var/lib/nova/nova.sqlite
在controller节点上执行如下操做。
admin
证书:$ source admin-openrc.sh
$ 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>
$ 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前的初始状态从新安装。