Openstack12--计算服务(Nova)安装
需要在控制节点和计算节点安装。nova计算节点不启动/报错解决
需要在控制节点和计算节点安装
控制节点
安装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
更多推荐
所有评论(0)