上篇写了认证模块keystone的安装步骤,在教程中还有一个是glance的安装部分,然后再安装nova计算模块。由于nova对glance模块没有依赖,所以跳过glance模块直接安装nova模块也可以。这篇就总结下nova的安装步骤和其中碰到的问题。
--------------------------------------------------------------------------------------------
控制节点
-------------------------------------------------------------------------------------------
1.数据库部分
1):root用户连接到数据库:mysql
2):创建数据库nova,nova_api和nova_cell0
MariaDB [(none)]> CREATE DATABASE nova_api;
MariaDB [(none)]> CREATE DATABASE nova;
MariaDB [(none)]> CREATE DATABASE nova_cell0;
3):对用户nova授予三个数据库的权限:
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' IDENTIFIED BY 'NOVA_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' IDENTIFIED BY 'NOVA_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'NOVA_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'NOVA_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' IDENTIFIED BY 'NOVA_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' IDENTIFIED BY 'NOVA_DBPASS';
说明:上面的语句中将NOVA_DBPASS替换为用户nova的密码;
2:用户的令牌管理
1):加载管理员脚本
. admin-openrc
2):创建nova用户:openstack user create --domain default --password-prompt nova
3):service项目中给nova用户分配admin角色:openstack role add --project service --user nova admin
4):创建计算服务:openstack service create --name nova --description "OpenStack Compute" compute
5):创建计算服务端点:
openstack endpoint create --region RegionOne compute public http://controller:8774/v2.1
openstack endpoint create --region RegionOne compute internal http://controller:8774/v2.1
openstack endpoint create --region RegionOne compute admin http://controller:8774/v2.1
6):创建placement用户:openstack user create --domain default --password-prompt placement
根据提示输入用户placement的密码
7):service项目中给placement用户分配admin角色:openstack role add --project service --user placement admin
8):创建placement服务:openstack service create --name placement --description "Placement API" placement
9):创建placemetn服务端点:
openstack endpoint create --region RegionOne placement public http://controller:8778
openstack endpoint create --region RegionOne placement internal http://controller:8778
openstack endpoint create --region RegionOne placement admin http://controller:8778
3:安装和配置部分
1):安装:apt install nova-api nova-conductor nova-consoleauth nova-novncproxy nova-scheduler nova-placement-api
2):编辑文件/etc/nova/nova.conf,按照块设置:
[api_database]
connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova_api #NOVA_DBPASS替换为nova用户的数据库密码
[database]
connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova #NOVA_DBPASS替换为nova用户的数据库密码
[DEFAULT]
transport_url = rabbit://openstack:RABBIT_PASS@controller
my_ip = 192.168.44.11 #本虚拟机的IP地址
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver
[api]
auth_strategy = keystone
[keystone_authtoken] auth_uri = http://controller:5000 auth_url = http://controller:35357 memcached_servers = controller:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = nova password = NOVA_PASS #NOVA_PASS 替换为nova用户的密码 [vnc] enabled = true #配置VNC代理 vncserver_listen = $my_ip vncserver_proxyclient_address = $my_ip [glance] api_servers = http://controller:9292 #配置glance镜像 [oslo_concurrency] lock_path = /var/lib/nova/tmp #配置锁路径 [placement] #配置placement服务API os_region_name = RegionOne project_domain_name = Default project_name = service auth_type = password user_domain_name = Default auth_url = http://controller:35357/v3 username = placement password = PLACEMENT_PASS #PLACEMENT_PASS 替换为placement用户的密码
另外还需要将log_dir配置注释
3):初始化nova_api数据库:su -s /bin/sh -c "nova-manage api_db sync" nova
4):注册cell0数据库:su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova
5):创建cell:su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova 109e1d4b-536a-40d0-83c6-5f121b82b650
6):初始化nova数据库:su -s /bin/sh -c "nova-manage db sync" nova
7):验证cell0 and cell1是否成功注册:nova-manage cell_v2 list_cells
8):重启服务:
service nova-api restart
service nova-consoleauth restart
service nova-scheduler restart
service nova-conductor restart
service nova-novncproxy restart
-------------------------------------------------------------------------
计算节点
--------------------------------------------------------------------------
1.安装配置部分
1):安装compute模块:apt install nova-compute
2):编辑/etc/nova/nova.conf配置文件,配置:
[DEFAULT]
transport_url = rabbit://openstack:RABBIT_PASS@controller
my_ip = MANAGEMENT_INTERFACE_IP_ADDRESS #MANAGEMENT_INTERFACE_IP_ADDRESS 替换为控制节点IP use_neutron = True #启用对网络服务支持 firewall_driver = nova.virt.firewall.NoopFirewallDriver
[api] auth_strategy = keystone [keystone_authtoken] auth_uri = http://controller:5000 auth_url = http://controller:35357 memcached_servers = controller:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = nova password = NOVA_PASS #NOVA_PASS 替换为nova用户的数据库密码
[vnc] #开启VNC代理 enabled = True vncserver_listen = 0.0.0.0 vncserver_proxyclient_address = $my_ip novncproxy_base_url = http://controller:6080/vnc_auto.html
[glance] api_servers = http://controller:9292 #配置glance镜像
[oslo_concurrency] lock_path = /var/lib/nova/tmp #锁路径
[placement] os_region_name = RegionOne project_domain_name = Default project_name = service auth_type = password user_domain_name = Default auth_url = http://controller:35357/v3 username = placement password = PLACEMENT_PASS #PLACEMENT_PASS 替换为placement用户密码
另外将log_dir行注释
2:启动
1):配置libvirt类型:
执行命令:egrep -c '(vmx|svm)' /proc/cpuinfo
返回0;配置:virt_type = qemu;返回值大于等于1,配置:virt_type = kvm
virt_type配置:编辑/etc/nova/nova-compute.conf文件,配置:
[libvirt] virt_type = qemu
3:注册计算节点(将计算节点添加到cell数据库),此步操作需要在控制节点上执行:
1):加载脚本,查看hypervisor组件列表
. admin-openrc
openstack hypervisor list
2):注册新的计算节点
su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova
-----------------------------------------------------------------
验证
-------------------------------------------------------------
在控制节点上操作
1:加载脚本:
. admin-openrc
2:查看comupute服务下的组件列表:openstack compute service list
应该是有3个服务在controller节点上,compute服务在compute节点上;
3:身份服务的API端点:openstack catalog list
4:查看镜像列表:openstack image list
5:检测nova服务状态:nova-status upgrade check
总结:
安装过程中有以下几个点需要注意:
1.曾经在执行初始化nova数据库,即执行命令:
su -s /bin/sh -c "nova-manage db sync" nova
发生过找不到表 nova_compute_stats的错误,当时安装的M版本的openstack,没有找到解决方法,后来切换到O版本的时候执行命令正常
2.计算节点上的最后一步注册计算节点是在控制节点上执行,不是在计算节点上执行,在计算节点上执行会出现openstack hypervisor list命令显示的列表为空,即没有虚拟化组件。
3.验证部分也是在控制节点上执行
4.在计算节点上配置完成,启动计算服务以后,会发现计算节点多了一张网卡出来,变为4网卡,是libvirt组件用到的