需要在控制节点和计算节点安装

控制节点

 安装Nova软件包

yum -y install openstack-nova-api openstack-nova-conductor openstack-nova-scheduler openstack-nova-novncproxy

在控制节点共安装了Nova的4个软件包,它们分别如下。 “openstack-nova-api”:Nova与外部的接口模块。 “openstack-nova-conductor”:Nova传导服务模块,提供数据库访问。 “nova-scheduler”:Nova调度服务模块,用以选择某台主机进行云主机创建。 “openstack-nova-novncproxy”:Nova的虚拟网络控制台( Virtual Network Console,VNC)代理模块,支持用户通过VNC访问云主机

创建Nova的数据库并授权 

进入MariaDB数据库

mysql -uroot -p000000

新建“nova_api”“nova_cell0”“nova”数据库
给用户授权使用新建数据库
这里数据库名分别是“nova_api”“nova_cell0”“nova”,即6条语句  

CREATE DATABASE nova_api;
CREATE DATABASE nova_cell0;
CREATE DATABASE nova; 

GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' IDENTIFIED BY '000000';
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' IDENTIFIED BY '000000';
GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' IDENTIFIED BY '000000';
GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' IDENTIFIED BY '000000';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY '000000';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY '000000';

quit退出

修改Nova配置文件

备份配置文件
去掉所有注释和空行,生成新的配置文件 

如你的虚拟机ip与我不同,请修改 

cp /etc/nova/nova.conf /etc/nova/nova.bak
grep -Ev '^$|#' /etc/nova/nova.bak >/etc/nova/nova.conf
vi /etc/nova/nova.conf

修改“[api_database]”和“[database]”部分,实现与数据库“nova_api”“nova”的连接。 [api_database]

connection = mysql+pymysql://nova:000000@controller/nova_api

[database]

connection = mysql+pymysql://nova:000000@controller/nova

修改“[api]”与“[keystone_authtoken]”部分,实现与Keystone交互。

[api]

auth_strategy = keystone

[keystone_authtoken]

auth_url = http://controller:5000 memcached_servers = controller:11211

auth_type = password

project_domain_name = Default

user_domain_name = Default

project_name = project

username = nova

password = 000000

修改“[placement]”部分,实现与Placement交互。

[placement]

auth_url = http://controller:5000

auth_type = password

project_domain_name = Default

user_domain_name = Default

project_name = project

username = placement

password = 000000

region_name = RegionOne

修改“[glance]”部分,实现与Glance交互。

[glance]

api_servers = http://controller:9292

修改“[oslo_concurrency]”,配置锁路径。

[oslo_concurrency]

lock_path = /var/lib/nova/tmp 

修改“[DEFAULT]”部分,配置使用消息队列及防火墙等信息。

[DEFAULT]

enabled_apis = osapi_compute,metadata          

transport_url = rabbit://rabbitmq:000000@controller:5672

my_ip = 192.168.10.10

use_neutron = true

firewall_driver = nova.virt.firewall.NoopFirewallDriver

[vnc]

enabled = true

server_listen = $my_ip

server_proxyclient_address = $my_ip

 这里的“/var/lib/nova/tmp”是在安装软件包时由“nova”用户创建的,因此“nova”对它拥有所有权限。不要随意更改该路径。

 文件配置奉上

[DEFAULT]
enabled_apis = osapi_compute,metadata
transport_url = rabbit://rabbitmq:000000@controller:5672
my_ip = 192.168.10.10
use_neutron = true
firewall_driver = nova.virt.firewall.NoopFirewallDriver

[api]
auth_strategy = keystone

[api_database]
connection = mysql+pymysql://nova:000000@controller/nova_api

[barbican]
[cache]
[cinder]
[compute]
[conductor]
[console]
[consoleauth]
[cors]
[database]
connection = mysql+pymysql://nova:000000@controller/nova
[devices]
[ephemeral_storage_encryption]
[filter_scheduler]
[glance]
api_servers = http://controller:9292

[guestfs]
[healthcheck]
[hyperv]
[ironic]
[key_manager]
[keystone]
[keystone_authtoken]
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = project
username = nova
password = 000000

[libvirt]
[metrics]
[mks]
[neutron]
[notifications]
[osapi_v21]
[oslo_concurrency]
lock_path = /var/lib/nova/tmp

[oslo_messaging_amqp]
[oslo_messaging_kafka]
[oslo_messaging_notifications]
[oslo_messaging_rabbit]
[oslo_middleware]
[oslo_policy]
[pci]
[placement]
auth_url = http://controller:5000
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = project
username = placement
password = 000000
region_name = RegionOne

