2.4 欧拉集群安装Nova计算服务
文章目录
- 1. 欧拉集群
- 1.1 集群拓扑
- 1.2 查看主机名
- 1.3 查看IP地址
- 1.4 查看映射文件
- 1.5 查看防火墙状态
- 1.6 检测集群互通性
- 2. 任务描述
- 3. 任务实施
- 3.1 控制节点Euler01上安装与配置Nova服务
- 3.1.1 安装Nova软件包
- 3.1.2 创建Nova数据库并授权
- 3.1.3 修改Nova配置文件
- 3.1.4 初始化Nova数据库
- 3.1.5 验证单元是否都已正确注册
- 3.2 控制节点Eluer01的Nova组件初始化
- 3.2.1 创建Nova用户并分配角色
- 3.2.2 创建Nova服务机服务端点
- 3.2.3 启动控制节点的Nova服务
- 3.3 检测控制节点的Nova服务
- 3.3.1 查看端口占用情况
- 3.3.2 查看计算服务列表
- 3.4 计算节点Euler02上安装与配置Nova服务
- 3.4.1 安装Nova软件包
- 3.4.2 修改Nova配置文件
- 3.4.3 启动Euler02的Nova服务
- 3.5 计算节点Euler03上安装与配置Nova服务
- 3.5.1 安装Nova软件包
- 3.5.2 修改Nova配置文件
- 3.5.3 启动Euler03的Nova服务
- 3.6 发现计算节点并检验服务
- 3.6.1 发现计算节点
- 3.6.2 验证Nova服务
- 4. 实战总结
1. 欧拉集群
1.1 集群拓扑
- Euler01 - 主控节点,Euler02和Euler03 - 从节点

1.2 查看主机名
- 查看Euler01节点主机名,执行命令:
hostname

- 查看Euler02节点主机名,执行命令:
hostname

- 查看Euler03节点主机名,执行命令:
hostname

1.3 查看IP地址
-
查看Euler01节点IP地址,执行命令:
ip addr

-
查看Euler02节点IP地址,执行命令:
ip addr

-
查看Euler03节点IP地址,执行命令:
ip addr

1.4 查看映射文件
-
查看Euler01节点映射文件,执行命令:
cat /etc/hosts

-
查看Euler02节点映射文件,执行命令:
cat /etc/hosts

-
查看Euler03节点映射文件,执行命令:
cat /etc/hosts

1.5 查看防火墙状态
-
查看Euler01节点防火墙状态,执行命令:
systemctl status firewalld

-
查看Euler02节点防火墙状态,执行命令:
systemctl status firewalld

-
查看Euler03节点防火墙状态,执行命令:
systemctl status firewalld

1.6 检测集群互通性
- 测试主节点Euler01到三个节点的连通性
- 执行命令:
ping euler01

- 执行命令:
ping euler02

- 执行命令:
ping euler03

- 执行命令:
- 测试从节点Euler02到三个节点的连通性
-
执行命令:
ping euler01

-
执行命令:
ping euler02

-
执行命令:
ping euler03

-
- 测试从节点Euler03到三个节点的连通性
-
执行命令:
ping euler01

-
执行命令:
ping euler02

-
执行命令:
ping euler03

-
2. 任务描述
- 在欧拉集群中安装Nova计算服务是构建OpenStack云计算平台的核心步骤之一。Nova(OpenStack Compute)负责管理虚拟机实例的生命周期,包括创建、调度、删除等操作。本任务旨在基于欧拉操作系统(openEuler),在控制节点和计算节点部署Nova服务,配置与数据库、消息队列RabbitMQ及Keystone认证服务的集成,确保各组件通信正常。通过安装和配置Nova,实现对计算资源的统一管理与调度,为上层云平台提供虚拟化支持,提升资源利用率和运维效率,支撑后续镜像、网络、存储等服务的构建,完成私有云基础架构的搭建。
3. 任务实施
3.1 控制节点Euler01上安装与配置Nova服务
3.1.1 安装Nova软件包
- 执行命令:
yum -y install openstack-nova-api openstack-nova-conductor openstack-nova-scheduler openstack-nova-novncproxy


