摘要

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

实验架构
实验架构

在开始部署 Nova 计算节点之前,我们需要先进行一些基础配置,确保系统环境正常。

课前准备

  1. 开启 VMnet1 和 VMnet8 网卡;
  2. 打开 controller 节点的虚拟化功能;
  3. 在 VMWare 中克隆 controller 虚拟机,新虚拟机命名为 compute;
  4. 打开 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

验证服务是否正常启动:

服务状态为running
服务状态为running

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
注意配置中的 IP 地址

在上面的配置文件中:

  • 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

验证服务运行状态,确保没有报错:

1778397047270
1778397047270

二、将计算节点添加到 Cell 数据库

完成计算节点的配置后,我们需要将其注册到 Nova 的数据库中,让控制节点能够“发现”并管理这个新的计算节点。

警告

接下来的操作需要回到 控制节点 (controller) 上执行。

  1. 加载管理员环境变量:
source admin-openstack.sh
  1. 确认计算服务已经注册:

检查控制节点是否已经能看到计算节点上的 nova-compute 服务:

openstack compute service list --service nova-compute

如果配置正确,你会看到列表中显示了新的计算服务。

计算服务
计算服务

  1. 发现并添加计算节点:

执行以下命令,让 Nova 扫描并把新的计算节点添加到 Cell 数据库中:

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

添加计算节点
添加计算节点

三、验证部署结果

最后,我们在控制节点上进行全面的检查,确保各项服务都正常工作。

  1. 检查所有计算服务组件状态:

确保所有的服务状态State都是 up。

openstack compute service list

所有计算服务
所有计算服务

  1. 检查与Keystone认证服务的连接:

列出所有的 API 端点,确认服务目录正常。

openstack catalog list

查看compute服务状态
查看compute服务状态

  1. 检查整体运行状态:

使用 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