[powervm]
[privsep]
[profiler]
[quota]
[rdp]
[remote_debug]
[scheduler]
[serial_console]
[service_user]
[spice]
[upgrade_levels]
[vault]
[vendordata_dynamic_auth]
[vmware]
[vnc]
enabled = true
server_listen = $my_ip
server_proxyclient_address = $my_ip

[workarounds]
[wsgi]
[xenserver]
[xvp]
[zvm]

初始化Nova的数据库 

初始化“nova_api”数据库
创建“cell1”单元,该单元将使用“nova”数据库
映射“nova”到“cell0”数据库,使“cell0”的表结构和“nova”的保持一致
初始化“nova”数据库,由于映射的存在,在“cell0”中同时创建相同数据表 

su nova -s /bin/sh -c "nova-manage api_db sync" 
su nova -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1"
su nova -s /bin/sh -c "nova-manage cell_v2 map_cell0"
su nova -s /bin/sh -c "nova-manage db sync"

这里提示重复索引了,只是一个警告不必在意,原因见上面的命令解释  

 检查单元注册情况

获得已注册的单元列表 

nova-manage cell_v2 list_cells

 

可以看到,当前已经存在“cell0”和“cell1”两个单元。其中“cell0”是用于系统管理的,“cell1”是用于云主机管理的,每增加一个计算节点就应增加一个和“cell1”功能相同的单元 

 创建Nova用户并分配角色

导入环境变量模拟登录
在OpenStack云计算平台中创建用户“nova”
给用户“nova”分配“admin”角色

 . admin-login
openstack user create --domain default --password 000000 nova
openstack role add --project project --user nova admin

 创建Nova服务及端点

创建名为“nova”、类型为“compute”的服务

创建公众用户访问的服务端点
创建内部组件访问的服务端点
创建Admin用户访问端点 

openstack service create --name nova compute
openstack endpoint create --region RegionOne nova public http://controller:8774/v2.1
openstack endpoint create --region RegionOne nova internal http://controller:8774/v2.1
openstack endpoint create --region RegionOne compute admin http://controller:8774/v2.1

启动Nova服务

 并设置开机自启动

systemctl start openstack-nova-api openstack-nova-scheduler openstack-nova-conductor openstack-nova-novncproxy 
systemctl enable openstack-nova-api openstack-nova-scheduler openstack-nova-conductor openstack-nova-novncproxy

检测控制节点的Nova服务

查看端口占用情况
查看计算服务列表 

netstat -nutpl|grep 877
openstack compute service list

由于Nova服务会占用8774和8775端口,通过查看这两个端口是否启用,可以判断Nova服务是否已经运行 

 

计算节点配置 

安装Nova软件包 

安装之前请yum repolist检查一下软件仓库是否需要重建缓存

在计算节点只需要安装Nova的计算模块“nova-compute” 

yum -y install openstack-nova-compute

 修改Nova配置文件

备份配置文件
去掉所有注释和空行,生成新的配置文件 

cp /etc/nova/nova.conf /etc/nova/nova.bak
grep -Ev '^$|#' /etc/nova/nova.bak >/etc/nova/nova.conf
vi /etc/nova/nova.conf

 修改“[api]”与“[keystone_authtoken]”部分,实现与Keystone交互。 [api] auth_strategy = keystone [keystone_authtoken] auth_url = http://controller:5000 memcached_servers = controller:11211 auth_type = password project_domain_name = Default user_domain_name = Default project_name = project username = nova password = 000000

修改“[placement]”部分,实现与Placement交互。 auth_url = http://controller:5000 auth_type = password project_domain_name = Default user_domain_name = Default project_name = project username = placement password = 000000 region_name = RegionOne

修改“[glance]”部分,实现与Glance交互。 api_servers = http://controller:9292

修改“[oslo_concurrency]”,配置锁路径。 lock_path = /var/lib/nova/tmp

修改“[DEFAULT]”部分,配置使用消息队列及防火墙等信息。 enabled_apis = osapi_compute,metadata           transport_url = rabbit://rabbitmq:000000@controller:5672 my_ip = 192.168.10.20 use_neutron = true firewall_driver = nova.virt.firewall.NoopFirewallDriver

修改“[vnc]”部分,配置VNC连接模式。 [vnc] enabled = true server_listen = 0.0.0.0 server_proxyclient_address = $my_ip novncproxy_base_url = http://192.168.10.10:6080/vnc_auto.html

配置“[libvirt]”部分,设置虚拟化类型为QEMU。 [libvirt] virt_type = qemu

 文件配置奉上

[DEFAULT]
enabled_apis = osapi_compute,metadata
transport_url = rabbit://rabbitmq:000000@controller:5672
my_ip = 192.168.10.20
use_neutron = true
firewall_driver = nova.virt.firewall.NoopFirewallDriver