- 命令说明:该命令在欧拉系统中通过YUM包管理器安装OpenStack Nova核心组件:
nova-api(接收请求)、nova-conductor(协调数据库操作)、nova-scheduler(调度虚拟机部署)、nova-novncproxy(提供VNC远程控制)。-y参数表示自动确认安装,适用于控制节点部署。 - 在安装
openstack-nova-api软件包时,会自动在系统中生成一个名为nova的用户和用户组。 - 执行命令:
cat /etc/passwd | grep nova,查看nova用户信息

- 执行命令:
cat /etc/group | grep nova,查看nova用户组信息

3.1.2 创建Nova数据库并授权
-
进入MariaDB数据库客户端
- 执行命令:
mysql -uroot -p903213

- 执行命令:
-
创建nova_api、nova_cell0和nova数据库
- 执行命令:
create database nova_api;

- 执行命令:
create database nova_cell0;

- 执行命令:
create database nova;

- 执行命令:
-
给nova_api、nova_cell0和nova数据库授权
-
执行命令:
grant all privileges on nova_api.* to 'nova'@'localhost' identified by '903213';,将nova_api数据库的管理权限授予本地登录用户

-
执行命令:
grant all privileges on nova_api.* to 'nova'@'%' identified by '903213';,将nova_api数据库的管理权限授予远程登录用户

-
执行命令:
grant all privileges on nova_cell0.* to 'nova'@'localhost' identified by '903213';,将nova_cell0数据库的管理权限授予本地登录用户

-
执行命令:
grant all privileges on nova_cell0.* to 'nova'@'%' identified by '903213';,将nova_cell0数据库的管理权限授予远程登录用户

-
执行命令:
grant all privileges on nova.* to 'nova'@'localhost' identified by '903213';,将nova数据库的管理权限授予本地登录用户

-
执行命令:
grant all privileges on nova.* to 'nova'@'%' identified by '903213';,将nova数据库的管理权限授予远程登录用户

-
结果说明:上述命令为Nova服务在MariaDB中创建数据库用户并授予相应权限。通过
grant all privileges将nova_api、nova_cell0和nova数据库的管理权限分别授予本地和远程用户,确保Nova各组件能安全访问数据库。执行结果均为“Query OK”,说明权限分配成功,为后续Nova服务配置和启动奠定了基础。
-
-
退出MariaDB客户端
- 执行命令:
quit

- 执行命令:
3.1.3 修改Nova配置文件
-
准备工作,给RabbitMQ添加
nova用户并授权- 执行命令:
rabbitmqctl add_user nova 903213

- 执行命令:
rabbitmqctl set_permissions --vhost openstack nova ".*" ".*" ".*"

- 命令说明:该命令为 RabbitMQ 中
nova用户在虚拟主机openstack下设置权限,允许其对所有资源(队列、交换机)进行读、写和配置操作。三个".*"分别代表配置、写入和读取权限的正则匹配,表示允许所有操作。
- 执行命令:
-
备份配置文件
- 执行命令:
cp /etc/nova/nova.conf /etc/nova/nova.conf.bak

- 执行命令:
-
编辑配置文件
-
执行命令:
vim /etc/nova/nova.conf

[DEFAULT] log_dir = /var/log/nova transport_url = rabbit://nova:903213@euler01:5672/openstack my_ip = 192.168.1.51 use_neutron = True firewall_driver = nova.virt.firewall.NoopFirewallDriver enabled_apis = osapi_compute,metadata[api_database] connection = mysql+pymysql://nova:903213@euler01/nova_api[database] connection = mysql+pymysql://nova:903213@euler01/nova[api] auth_strategy = keystone[keystone_authtoken] www_authenticate_uri = http://euler01:5000/v3 auth_url = http://euler01:5000/v3 memcached_servers = euler01:11211 auth_type = password project_domain_name = Default user_domain_name = Default project_name = service username = nova password = 903213[placement] region_name = RegionOne project_domain_name = Default project_name = service auth_type = password auth_url = http://euler01:5000/v3 user_domain_name = Default username = placement password = 903213[glance] api_servers = http://euler01:9292[oslo_concurrency] lock_path = /var/lib/nova/tmp[vnc] enabled = True server_listen = $my_ip server_proxyclient_address = $my_ip novncproxy_base_url = http://euler01:6080/vnc_auto.html[scheduler] driver = filter_scheduler host_manager = default -
配置说明:该配置为 OpenStack Nova 服务主配置文件,定义了消息队列、数据库连接、Keystone 认证、Glance 镜像服务、VNC 控制台及 Placement 资源服务等关键参数,确保计算节点正常通信与虚拟机调度管理。
-
-
设置配置文件权限
-
执行命令:
chown nova:nova /etc/nova/nova.conf,将文件所有者改为nova

