这一部分是关于在controller节点如何安装和配置nova计算服务
一、前提准备
1、创建数据库,完成以下步骤:
① 作为root用户使用数据库访问客户端连接数据库服务器:

② 创建nova_api, nova, nova_cell0 数据库
MariaDB [(none)]> CREATE DATABASE nova_api;
MariaDB [(none)]> CREATE DATABASE nova;
MariaDB [(none)]> CREATE DATABASE nova_cell0;
MariaDB [(none)]> CREATE DATABASE placement;

③ 对创建的数据库属于合适的权限:
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' IDENTIFIED BY '你的密码';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' IDENTIFIED BY '你的密码';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY '你的密码';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY '你的密码';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' IDENTIFIED BY '你的密码';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' IDENTIFIED BY '你的密码';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'localhost' IDENTIFIED BY '密码';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'%' IDENTIFIED BY '密码';


2、引入admin凭证以获得仅admin可使用的的CLI命令

3、创建Compute服务凭证:
① 创建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、创建Compute API 服务节点:
①
# openstack endpoint create --region RegionOne compute public http://controller-ZJB:8774/v2.1

②
# openstack endpoint create --region RegionOne compute internal http://controller-ZJB:8774/v2.1

③
# openstack endpoint create --region RegionOne compute admin http://controller-ZJB:8774/v2.1

5、使用合适的密码创建一个Placement服务
# openstack user create --domain default --password-prompt placement

6、使用admin角色添加Placement用户到service项目
# openstack role add --project service --user placement admin

7、在service目录中创建Placement API条目
# openstack service create --name placement --description "Placement API" placement

8、创建Placement API服务端点:
# openstack endpoint create --region RegionOne placement public http://controller-ZJB:8778

# openstack endpoint create --region RegionOne placement internal http://controller-ZJB:8778

openstack endpoint create --region RegionOne placement admin http://controller-ZJB:8778

二、安装配置nova组件
1、安装软件包
# yum install openstack-nova-api openstack-nova-conductor openstack-nova-console openstack-nova-novncproxy openstack-nova-scheduler openstack-nova-placement-api

2、编辑/etc/nova/nova.conf文件,完成以下部分:

① 在[DEFAULT]部分,仅启用计算和元数据APIS:

② 在[api_database]、[placement_database]、[database]部分,配置数据库权限:



③ 在[DEFAULT]部分,配置RabbitMQ消息队列权限:

④ 在[api] 和[keystone_authtoken]部分,配置Identity服务权限:


⑤ 在[DEFAULT]部分,配置my_ip选项为controller节点的管理接口IP地址:

⑥ 在[DEFAULT]部分,开启Networking服务的支持:

⑦ 在[vnc]部分,配置VNC 代理使用controller节点的管理接口IP地址:

⑧ 在[glance]部分,配置Image服务API的位置:

⑨ 在[oslo_concurrency]部分,配置lock path:

⑩ 在[placement]部分,配置Placement服务的权限:

⑪ 你必须通过将以下配置添加到/etc/httpd/conf.d/00-nova-placement-api.conf来启用对Placement API的访问


⑫ 重启httpd服务

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、创建cell1 cell:
# su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova

6、填充nova数据库:
# su -s /bin/sh -c "nova-manage db sync" nova

7、验证nova cell0 和 cell1 已经正确的创建:
# su -s /bin/sh -c "nova-manage cell_v2 list_cells" nova

三、启动Compute服务,配置开机自启动
# systemctl enable openstack-nova-api openstack-nova-consoleauth openstack-nova-scheduler openstack-nova-conductor openstack-nova-novncproxy
# systemctl start openstack-nova-api openstack-nova-consoleauth openstack-nova-scheduler openstack-nova-conductor openstack-nova-novncproxy


这一部分是关于在compute节点如何安装和配置nova计算服务
1、安装配置nova组件
# yum -y install openstack-nova-compute


2、编辑/etc/nova/nova.conf配置文件并完成以下部分
① 在[DEFAULT] 部分,仅启用计算和元数据APIS:

② 在[DEFAULT]部分,配置RabbitMQ消息队列权限:

③ 在[api] 和 [keystone_authtoken]部分,配置Identity 服务权限:


④ 在[DEFAULT]部分,配置my_ip选项:

⑤ 在[DEFAULT]部分,启用网络服务支持

⑥ 在 [vnc]部分,启用、配置远程控制台权限:

⑦ 在[glance]部分,配置Image 服务API的位置:

⑧ 在 [oslo_concurrency]部分,配置lock_path

⑨ 在[placement]部分,配置Placement的API

3、最终确定安装
① 确认是否计算节点支持虚拟机器的硬件加速
# egrep -c '(vmx|svm)' /proc/cpuinfo
如果此命令返回1或者更大的值,则你的compute node支持虚拟机器的硬件加速;如果返回0,你的compute node节点不支持虚拟机器的硬件加速,则你必须配置libvirt去使用QEMU去安装KVM
编辑文件/etc/nova/nova.conf 的[libvirt]部分,如下( 返回大于等于的值则跳过这步 )

② 启动Compute服务及其相关性,并将其配置为在系统启动时自动启动:
# systemctl enable libvirtd.service openstack-nova-compute.service
# systemctl start libvirtd.service openstack-nova-compute.service


以下需要在controller节点上操作
4、把compute节点加入cell 数据库
① 引入admin凭证以获得仅admin可使用的的CLI命令

设置适当的时间间隔在控制器节点上运行以注册这些新的计算节点

② 发现compute节点
# su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova

5、在controller-ZJB节点上验证
① #. admin-openrc

② #openstack compute service list

③ #openstack catalog list

④ #openstack image list

⑤ #nova-status upgrade check

搭建过程出现placement_API未启动问题尝试解决:

发现问题:
经过排查发现controller-ZJB节点的nova.conf的placement_database部分未配置数据库权限,遂补上,如下:

尝试解决问题:
① 补上配置
② 重新修改配置文件,尝试填充数据库 ( 失败 )
# su -s /bin/sh -c "nova-manage api_db sync" nova

失败原因:
由于数据库同步不完善导致无法成功,尝试删除数据库表,重新创建nova的几张表
再次尝试解决问题:
① 删除数据库

② 重新创建数据库并授权

③ 完事后再次尝试同步数据库( 依然失败 )


④ 劝退,准备恢复未安装nova之前的快照 ( 以后修改配置文件一定要小心 )
最终解决:
推倒重来可算是成功了

评论