1. 环境准备打造稳定的CentOS 7基础系统在CentOS 7官方源停止维护的背景下搭建OpenStack环境首先要解决软件源不可用的问题。我最近在物理服务器上实测时发现直接用默认源会导致80%的依赖包安装失败。这里分享经过验证的解决方案网络服务配置是第一个关键点。CentOS 7默认的NetworkManager服务与OpenStack网络组件存在冲突建议彻底禁用。执行以下命令后记得检查/etc/sysconfig/network-scripts/ifcfg-ensXX文件中的BOOTPROTO是否设置为staticsystemctl stop NetworkManager systemctl disable NetworkManager systemctl start network systemctl enable network软件源配置直接影响后续所有组件的安装成功率。推荐组合使用阿里云基础源和清华大学的CentOS Vault源。这个组合在我最近三次部署中保持100%可用率。配置时要注意两个细节必须注释掉mirrorlist行需要手动指定baseurl到具体版本路径如7.9.2009curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo sed -i -e /mirrors.cloud.aliyuncs.com/d -e /mirrors.aliyuncs.com/d /etc/yum.repos.d/CentOS-Base.repo注意如果遇到Could not resolve host错误建议先检查DNS配置/etc/resolv.conf这是新手最容易忽略的点。2. 系统优化解决时间同步与依赖冲突OpenStack对时间同步有严格要求节点间时间差超过5秒就会导致认证失败。实测发现CentOS 7默认的ntpd服务在虚拟机环境下同步效果不佳改用chrony后精度可控制在0.5ms内yum install -y chrony systemctl enable chronyd systemctl start chronyd chronyc sources -v # 验证时间源状态依赖包管理需要特别注意三点清理旧缓存避免冲突rm -rf /var/cache/yum/*优先安装EPEL源yum install -y epel-release处理可能的Python冲突特别是2.7和3.6共存时yum install -y python2-pip alternatives --set python /usr/bin/python2我在最近一次部署中就遇到了python-crypto组件冲突最终通过以下命令解决yum remove -y python2-crypto python2-cryptography yum install -y python2-cryptography3. OpenStack组件安装Packstack实战技巧仓库配置阶段建议使用Train版本这是目前CentOS 7上最稳定的版本。安装时要注意顺序yum -y install centos-release-openstack-train yum -y update yum -y install openstack-packstack应答文件生成是避免安装失败的关键。推荐先生成模板再修改而不是直接使用--allinone参数packstack --gen-answer-fileanswers.txt需要重点检查的几个参数CONFIG_NEUTRON_OVS_BRIDGE_MAPPINGSphysnet1:br-exCONFIG_NEUTRON_OVS_BRIDGE_IFACESbr-ex:eth0CONFIG_PROVISION_DEMOn生产环境建议关闭演示项目安装过程监控时不要被表面现象迷惑。Packstack的输出日志可能卡在某个阶段长达20分钟特别是在构建数据库时此时查看/var/log/packstack/下的详细日志才是正确做法。我遇到过多次表面卡顿实际后台正常运行的状况。4. 故障排查常见问题与解决方案网络问题是最常见的故障点。当Dashboard无法访问时按这个顺序检查确认防火墙已关闭systemctl status firewalld检查Neutron服务状态openstack network agent list验证OVS网桥配置ovs-vsctl show认证失败通常由以下原因导致时间不同步参考第2章chrony配置Memcached服务异常systemctl restart memcachedhttpd服务崩溃查看/var/log/httpd/error_log存储配置问题有个经典案例当Cinder卷创建失败时需要检查LVM卷组是否建立vgsiSCSI target是否运行systemctl status target权限配置是否正确ls -Z /var/lib/cinder/最近帮学员排查的一个典型故障是QEMU进程权限问题表现为实例无法创建。最终解决方案是在/etc/libvirt/qemu.conf中设置user root group root dynamic_ownership 05. 后期维护与优化建议日常维护需要建立检查清单每日检查openstack service list所有服务应为up每周任务nova-manage db archive_deleted_rows清理数据库每月任务cinder-backup --backup_volume卷备份验证性能调优可以从这几个方面入手修改MySQL配置/etc/my.cnf增加连接数调整Apache的MaxKeepAliveRequests为QEMU进程分配固定的CPU核心备份策略建议采用分层方案关键配置文件/etc/nova, /etc/neutron等目录数据库定期dumpmysqldump -uroot -p nova nova_backup.sql完整系统镜像使用LVM快照我在生产环境中发现一个实用技巧定期运行packstack --cleanup可以释放残留资源但要注意这会删除所有临时数据。建议在执行前备份/etc/packstack/目录下的应答文件。