-
执行命令:
chmod 644 /etc/nova/nova.conf,放宽权限,确保nova可读

-
3.1.4 初始化Nova数据库
- 初始化
nova_api数据库- 执行命令:
su nova -s /bin/sh -c "nova-manage api_db sync"

- 执行命令:
- 创建
cell1单元,该单元将使用nova数据库- 执行命令:
su nova -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1"

- 结果说明:该提示表明
nova-manage命令未在命令行中指定--transport-url和--database_connection,因此自动从/etc/nova/nova.conf配置文件中读取[DEFAULT]和[database]的对应值。这是正常行为,说明配置文件生效,cell1创建成功,无需手动传参。
- 执行命令:
- 映射
nova到cell0数据库,使cell0的表结构和nova的表结构保持一致- 执行命令:
su nova -s /bin/sh -c "nova-manage cell_v2 map_cell0"

- 结果说明:执行
nova-manage cell_v2 map_cell0命令后无输出,表示操作成功。该命令将 Nova 的cell0(保留单元)与数据库中的元数据关联,确保实例在调度失败时可被正确记录和管理。这是 Cell v2 架构部署的关键步骤之一,完成后即可创建并使用主计算单元(如 cell1)。
- 执行命令:
- 初始化
nova数据库,映射会让cell0与nova同构-
执行命令:
su nova -s /bin/sh -c "nova-manage db sync"

-
结果说明:执行
nova-manage db sync命令后无输出,表示操作成功。该命令将 Nova 的数据库模式同步至nova和nova_cell0数据库中,确保表结构与当前版本一致,为后续服务启动和实例调度提供数据支持。完成后可继续部署计算节点或创建虚拟机。
-
3.1.5 验证单元是否都已正确注册
- 执行命令:
nova-manage cell_v2 list_cells

- 结果说明:执行
nova-manage cell_v2 list_cells命令后成功显示两个单元:cell0和cell1,表明Cell v2架构已正确配置。cell0为保留单元(用于系统管理),cell1为主计算单元(用于云主机管理),两者均启用且数据库连接正常,具备调度虚拟机的能力,标志着Nova控制节点部署完成。以后每增加一个计算节点,就应增加一个和cell1功能相同的单元。
3.2 控制节点Eluer01的Nova组件初始化
3.2.1 创建Nova用户并分配角色
-
导入环境变量,模拟登录
- 执行命令:
source admin-openrc

- 执行命令:
-
创建nova用户
-
执行命令:
openstack user create --domain default --password 903213 nova

-
命令说明:执行
openstack user create --domain default --password 903213 nova成功创建名为nova的用户,归属默认域,密码已设置。该用户将用于Nova服务在Keystone中的身份认证,是后续配置服务端点和权限的基础,确保OpenStack各组件间安全通信。 -
执行命令:
openstack user list

-
-
为nova用户分配admin角色
- 执行命令:
openstack role add --project service --user nova admin

- 命令说明:该命令为用户
nova在项目service中分配admin角色,使其具备管理该项目资源的权限。通过openstack role add实现基于角色的访问控制(RBAC),确保Nova服务能正常调用Keystone进行身份验证和资源操作,是OpenStack服务配置的关键步骤。
- 执行命令:
3.2.2 创建Nova服务机服务端点
-
创建计算服务
- 执行命令:
openstack service create --name nova compute

