1. 环境准备:CentOS 7系统调优

在开始部署OpenStack Queens之前,我们需要对CentOS 7系统进行一系列优化配置。这些步骤看似基础,但往往决定了后续部署的成败。我在实际项目中遇到过多次因为基础环境没配好,导致OpenStack安装失败的案例。

首先确认系统版本和网络配置。执行cat /etc/redhat-release确认系统版本为CentOS 7.6以上。网络配置建议使用静态IP,编辑/etc/sysconfig/network-scripts/ifcfg-ens33(网卡名可能不同)确保以下关键参数:

BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8

接着处理主机名解析问题。我发现很多安装错误都源于主机名解析失败。建议在/etc/hosts中添加本机IP和主机名的映射,例如:

192.168.1.100 controller.example.com controller

安全策略调整是另一个重点。OpenStack需要关闭防火墙和SELinux:

systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

网络服务切换也容易踩坑。CentOS 7默认的NetworkManager与OpenStack存在兼容问题,需要切换为传统network服务:

systemctl stop NetworkManager
systemctl disable NetworkManager
systemctl enable network
systemctl restart network

最后执行系统更新:

yum update -y
reboot

2. 软件源配置与依赖安装

OpenStack Queens的软件源配置是个技术活。我推荐使用RDO仓库,这是Red Hat官方维护的OpenStack发行版,稳定性有保障。

先安装基础仓库:

yum install -y centos-release-openstack-queens

很多新手会卡在yum-config-manager命令缺失上。这是因为系统默认没有安装yum-utils工具包:

yum install -y yum-utils
yum-config-manager --enable centos-openstack-queens

为了获取最新稳定版的组件,我们还需要添加RDO的Trunk仓库。这个步骤很多教程会忽略,但实测对解决依赖冲突很有帮助:

cd /etc/yum.repos.d/
curl -O https://trunk.rdoproject.org/centos7/delorean-deps.repo
curl -O https://trunk.rdoproject.org/centos7/current-passed-ci/delorean.repo

安装EPEL仓库也很关键,它为OpenStack提供了许多必要的依赖包:

yum install -y epel-release

更新所有软件包(注意这可能需要较长时间):

yum update -y
reboot

3. Packstack安装与配置

Packstack是OpenStack的自动化部署工具,特别适合快速搭建all-in-one环境。但直接运行packstack --allinone往往会遇到各种问题,这里分享几个实用技巧。

首先安装Packstack本体:

yum install -y openstack-packstack

生成应答文件是个好习惯,可以预先修改配置参数:

packstack --gen-answer-file=answers.txt

我建议修改应答文件中的这几个关键参数:

CONFIG_SWIFT_INSTALL=n
CONFIG_CEILOMETER_INSTALL=n
CONFIG_AODH_INSTALL=n
CONFIG_GNOCCHI_INSTALL=n

这些组件在测试环境中通常不需要,禁用后可以大幅缩短安装时间。第一次部署时,我还建议启用debug模式以便排查问题:

packstack --answer-file=answers.txt --debug

安装过程通常需要30-90分钟,取决于网络速度和硬件性能。如果中途报错,不要急着重装。先检查/var/log/packstack下的日志文件,常见问题有:

  1. 网络连接超时(更换软件镜像源)
  2. 内存不足(至少需要8GB)
  3. 主机名解析失败(检查/etc/hosts)

4. 部署后检查与故障排除

安装完成后,首先验证各服务状态:

systemctl list-units --type=service | grep openstack

检查网络命名空间是否创建成功:

ip netns list

Dashboard访问问题是最常见的。首先确认Apache服务正常运行:

systemctl status httpd

获取管理员凭证:

cat /root/keystonerc_admin

如果无法访问Dashboard,检查防火墙规则:

iptables -L -n | grep 80

对于Horizon登录失败的情况,可以尝试重置密码:

keystone-manage flush_memcache
systemctl restart httpd

存储服务验证也很重要:

source /root/keystonerc_admin
openstack volume service list

5. 生产环境优化建议

虽然all-in-one部署适合测试,但如果要用于生产环境,还需要进行以下优化:

  1. 数据库分离:将MySQL迁移到独立服务器
  2. 消息队列优化:调整RabbitMQ参数
  3. 日志集中管理:配置ELK收集各组件日志
  4. 监控告警:集成Prometheus和Grafana
  5. 备份策略:定期备份数据库和配置文件

性能调优方面,我建议优先调整这些参数:

  • Nova的worker数量
  • Neutron的DHCP租期
  • Glance的缓存大小
  • Keystone的token过期时间

硬件配置建议:

  • 控制器节点:16核CPU/32GB内存/500GB SSD
  • 计算节点:根据虚拟机需求配置
  • 网络节点:10G网卡做bonding

6. 日常维护与升级

OpenStack的日常维护需要注意以下几点:

日志检查命令:

journalctl -u nova-api -f
tail -f /var/log/neutron/server.log

服务重启的正确顺序:

  1. 数据库服务
  2. 消息队列
  3. 认证服务
  4. 网络服务
  5. 计算服务

小版本升级步骤:

yum clean all
yum update -y
openstack-service restart

数据备份策略示例:

mysqldump -uroot -p --all-databases > openstack.sql
crontab -e
0 3 * * * /path/to/backup_script.sh

我在实际运维中发现,定期执行这些操作可以预防90%的问题:

  • 每月清理一次数据库
  • 每周检查磁盘空间
  • 每天查看关键服务状态
  • 监控消息队列积压情况

更多推荐