1. 项目概述
最近在CentOS 9系统上使用kolla-ansible部署OpenStack 2025.2 Flamingo版本时,遇到了几个典型的报错问题。作为长期从事OpenStack部署的工程师,我想把这些问题的排查过程和解决方案记录下来,希望能帮助到同样在部署新版本时遇到困难的同行。
OpenStack 2025.2 Flamingo是最新发布的版本,引入了不少新特性和改进,但同时也带来了一些部署上的挑战。kolla-ansible作为OpenStack官方推荐的部署工具,虽然大大简化了部署流程,但在新版本发布初期,总会遇到一些"坑"需要踩。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备与基础配置
2.1 系统要求与依赖安装
在开始部署前,确保你的CentOS 9系统满足以下要求:
- 最小化安装的CentOS 9 Stream
- 至少16GB内存(推荐32GB)
- 至少100GB磁盘空间
- 至少4个CPU核心
- 网络配置正确(建议使用双网卡,一个用于管理,一个用于数据)
首先安装必要的依赖包:
bash复制dnf install -y python3-devel libffi-devel gcc openssl-devel python3-libselinux
2.2 Python虚拟环境配置
由于kolla-ansible对Python版本和依赖有特定要求,建议使用虚拟环境:
bash复制python3 -m venv /opt/kolla-venv
source /opt/kolla-venv/bin/activate
pip install -U pip
pip install 'ansible>=9.0.0' 'kolla-ansible>=15.0.0'
注意:OpenStack 2025.2要求Ansible 9.0.0及以上版本,旧版本会导致兼容性问题。
3. kolla-ansible配置与部署
3.1 配置文件生成与修改
从模板生成配置文件:
bash复制mkdir -p /etc/kolla
cp -r /opt/kolla-venv/share/kolla-ansible/etc_examples/kolla/* /etc/kolla/
cp /opt/kolla-venv/share/kolla-ansible/ansible/inventory/* .
修改globals.yml关键配置:
yaml复制kolla_base_distro: "centos"
kolla_install_type: "binary"
openstack_release: "2025.2"
network_interface: "ens192" # 管理网络接口
neutron_external_interface: "ens224" # 外部网络接口
3.2 常见部署报错与解决方案
3.2.1 MariaDB容器启动失败
错误现象:
code复制ERROR: Container 'mariadb' failed to start
排查步骤:
- 检查日志:
docker logs mariadb - 常见原因是/var/lib/docker空间不足或权限问题
解决方案:
bash复制# 清理docker空间
docker system prune -f
# 修改docker存储位置(如果/var空间不足)
mkdir -p /data/docker
echo '{"data-root": "/data/docker"}' > /etc/docker/daemon.json
systemctl restart docker
3.2.2 RabbitMQ连接超时
错误现象:
code复制amqp.exceptions.ProbableAuthenticationError: ConnectionClosedByBroker: (403) ACCESS_REFUSED
解决方案:
- 检查RabbitMQ容器是否正常运行
- 确认密码配置一致(/etc/kolla/passwords.yml)
- 增加RabbitMQ内存限制:
yaml复制# 在globals.yml中添加
rabbitmq_container_extra:
- "--memory=2g"
3.2.3 Neutron服务启动失败
错误现象:
code复制neutron-server[error]: Failed to load driver: ml2
解决方案:
- 确认ml2插件配置正确:
yaml复制# /etc/kolla/neutron-server/ml2_conf.ini
[ml2]
type_drivers = flat,vlan,vxlan
tenant_network_types = vxlan
mechanism_drivers = openvswitch,l2population
- 重启neutron相关容器:
bash复制kolla-ansible restart -i all-in-one neutron
4. 网络配置与优化
4.1 多网络平面配置
在生产环境中,建议配置多个网络平面:
yaml复制network_interface: "ens192" # 管理网络
api_interface: "ens193" # API网络
storage_interface: "ens194" # 存储网络
neutron_external_interface: "ens224" # 外部网络
4.2 Open vSwitch调优
对于高性能网络需求,可以优化OVS配置:
bash复制ovs-vsctl set Open_vSwitch . other_config:dpdk-init=true
ovs-vsctl set Open_vSwitch . other_config:pmd-cpu-mask=0x6
5. 部署后验证与问题排查
5.1 基本功能验证
部署完成后,执行健康检查:
bash复制kolla-ansible post-deploy
source /etc/kolla/admin-openrc.sh
openstack token issue
5.2 常见问题速查表
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| Horizon无法访问 | 防火墙阻止 | firewall-cmd --add-port=80/tcp --permanent |
| 实例创建失败 | 计算节点资源不足 | 检查nova-compute日志,增加资源 |
| 镜像上传失败 | Glance存储配置错误 | 检查/etc/kolla/glance-api.conf |
6. 性能优化建议
6.1 数据库优化
对于MariaDB,建议调整以下参数:
yaml复制# 在globals.yml中添加
mariadb_innodb_buffer_pool_size: "4G"
mariadb_innodb_log_file_size: "1G"
6.2 消息队列优化
RabbitMQ性能调优:
yaml复制rabbitmq_environment:
RABBITMQ_IO_THREAD_POOL_SIZE: 32
RABBITMQ_MNESIA_BASE_BATCH_COUNT: 10000
7. 升级与维护
7.1 版本升级注意事项
从旧版本升级到2025.2时:
- 先备份所有数据库
- 逐步升级控制节点
- 最后升级计算节点
7.2 日常维护命令
常用维护命令:
bash复制# 查看容器状态
kolla-ansible check -i all-in-one
# 重启所有服务
kolla-ansible restart -i all-in-one
# 更新配置
kolla-ansible reconfigure -i all-in-one
在实际部署过程中,我发现OpenStack 2025.2对系统资源的要求比前几个版本更高,特别是在内存方面。建议在生产环境部署前,先在测试环境充分验证。另外,CentOS 9的一些新特性(如firewalld的默认配置)可能会导致服务无法正常通信,需要特别注意网络策略的配置。