- 结果说明:执行
openstack service create --name nova compute成功创建名为 “nova” 的 Compute 服务,类型为compute,状态已启用。该服务在Keystone中注册,用于标识Nova计算服务实例,是后续配置端点(endpoint)和实现服务发现的基础,确保OpenStack各组件能正确调用计算功能。 - 执行命令:
openstack service list,查看OpenStack的服务列表

- 执行命令:
-
创建计算服务端点
-
第1步,创建公众用户访问的服务端点
-
执行命令:
openstack endpoint create --region RegionOne nova public http://euler01:8774/v2.1

-
命令说明:执行
openstack endpoint create成功为 Nova 服务创建了公共接口端点,URL 为http://euler01:8774/v2.1,区域为 RegionOne。该端点允许用户和外部系统通过 API 访问 Nova 的计算功能,是 OpenStack 服务对外提供访问的关键配置,确保虚拟机管理操作可正常调用。
-
-
第2步,创建内部组件访问的服务端点
-
执行命令:
openstack endpoint create --region RegionOne nova internal http://euler01:8774/v2.1

-
命令说明:执行
openstack endpoint create成功为 Nova 服务创建了内部接口端点,URL 为http://euler01:8774/v2.1,接口类型为 internal。该端点用于 OpenStack 内部组件(如 Neutron、Horizon)之间的通信,确保服务间安全高效调用,是构建完整云平台的关键配置步骤。
-
-
第3步,创建Admin用户访问的服务端点
-
执行命令:
openstack endpoint create --region RegionOne nova admin http://euler01:8774/v2.1

-
命令说明:执行
openstack endpoint create成功为 Nova 服务创建了管理员接口端点,URL 为http://euler01:8774/v2.1,接口类型为 admin。该端点专供管理员操作使用,提供最高权限访问,用于系统维护和配置管理,确保 OpenStack 管理功能正常运行,是服务部署的必要环节。
-
-
3.2.3 启动控制节点的Nova服务
-
开机启用Nova服务
-
执行命令:
systemctl enable openstack-nova-api openstack-nova-scheduler openstack-nova-conductor openstack-nova-novncproxy

-
命令说明:执行
systemctl enable命令成功将 Nova 的 API、Conductor、Scheduler 和 novncproxy 服务设置为开机自启。系统创建了对应的 systemd 软链接,确保这些核心服务在系统启动时自动运行,保障 OpenStack 计算服务的稳定性和可用性,是部署完成后的关键配置步骤。
-
-
立即启动Nova服务
-
执行命令:
systemctl start openstack-nova-api

-
执行命令:
systemctl start openstack-nova-scheduler

-
执行命令:
systemctl start openstack-nova-conductor

-
执行命令:
systemctl start openstack-nova-novncproxy

-
3.3 检测控制节点的Nova服务
3.3.1 查看端口占用情况
- 执行命令:
netstat -nultp | grep 877

- 结果说明:Euler01 节点上 8774、8775 和 8778 端口均处于监听状态,分别对应 Nova API、Nova Metadata 和 Placement API 服务,表明 OpenStack 核心服务已正常启动并可对外提供访问。
3.3.2 查看计算服务列表
- 执行命令:
openstack compute service list

- 结果说明:OpenStack计算服务已正常运行,
nova-scheduler和nova-conductor服务在euler01节点上处于启用且运行状态,表明Nova控制平面部署成功,可进行后续虚拟机调度与管理操作。
3.4 计算节点Euler02上安装与配置Nova服务
- 在计算节点上只需要安装Nova的计算模块
nova-compute
3.4.1 安装Nova软件包
- 执行命令:
yum -y install openstack-nova-compute

- 在安装
openstack-nova-compute软件包时,会自动在系统中生成一个名为nova的用户和用户组。 - 执行命令:
cat /etc/passwd | grep nova,查看nova用户信息

- 执行命令:
cat /etc/group | grep nova,查看nova用户组信息

3.4.2 修改Nova配置文件
- 备份配置文件
- 执行命令:
cp /etc/nova/nova.conf /etc/nova/nova.conf.bak

- 执行命令:
- 编辑新配置文件
-
执行命令:
vim /etc/nova/nova.conf

