本实验手册将指导你完成 OpenStack 计算节点的基础环境配置及 Nova 计算服务的安装与部署。

在开始部署 Nova 计算节点之前,我们需要先进行一些基础配置,确保系统环境正常。
课前准备
- 开启
VMnet1和VMnet8网卡; - 打开
controller节点的虚拟化功能; - 在 VMWare 中克隆
controller虚拟机,新虚拟机命名为compute; - 打开
controller和compute两台虚拟机。
节点环境准备
一、重置控制节点环境
使用 MobaXterm 连接 控制节点(controller),执行以下命令对环境进行重置:
curl -s http://192.168.192.205/scripts/env3-4-local.sh | bash
二、基础安全设置
为了避免实验过程中受到防火墙和安全策略的干扰,我们需要先关闭计算节点(compute)的防火墙和 SELinux。
在计算节点上执行以下命令:
# 关闭防火墙并设置开机不启动
systemctl stop firewalld
systemctl disable firewalld
# 临时关闭 SELinux
setenforce 0
# 修改配置文件,永久关闭 SELinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
三、配置主机名解析
为了让控制节点和计算节点能够互相找到对方,我们需要在两个节点的 /etc/hosts 文件中添加互相的 IP 地址和主机名映射。
首先,在控制节点上更新 /etc/hosts 文件,确保有以下内容:
192.168.30.129 controller
192.168.30.131 compute
然后,在计算节点上设置主机名,并更新 /etc/hosts 文件:
# 设置主机名为 compute
hostnamectl set-hostname compute
/etc/hosts 文件内容(新增,而不是替换原有内容):
192.168.30.129 controller
192.168.30.131 compute
设置完成后,可以通过 ping 命令测试两个节点是否能够通过主机名互相连通:

四、配置软件源
为了能够顺利安装 OpenStack 的相关软件包,我们需要安装 OpenStack 的软件源,并将其替换为国内的镜像站(例如阿里云),以提升下载速度。
直接复制以下命令,到计算节点执行:
REPO_DIR="/etc/yum.repos.d"
mv $REPO_DIR $REPO_DIR.bak
mkdir $REPO_DIR
cat > "$REPO_DIR/CentOS-Base.repo" <<'EOF'
[local-base]
name=Local - Base
baseurl=http://192.168.192.205:3080/vault-base/
gpgcheck=0
enabled=1
[local-updates]
name=Local - Updates
baseurl=http://192.168.192.205:3080/vault-updates/
gpgcheck=0
enabled=1
[local-extras]
name=Local - Extras
baseurl=http://192.168.192.205:3080/vault-extras/
gpgcheck=0
enabled=1
EOF
# 配置 QEMU EV 源
cat > "$REPO_DIR/CentOS-QEMU-EV.repo" <<'EOF'
[local-qemu-ev]
name=Local - QEMU EV
baseurl=http://192.168.192.205:3080/vault-centos-qemu-ev/
gpgcheck=0
enabled=1
EOF
# 配置 OpenStack Rocky 源
cat > "$REPO_DIR/CentOS-OpenStack-rocky.repo" <<'EOF'
[local-openstack-rocky]
name=Local - OpenStack Rocky
baseurl=http://192.168.192.205:3080/vault-centos-openstack-rocky/
gpgcheck=0
enabled=1
exclude=sip,PyQt4
EOF
清理并重建 YUM 缓存:
执行以下命令使配置生效,测试镜像源是否能够正常连通:
yum clean all
yum makecache
五、配置 NTP 时间同步
OpenStack 的各个组件之间对时间同步要求非常严格,如果时间不一致会导致很多服务无法正常运行。因此我们需要将计算节点的时间与控制节点进行同步。
1、安装 chrony 时间同步工具:
yum install chrony -y
2、修改配置文件:
打开 /etc/chrony.conf 文件,设置 compute 节点向 controller 节点同步时间。将原本的默认外网服务器注释掉,并添加 server controller iburst。
server controller iburst
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst

3、启动 NTP 服务并设置开机自启:
systemctl enable chronyd
systemctl start chronyd
验证服务是否正常启动:

4、验证时间同步状态:
使用以下命令查看时间同步源:
chronyc sources
如果在输出结果中看到 ^* controller,说明时间已经成功同步。

