CentOS Stream 9离线部署OpenStack Caracal高可用集群指南

1. 项目概述:CentOS Stream 9离线部署OpenStack Caracal高可用集群

在私有云建设领域,OpenStack依然是开源解决方案的标杆。最近我在客户现场完成了一个特殊场景的部署——基于CentOS Stream 9操作系统,通过离线分层方式部署OpenStack 2024.1 Caracal版本的高可用集群。这种部署方式特别适合金融、政务等对网络安全要求严格的场景,也适用于没有稳定外网连接的特殊环境。

整个部署过程涉及操作系统定制、离线仓库构建、服务分层部署等多个技术难点。与常见的在线部署相比,离线方案需要预先解决依赖关系、版本冲突等问题。Caracal作为2024年最新版本,引入了边缘计算增强、GPU虚拟化改进等特性,但官方文档对离线部署的指导相对有限。下面我将分享从系统准备到集群验证的完整过程,重点说明离线环境下的特殊处理技巧。

2. 环境准备与离线仓库构建

2.1 基础系统定制化安装

CentOS Stream 9作为RHEL的上游版本,提供了最新的软件包但稳定性需要验证。我们选择最小化安装后添加以下组包:

dnf groupinstall "Standard" "Development Tools" -y dnf install python3-openstackclient mariadb-server rabbitmq-server -y

离线环境需要特别注意:

  1. 提前在联网环境下载所有依赖包(约12GB)
  2. 使用dnf download命令获取完整依赖树
  3. 创建本地仓库时确保包含EPEL和OpenStack特定仓库

关键技巧:使用createrepo_c工具构建仓库时,添加--update参数可以增量更新,大幅减少后续维护工作量。

2.2 分层仓库结构设计

高效的离线仓库应该按功能分层,我的目录结构如下:

/opt/offline_repo ├── os_base # 系统基础包 ├── openstack # OpenStack核心组件 ├── ha # 高可用相关(Pacemaker等) └── drivers # 硬件驱动(NIC/GPU等)

每层仓库都需要独立的repodata,这样在部署时可以按需启用。通过ansible批量修改节点的repo文件:

[os_base] name=CentOS Stream 9 - Base baseurl=file:///opt/offline_repo/os_base enabled=1 gpgcheck=0

3. OpenStack Caracal核心组件部署

3.1 数据库与消息队列高可用

Caracal版本对MariaDB Galera集群的支持有显著改进。我们采用三节点主备架构:

# 节点1初始化命令示例 galera_new_cluster --wsrep-new-cluster

关键配置参数:

[galera] wsrep_on=ON wsrep_provider=/usr/lib64/galera-4/libgalera_smm.so wsrep_cluster_address="gcomm://node1,node2,node3" binlog_format=ROW

RabbitMQ集群配置时需要注意:

  1. 提前在所有节点生成相同的erlang cookie
  2. 使用rabbitmqctl join_cluster时指定--ram--disc节点类型
  3. 离线环境必须手动安装所有插件(如rabbitmq_management)

3.2 控制平面服务部署

使用OpenStack-Ansible部署控制节点时,需修改/etc/openstack_deploy/conf.d下的配置文件:

nova_api_ha: hosts: ctrl1: { nova_api_ip: 192.168.100.11 } ctrl2: { nova_api_ip: 192.168.100.12 } ctrl3: { nova_api_ip: 192.168.100.13 } vip: 192.168.100.10

离线部署的特殊处理:

  1. 提前下载所有container镜像并导入
  2. 修改pip.conf使用本地PyPI源
  3. 禁用所有需要外网的health check

4. 高可用架构实现细节

4.1 Pacemaker资源编排

典型的VIP资源定义示例:

pcs resource create public-vip ocf:heartbeat:IPaddr2 \ ip=192.168.100.10 cidr_netmask=24 \ op monitor interval=30s

Caracal新增的约束规则:

pcs constraint order start nova-api then start neutron-server pcs constraint colocation add neutron-server with nova-api

4.2 存储层高可用方案

针对Ceph集群的离线部署技巧:

  1. 使用cephadm bootstrap --registry-url指定本地镜像仓库
  2. 提前下载所有rpm到/usr/share/cephadm-utils/rpm
  3. 修改ceph.repo指向本地路径

关键监控指标配置:

ceph: cluster_health: - type: bool name: HEALTH_OK rule: ceph health | grep -q HEALTH_OK

5. 验证与排错指南

5.1 核心功能测试清单

  1. 虚拟机启动测试:
openstack server create --image cirros --flavor m1.tiny test-vm
  1. 网络连通性验证:
openstack network create test-net openstack subnet create --network test-net --subnet-range 192.168.200.0/24 test-subnet
  1. 存储卷操作:
openstack volume create --size 1 test-volume openstack server add volume test-vm test-volume

5.2 常见问题排查

问题1:Galera集群节点无法加入
现象WSREP: failed to open gcomm backend connection
解决

  1. 检查防火墙是否开放4567端口
  2. 验证wsrep_cluster_address配置一致性
  3. 查看/var/lib/mysql/grastate.dat中的seqno值

问题2:RabbitMQ节点间通信失败
现象cluster_status显示部分节点down
解决

  1. 确认所有节点/var/lib/rabbitmq/.erlang.cookie内容相同
  2. 检查/etc/hosts中的主机名解析
  3. 验证4369和25672端口连通性

问题3:Ceph OSD启动失败
现象Unable to find a matching profile
解决

  1. 检查ceph-osd服务依赖的lvm2版本
  2. 确认/etc/ceph/ceph.conf中的mon_host配置
  3. 验证journal设备权限

6. 性能调优建议

6.1 内核参数优化

/etc/sysctl.conf中添加:

# OpenStack网络性能优化 net.ipv4.tcp_tw_reuse = 1 net.ipv4.ip_local_port_range = 1024 65000 net.core.somaxconn = 1024 # Ceph存储优化 vm.swappiness = 10 vm.dirty_ratio = 40 vm.dirty_background_ratio = 10

6.2 Nova计算节点配置

优化/etc/nova/nova.conf

[libvirt] cpu_mode = host-passthrough live_migration_bandwidth = 125000 live_migration_downtime = 500 [DEFAULT] resume_guests_state_on_host_boot = True

7. 后续维护建议

  1. 离线更新策略:

    • 每月同步一次上游仓库
    • 使用dnf makecache更新本地元数据
    • 通过ansible批量推送更新包
  2. 监控方案:

    # 安装Prometheus exporter dnf install openstack-exporter-ceilometer -y systemctl enable --now openstack-exporter
  3. 备份恢复流程:

    # MariaDB备份示例 mysqldump --all-databases --single-transaction > /backup/mysql-all-$(date +%F).sql # RabbitMQ策略导出 rabbitmqctl export_definitions /backup/rabbitmq-defs.json

在实施过程中,我发现Caracal版本对离线部署的友好度有明显提升,特别是容器镜像的依赖管理更加清晰。但硬件兼容性方面需要特别注意——某些较新的网卡驱动在CentOS Stream 9默认仓库中可能缺失,建议提前在开发环境测试所有硬件组件。