[DEFAULT] log_dir = /var/log/nova transport_url = rabbit://nova:903213@euler01:5672/openstack my_ip = 192.168.1.51 use_neutron = True firewall_driver = nova.virt.firewall.NoopFirewallDriver compute_driver = libvirt.LibvirtDriver enabled_apis = osapi_compute,metadata instances_path = /var/lib/nova/instances/[api] auth_strategy = keystone[keystone_authtoken] www_authenticate_uri = http://euler01:5000/v3 auth_url = http://euler01:5000/v3 memcached_servers = euler01:11211 auth_type = password project_domain_name = Default user_domain_name = Default project_name = service username = nova password = 903213[placement] region_name = RegionOne project_domain_name = Default project_name = service auth_type = password auth_url = http://euler01:5000/v3 user_domain_name = Default username = placement password = 903213[glance] api_servers = http://euler01:9292[oslo_concurrency] lock_path = /var/lib/nova/tmp[vnc] enabled = True server_listen = 0.0.0.0 server_proxyclient_address = $my_ip novncproxy_base_url = http://euler01:6080/vnc_auto.html[libvirt] virt_type = qemu -
配置说明:该配置为OpenStack Nova计算节点设置:指定RabbitMQ通信、本机IP、启用VNC远程控制,集成Keystone认证、Placement资源调度与Glance镜像服务,使用Libvirt驱动,通过Neutron网络管理,并配置日志、锁路径等运行环境。
-
- 设置配置文件权限
- 执行命令:
chown nova:nova /etc/nova/nova.conf,将文件所有者改为nova

- 执行命令:
chmod 644 /etc/nova/nova.conf,放宽权限,确保nova可读

- 执行命令:
3.4.3 启动Euler02的Nova服务
-
设置开机启用服务
- 执行命令:
systemctl enable libvirtd openstack-nova-compute

- 执行命令:
-
立即启动服务
- 执行命令:
systemctl start libvirtd openstack-nova-compute

libvirtd概述:libvirtd是 Libvirt 虚拟化管理工具的核心守护进程,用于管理 KVM、QEMU、Xen 等虚拟机。它提供统一的 API 接口,支持创建、启动、停止虚拟机,配置存储与网络。OpenStack Nova 通过libvirt驱动与libvirtd通信,实现对计算节点虚拟资源的底层控制,是云计算中关键的虚拟化管理层。
- 执行命令:
-
查看服务状态
- 执行命令:
systemctl status openstack-nova-compute

- 执行命令:
3.5 计算节点Euler03上安装与配置Nova服务
- 在计算节点上只需要安装Nova的计算模块
nova-compute
3.5.1 安装Nova软件包
-
执行命令:
yum -y install openstack-nova-compute

-
在安装
openstack-nova-compute软件包时,会自动在系统中生成一个名为nova的用户和用户组。 -
执行命令:
cat /etc/passwd | grep nova,查看nova用户信息

-
执行命令:
cat /etc/group | grep nova,查看nova用户组信息

3.5.2 修改Nova配置文件
-
备份配置文件
- 执行命令:
cp /etc/nova/nova.conf /etc/nova/nova.conf.bak

- 执行命令:
-
编辑新配置文件
-
执行命令:
vim /etc/nova/nova.conf

[DEFAULT] log_dir = /var/log/nova transport_url = rabbit://nova:903213@euler01:5672/openstack my_ip = 192.168.1.51 use_neutron = True firewall_driver = nova.virt.firewall.NoopFirewallDriver compute_driver = libvirt.LibvirtDriver enabled_apis = osapi_compute,metadata instances_path = /var/lib/nova/instances/[api] auth_strategy = keystone[keystone_authtoken] www_authenticate_uri = http://euler01:5000/v3 auth_url = http://euler01:5000/v3 memcached_servers = euler01:11211 auth_type = password project_domain_name = Default user_domain_name = Default project_name = service username = nova password = 903213[placement] region_name = RegionOne project_domain_name = Default project_name = service auth_type = password auth_url = http://euler01:5000/v3 user_domain_name = Default username = placement password = 903213[glance] api_servers = http://euler01:9292[oslo_concurrency] lock_path = /var/lib/nova/tmp[vnc] enabled = True server_listen = 0.0.0.0 server_proxyclient_address = $my_ip novncproxy_base_url = http://euler01:6080/vnc_auto.html[libvirt] virt_type = qemu -
配置说明:该配置为OpenStack Nova计算节点设置:指定RabbitMQ通信、本机IP、启用VNC远程控制,集成Keystone认证、Placement资源调度与Glance镜像服务,使用Libvirt驱动,通过Neutron网络管理,并配置日志、锁路径等运行环境。
-
-
设置配置文件权限
-
执行命令:
chown nova:nova /etc/nova/nova.conf,将文件所有者改为nova

