避坑指南:OpenStack 2023.2 All-in-One部署中,Ceph集成与Nova服务启动的那些‘坑’

张开发
2026/4/12 11:53:12 15 分钟阅读

分享文章

避坑指南:OpenStack 2023.2 All-in-One部署中,Ceph集成与Nova服务启动的那些‘坑’
OpenStack 2023.2单机部署实战Ceph集成与Nova服务故障排查指南当你在深夜的机房里盯着屏幕上不断滚动的错误日志那种挫败感我太熟悉了。OpenStack的单机部署看似简单但Ceph集成和Nova服务启动这两个环节总能给你惊喜。本文将带你直击2023.2版本中最棘手的几个问题现场分享我踩过的坑和验证过的解决方案。1. 环境准备阶段的隐形陷阱Rocky Linux 9.3作为基础系统时有几个配置细节容易被忽略。首先禁用SELinux后必须重启系统才能完全生效仅修改配置文件是不够的。我在三个不同的环境测试发现未重启直接部署会导致Ceph权限问题# 验证SELinux状态的正确方式 getenforce # 应该返回Disabled网络配置中业务网卡禁用DHCP后建议手动设置MTU值。遇到过因为默认MTU过大导致Ceph集群通信异常的案例# 检查当前MTU值 ip link show ens192 | grep mtu # 设置合适的MTU通常9000或1500 ip link set dev ens192 mtu 9000安装基础依赖时openssh的重装有个细节需要注意卸载后立即安装可能导致现有SSH连接中断建议先安装新版本再卸载旧版本修改配置后要测试root登录是否真正生效2. Ceph部署中的关键配置2.1 初始化部署的隐藏参数使用cephadm bootstrap时--allow-fqdn-hostname参数在单机部署中至关重要。2023.2版本中如果忽略这个参数后续的OSD部署会报主机名解析错误# 完整的初始化命令 cephadm bootstrap --mon-ip 192.168.10.20 \ --initial-dashboard-user admin \ --initial-dashboard-password admin \ --cluster-network 192.168.10.0/24 \ --allow-fqdn-hostname存储池创建时PG数量的设置需要根据实际硬件调整。在测试环境中我发现以下配置最为稳定存储池名称PG数量适用场景volumes64Cinder卷存储vms32虚拟机镜像存储images32Glance镜像存储backups32备份存储2.2 单节点特有的副本配置生产环境通常要求副本数≥3但单机部署必须调整# 必须按顺序执行的配置命令 ceph config set global mon_allow_pool_size_one true ceph config set osd osd_pool_default_size 1 ceph config set osd osd_pool_default_min_size 1 for pool in volumes vms images backups; do ceph osd pool set $pool size 1 --yes-i-really-mean-it done重要提示这些配置必须在创建虚拟机前完成否则已有数据可能不一致3. OpenStack部署中的疑难问题3.1 Docker与Kolla的版本兼容性2023.2版本对Docker的兼容性要求严格建议使用以下组合# 已验证稳定的版本组合 dnf install -y docker-ce-20.10.24 docker-ce-cli-20.10.24 systemctl enable --now dockerKolla-ansible的安装要注意Python环境避免使用系统自带的python3.9推荐使用Python 3.10虚拟环境python3.10 -m venv /path/to/venv source /path/to/venv/bin/activate pip install githttps://opendev.org/openstack/kolla-ansiblestable/2023.23.2 Nova服务启动失败的终极解决方案2023.2版本中著名的Nova-compute服务启动问题根本原因是libvirt容器配置错误。经过多次测试最可靠的修复步骤如下下载补丁文件到指定目录清理已有容器docker rm -f nova_libvirt nova_compute重新部署Nova服务kolla-ansible -i multinode deploy -t nova关键点在于-t nova参数它确保只重新部署Nova相关服务而不影响其他组件。4. 网络与虚拟机创建的实用技巧4.1 网络配置的最佳实践创建provider网络时禁用port-security能避免很多连接问题openstack network create --provider-network-type flat \ --provider-physical-network physnet1 \ --share net_192.168.10.0/24 openstack subnet create --network net_192.168.10.0/24 \ --subnet-range 192.168.10.0/24 \ --gateway 192.168.10.2 sub_192.168.10.0/24 openstack network set --disable-port-security net_192.168.10.0/244.2 虚拟机创建的优化方案从卷启动虚拟机时建议先创建空白卷再挂载比直接--boot-from-volume更可靠# 创建空白卷 openstack volume create --size 20 vol_vm01 # 从镜像创建启动卷 openstack image save --file Rocky-8.6.img Rocky-8.6 openstack volume create --image Rocky-8.6 --size 20 vol_vm01 # 创建虚拟机 openstack server create --volume vol_vm01 \ --network net_192.168.10.0/24 \ --flavor Flavor_2C2G vm01这种分步操作虽然繁琐但在资源紧张的单机环境中成功率更高。最后提醒所有关键操作都应该通过命令行执行并保存输出日志Web界面只适合状态监控。当遇到问题时docker logs和journalctl是你的最佳排错伙伴。

更多文章