- 注:前半部分在控制节点安装并配置Nova服务
在控制节点添加Nova数据库并添加Nova用户
1、创建数据库:
- 用数据库连接客户端以 root 用户连接到数据库服务器:
mysql -u root -p
- 创建
nova
数据库:
CREATE DATABASE nova;
- 对
nova
数据库授予恰当的访问权限,使用合适的密码替换NOVA_DBPASS
:
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' \
IDENTIFIED BY 'NOVA_DBPASS';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' \
IDENTIFIED BY 'NOVA_DBPASS'; - 退出数据库客户端
2、获得 admin 凭证来获取只有管理员能执行命令的访问权限:
source admin-openrc.sh
3、创建服务证书:
- 创建 nova 用户:
openstack user create --domain default --password-prompt nova
- 添加
admin
角色到 nova 用户:
openstack role add --project service --user nova admin
- 创建
nova
服务实体:
openstack service create --name nova \
--description "OpenStack Compute" compute
4、创建计算服务API端点:
# 创建public端点:
openstack endpoint create --region RegionOne \
compute public http://controller:8774/v2/%\(tenant_id\)s
#创建internal端点:
openstack endpoint create --region RegionOne \
compute internal http://controller:8774/v2/%\(tenant_id\)s
#创建admin端点:
openstack endpoint create --region RegionOne \
compute admin http://controller:8774/v2/%\(tenant_id\)s
安装并配置组件
1、安装软件包:
apt-get install nova-api nova-cert nova-conductor \
nova-consoleauth nova-novncproxy nova-scheduler \
python-novaclient
2、编辑/etc/nova/nova.conf
文件并完成如下修改:
#在 [database] 部分,配置数据库访问,使用你为计算数据库选择的密码替换NOVA_DBPASS:
[database]
...
connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova
#在[DEFAULT]和 [oslo_messaging_rabbit]部分,配置 RabbitMQ 消息队列访问,用你在RabbitMQ中为 openstack用户选择的密码替换RABBIT_PASS:
[DEFAULT]
...
rpc_backend = rabbit
[oslo_messaging_rabbit]
...
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = RABBIT_PASS
#在[DEFAULT]和[keystone_authtoken]部分,配置认证服务访问,使用你在身份认证服务中选择的nova用户密码替换NOVA_PASS并在 [keystone_authtoken] 中注释或者删除其他选项:
[DEFAULT]
...
auth_strategy = keystone
[keystone_authtoken]
...
auth_uri = http://controller:5000
auth_url = http://controller:35357
auth_plugin = password
project_domain_id = default
user_domain_id = default
project_name = service
username = nova
password = NOVA_PASS
#在 [DEFAULT] 部分,配置 my_ip 来使用控制节点的管理接口的IP 地址并启用网络服务支持:
[DEFAULT]
...
my_ip = 10.122.0.1
network_api_class = nova.network.neutronv2.api.API
security_group_api = neutron
linuxnet_interface_driver = nova.network.linux_net.NeutronLinuxBridgeInterfaceDriver
firewall_driver = nova.virt.firewall.NoopFirewallDriver
#在[DEFAULT]部分,禁用EC2 API,并启用日志:
[DEFAULT]
...
enabled_apis=osapi_compute,metadata
verbose = True
#在[vnc]部分,配置VNC代理使用控制节点的管理IP地址 :
[vnc]
...
vncserver_listen = $my_ip
vncserver_proxyclient_address = $my_ip
#在[glance]部分,配置镜像服务的位置:
[glance]
...
host = controller
#在 [oslo_concurrency] 部分,配置锁路径:
[oslo_concurrency]
...
lock_path = /var/lib/nova/tmp
3、同步Compute 数据库:
su -s /bin/sh -c "nova-manage db sync" nova
4、重启 Compute 服务:
service nova-api restart
service nova-cert restart
service nova-consoleauth restart
service nova-scheduler restart
service nova-conductor restart
service nova-novncproxy restart
5、删除Ubuntu默认创建的SQLite数据库:
rm -f /var/lib/nova/nova.sqlite
- 注:以下在计算节点上完成相关配置。
在计算节点上安装并配置Nova组件
1、安装软件包:
apt-get install nova-compute sysfsutils
2、编辑/etc/nova/nova.conf
文件并完成如下修改:
# 在[DEFAULT] 和 [oslo_messaging_rabbit]部分,配置RabbitMQ消息队列,用你在RabbitMQ中为openstack用户选择的密码替换RABBIT_PASS:
[DEFAULT]
...
rpc_backend = rabbit
[oslo_messaging_rabbit]
...
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = RABBIT_PASS
#在[DEFAULT]和[keystone_authtoken]部分,配置认证服务访问,用你在身份认证服务中选择的nova用户密码替换NOVA_PASS,在 [keystone_authtoken] 中注释或者删除其他选项:
[DEFAULT]
...
auth_strategy = keystone
[keystone_authtoken]
...
auth_uri = http://controller:5000
auth_url = http://controller:35357
auth_plugin = password
project_domain_id = default
user_domain_id = default
project_name = service
username = nova
password = NOVA_PASS
#在 [DEFAULT] 部分,配置 my_ip 选项,将其中的 MANAGEMENT_INTERFACE_IP_ADDRESS 替换为计算节点上的管理网络接口的IP 地址,如10.122.0.2:
[DEFAULT]
...
my_ip = MANAGEMENT_INTERFACE_IP_ADDRESS
#在[DEFAULT]部分,启用网络服务支持同时启用日志:
[DEFAULT]
...
network_api_class = nova.network.neutronv2.api.API
security_group_api = neutron
linuxnet_interface_driver = nova.network.linux_net.NeutronLinuxBridgeInterfaceDriver
firewall_driver = nova.virt.firewall.NoopFirewallDriver
verbose = True
#在[vnc]部分,启用并配置远程控制台访问,如果你运行浏览器的主机无法解析controller主机名,你可以将 controller替换为你控制节点管理网络的IP地址。:
[vnc]
...
enabled = True
vncserver_listen = 0.0.0.0
vncserver_proxyclient_address = $my_ip
novncproxy_base_url = http://controller:6080/vnc_auto.html
#在[glance]部分,配置镜像服务的位置:
[glance]
...
host = controller
#在 [oslo_concurrency] 部分,配置锁路径:
[oslo_concurrency]
...
lock_path = /var/lib/nova/tmp
3、确定您的计算节点是否支持虚拟机的硬件加速。
egrep -c '(vmx|svm)' /proc/cpuinfo
- 如果这个命令返回
1或者更大
的值,说明您的计算节点支持硬件加速,一般不需要进行额外的配置。直接转步骤4 - 如果这个命令返回
0
,你的计算节点不支持硬件加速,你必须配置 libvirt 使用QEMU而不是使用KVM。在/etc/nova/nova-compute.conf
文件中像下面这样编辑[libvirt]
部分,然后转步骤4:
[libvirt]
...
virt_type = qemu
4、重启计算服务:
service nova-compute restart
5、删除Ubuntu默认创建的SQLite数据库:
rm -f /var/lib/nova/nova.sqlite
验证Nova服务(在控制节点上进行)
1、获得 admin 凭证来获取只有管理员能执行命令的访问权限:
source admin-openrc.sh
2、列出服务组件,以验证是否成功启动并注册了每个进程(如果你只有一个控制节点和一个计算节点的话,该输出应该显示五个服务四个服务组件在控制节点上启用,一个服务组件在计算节点上启用):
nova service-list
3、列出身份认证服务中的 API 端点来验证身份认证服务的连通性(可以忽略输出的警告):
nova endpoints
4、列出镜像服务目录的镜像,验证镜像服务的连通性:
nova image-list
- 注:如果你有多个计算节点的话也按照如上步骤配置,注意修改相应的IP地址即可
本文基于参考文章撰写,根据自己的理解对于翻译难以理解的部分进行了调整,此博文部署过程亲测可用。
参考文章:OpenStack官方文档