-
执行命令:
chmod 644 /etc/nova/nova.conf,放宽权限,确保nova可读

-
3.5.3 启动Euler03的Nova服务
-
设置开机启用服务
- 执行命令:
systemctl enable libvirtd openstack-nova-compute

- 执行命令:
-
立即启动服务
- 执行命令:
systemctl start libvirtd openstack-nova-compute

- 执行命令:
-
查看服务状态
- 执行命令:
systemctl status openstack-nova-compute

- 执行命令:
3.6 发现计算节点并检验服务
3.6.1 发现计算节点
- 导入环境变量,模拟登录
- 执行命令:
source admin-openrc

- 执行命令:
- 发现新的计算节点
- 执行命令:
su nova -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose"

- 结果说明:该命令成功执行,发现两个计算节点(euler02、euler03)的主机映射,并确认其在 cell1 中已注册。由于 cell0 未包含任何主机,跳过处理。输出表明计算节点已正确识别并加入 cell 架构,Nova 控制节点与计算节点通信正常,为后续虚拟机调度奠定基础。
- 执行命令:
- 设置自动发现
- 执行命令:
vim /etc/nova/nova.conf,添加[scheduler]设置,每隔60s自动执行一次发现命令

- 执行命令:
systemctl restart openstack-nova-api,让修改后的配置生效

- 执行命令:
3.6.2 验证Nova服务
-
查看计算服务列表
- 执行命令:
openstack compute service list

- 结果说明:该命令显示 OpenStack 计算服务状态,euler01 上的 nova-scheduler 和 nova-conductor 服务正常运行,euler02 和 euler03 的 nova-compute 服务均处于 enabled 且 up 状态,表明计算节点已成功注册并接入控制节点,整个 Nova 架构运行稳定,具备虚拟机调度与管理能力。
- 执行命令:
-
查看全部服务及端点列表
- 执行命令:
openstack catalog list

- 结果说明:该命令输出显示 OpenStack 服务目录(Catalog)已正确配置,包含 keystone、nova、glance 和 placement 四大核心服务,各服务的 public、internal、admin 端点均指向 euler01 主机,端口正常,表明服务注册成功,系统具备完整的身份认证、计算、镜像和资源调度能力,环境部署基本完成。
- 执行命令:
-
使用Nova状态检测工具进行检查
- 执行命令:
nova-status upgrade check

- 结果说明:该命令执行升级检查,结果显示 Cells v2、Placement API、Cinder API、策略文件迁移、旧版 N-1 计算节点及硬件类型配置等各项检查均通过(
Result: Success),表明当前 Nova 服务架构兼容性良好,无关键配置问题,系统处于可安全升级状态,为后续版本升级奠定了基础。
- 执行命令:
4. 实战总结
- 本次实战完成了OpenStack Nova计算服务在欧拉集群中的部署。在控制节点euler01上安装API、Conductor、Scheduler等组件,配置数据库、RabbitMQ和Keystone认证,并初始化Cell v2架构;在计算节点euler02和euler03安装nova-compute服务,完成网络、VNC及虚拟化驱动配置。通过
discover_hosts自动发现计算节点,验证各服务状态正常。最终openstack compute service list显示所有服务处于up状态,服务目录注册完整,升级检查全部通过,表明Nova部署成功,具备虚拟机调度与管理能力,为私有云平台构建奠定基础。