部署过程
基础环境准备好之后,我们就可以开始在计算节点上安装 Nova 组件了。
一、安装并配置 Nova 计算组件
安装 openstack-nova-compute 软件包:
在计算节点上执行:
yum install openstack-nova-compute -y
编辑 /etc/nova/nova.conf 配置文件:
打开配置文件,修改以下内容。请特别注意其中的 IP 地址需要替换为你自己环境中的实际 IP。
[DEFAULT]
# 启用计算和元数据 API
enabled_apis = osapi_compute,metadata
# 配置 RabbitMQ 消息队列访问
transport_url = rabbit://openstack:openstack@controller
# 配置计算节点的管理 IP 地址,注意修改为你自己的 compute 节点 IP
my_ip = 192.168.30.131
# 启用 Neutron 网络服务支持
use_neutron = true
firewall_driver = nova.virt.firewall.NoopFirewallDriver
[api]
# 配置身份服务访问策略
auth_strategy = keystone
[keystone_authtoken]
# Keystone 认证相关配置
auth_url = http://controller:5000/v3
memcached_servers = controller:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = nova
password = nova
[vnc]
# 配置 VNC 代理以使用控制节点的管理接口 IP 地址
enabled = true
server_listen = 0.0.0.0
server_proxyclient_address = $my_ip
# 注意修改此处的 IP 地址为控制节点的 IP
novncproxy_base_url = http://192.168.30.129:6080/vnc_auto.html
[glance]
# 配置 Image(镜像)服务 API 的位置
api_servers = http://controller:9292
[oslo_concurrency]
# 配置并发锁定路径
lock_path = /var/lib/nova/tmp
[placement]
# 配置 Placement API(资源分配服务)
region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://controller:5000/v3
username = placement
password = placement
在上面的配置文件中:
my_ip应该配置为当前计算节点的管理 IP 地址。novncproxy_base_url中的 IP 地址应该配置为控制节点的 IP 地址,因为 VNC 代理服务通常运行在控制节点上。 请根据你实际的网络规划进行替换,不要直接照抄示例!
配置硬件加速:
我们需要确认计算节点是否支持虚拟机的硬件加速功能。在计算节点执行:
egrep -c '(vmx|svm)' /proc/cpuinfo
如果该命令返回值大于或等于 1,说明计算节点支持硬件加速,不需要做任何修改;
如果返回值为 0,说明计算节点不支持硬件加速,此时必须在 /etc/nova/nova.conf 配置文件中,找到 [libvirt] 部分,将虚拟化类型修改为 qemu(软件模拟)。
[libvirt]
virt_type = qemu
启动计算服务:
启动计算服务及其依赖的虚拟化服务(libvirtd),并设置为开机自启:
systemctl start libvirtd openstack-nova-compute
systemctl enable libvirtd openstack-nova-compute
验证服务运行状态,确保没有报错:

二、将计算节点添加到 Cell 数据库
完成计算节点的配置后,我们需要将其注册到 Nova 的数据库中,让控制节点能够“发现”并管理这个新的计算节点。
接下来的操作需要回到 控制节点 (controller) 上执行。
- 加载管理员环境变量:
source admin-openstack.sh
- 确认计算服务已经注册:
检查控制节点是否已经能看到计算节点上的 nova-compute 服务:
openstack compute service list --service nova-compute
如果配置正确,你会看到列表中显示了新的计算服务。

- 发现并添加计算节点:
执行以下命令,让 Nova 扫描并把新的计算节点添加到 Cell 数据库中:
su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova

三、验证部署结果
最后,我们在控制节点上进行全面的检查,确保各项服务都正常工作。
- 检查所有计算服务组件状态:
确保所有的服务状态State都是 up。
openstack compute service list

- 检查与Keystone认证服务的连接:
列出所有的 API 端点,确认服务目录正常。
openstack catalog list

- 检查整体运行状态:
使用 Nova 自带的检查工具确认 Cells 和 Placement 等 API 是否运行正常。
nova-status upgrade check
如果所有的检查项结果都是 成功,那么恭喜你,计算节点的 Nova 部署已经顺利完成!

自主评分
在控制节点执行以下命令进行评分:
curl -s https://git.seahi.me/seahi/OpenStackScripts/raw/branch/main/3-5-controller.sh | bash
在计算节点执行以下命令进行评分:
curl -s https://git.seahi.me/seahi/OpenStackScripts/raw/branch/main/3-5-compute.sh | bash