[api]
auth_strategy = keystone

[api_database]
[barbican]
[cache]
[cinder]
[compute]
[conductor]
[console]
[consoleauth]
[cors]
[database]
[devices]
[ephemeral_storage_encryption]
[filter_scheduler]
[glance]
api_servers = http://controller:9292

[guestfs]
[healthcheck]
[hyperv]
[ironic]
[key_manager]
[keystone]
[keystone_authtoken]
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = project
username = nova
password = 000000

[libvirt]
virt_type = qemu

[metrics]
[mks]
[neutron]
[notifications]
[osapi_v21]
[oslo_concurrency]
lock_path = /var/lib/nova/tmp

[oslo_messaging_amqp]
[oslo_messaging_kafka]
[oslo_messaging_notifications]
[oslo_messaging_rabbit]
[oslo_middleware]
[oslo_policy]
[pci]
[placement]
auth_url = http://controller:5000
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = project
username = placement
password = 000000
region_name = RegionOne

[powervm]
[privsep]
[profiler]
[quota]
[rdp]
[remote_debug]
[scheduler]
[serial_console]
[service_user]
[spice]
[upgrade_levels]
[vault]
[vendordata_dynamic_auth]
[vmware]
[vnc]
enabled = true
server_listen = 0.0.0.0
server_proxyclient_address = $my_ip
novncproxy_base_url = http://192.168.10.10:6080/vnc_auto.html

[workarounds]
[wsgi]
[xenserver]
[xvp]
[zvm]

启动计算节点Nova服务 

并设置开机自启动

systemctl start libvirtd openstack-nova-compute
systemctl enable libvirtd openstack-nova-compute

nova无法启动/报错 

2025.2.19---- 装完Dashboard后自己因频繁的讲虚拟机挂起恢复导致计算节点的nova服务死活起不来,今日讲虚拟机关机后重新发现虚拟机后又恢复正常

先   . admin-login

su nova -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose"      

卡住 1

 启动openstack-nova-compute 服务卡住

 因本人粗心,/etc/hosts 文件的主机名写反了导致无法通信所以启动失败

 卡住2

本人做到后面块存储服务时重启虚拟机时再次遇到了计算节点 nova-compute 不启动的问题

在网上一番查找后发现是控制节点防火墙没关导致的 (我记得我之前写openstack1博客的时候关了啊啊啊啊)计算节点的selinux也莫名开启了。。。。。

systemctl stop firewalld
systemctl disable firewalld

 Openstack:计算节点没法启动的一次排查过程-阿里云开发者社区

随后在计算节点启动服务即可

systemctl start libvirtd openstack-nova-compute

如果无效可以尝试我从下面文章找到的清除防火墙规则的方法(慎用可能会因此出现更多问题) 

解决Failed to start openstack-nova-compute.service问题-百度开发者中心

如果你是中途有关闭过虚拟机,那可能是rabbitmq 的rabbitmq用户消失了/没权限,创建rabbitmq用户再给予权限即可,如下

报错

启动openstack-nova-compute 服务 报错 

 检查rabbitmq日志

 提示没有找到rabbitmq用户

创建rabbitmq用户再给予权限后即可(上图有命令),最好把rabbitmq服务重启,控制节点nova相关组件也重启

控制节点验证

 解决办法来源

解决openstack-nova-compute.service无法启动问题_job for openstack-nova-compute.service failed beca-CSDN博客

问题解决

来到控制节点

每当一个计算节点要加入系统时,需要在控制节点执行一次发现计算节点的操作,只有被控制节点发现的计算节点才能被映射为一个单元,成为OpenStack云计算平台中的一员 

导入环境变量模拟登录
发现新的计算节点

. admin-login
su nova -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose"      

 

设置自动发现

由于OpenStack系统中可以有多个计算节点的存在,每增加一个新的节点就需要执行上面的命令进行发现。可以设置每隔一段时间就自动执行发现命令一次 

打开配置文件,修改“[scheduler]”,设置每隔60s自动执行发现一次 

vi /etc/nova/nova.conf
[scheduler]
discover_hosts_in_cells_interval = 60

 

重启“nova-api”服务,使修改过的配置文件生效

systemctl restart openstack-nova-api

 验证Nova服务

查看计算服务中各个模块的服务状态

openstack compute service list

在控制节点运行的“nova-conductor”“nova-scheduler”和在计算节点运行的“nova- compute”都处于启用(enabled)和开启(up)状态 

查看所有OpenStack服务及端点列表 

openstack catalog list

 

用Nova状态检测工具检查

nova-status upgrade check

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