OpenStack Train 部署实战:从零构建多节点私有云
·
1. OpenStack Train 部署前的关键准备
第一次部署OpenStack时,我在时区配置上栽过跟头。时区设置错误导致日志时间全部错乱,排查问题时差点让我崩溃。所以现在每次部署前,我都会反复确认所有节点的时区设置为Asia/Shanghai。
1.1 硬件规划与节点划分
生产环境中建议至少准备三台物理服务器:
- 控制节点 :16核CPU/32GB内存/200GB系统盘+100GB数据盘
- 计算节点 :根据虚拟机密度配置,建议32核CPU起/64GB内存/系统盘+高速SSD存储
- 存储节点 :大容量硬盘阵列,建议使用RAID 10保障数据安全
特别注意:所有节点需要配置时钟同步(NTP),时间不同步会导致认证服务异常。我在实际项目中遇到过Keystone认证失败的问题,最后发现是计算节点时间比控制节点快了3分钟。
1.2 操作系统配置要点
以CentOS 7为例,这些配置直接影响后续服务部署:
# 关闭SELinux(避免权限问题)
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
# 关闭防火墙(OpenStack各组件间需要大量端口通信)
systemctl stop firewalld
systemctl disable firewalld
# 配置静态IP(示例)
cat > /etc/sysconfig/network-scripts/ifcfg-eth0 <<EOF
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=none
IPADDR=10.0.19.133
PREFIX=24
GATEWAY=10.0.19.254
DNS1=8.8.8.8
EOF
1.3 软件源与依赖安装
Train版本对软件版本有严格要求,必须使用官方指定源:
# 添加OpenStack Train源
yum install centos-release-openstack-train -y
# 安装基础工具
yum install -y python-openstackclient openstack-selinux
# 解决常见依赖冲突(特别是qpid-proton版本问题)
yum install -y python2-qpid-proton-0.26.0-2.el7.x86_64
2. 核心服务部署实战
2.1 Keystone认证服务
Keystone就像OpenStack的"身份证系统",所有服务都要在这里注册。部署时最容易出错的是Fernet令牌配置:
# 初始化密钥库(务必备份这三个目录)
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
# 引导服务时注意URL必须包含/v3
keystone-manage bootstrap --bootstrap-password Mss123456 \
--bootstrap-admin-url http://controller:5000/v3/ \
--bootstrap-internal-url http://controller:5000/v3/ \
--bootstrap-public-url http://controller:5000/v3/ \
--bootstrap-region-id RegionOne
验证服务是否正常:
openstack --os-auth-url http://controller:5000/v3 \
--os-project-domain-name Default --os-user-domain-name Default \
--os-project-name admin --os-username admin token issue
2.2 Glance镜像服务
上传镜像时遇到过磁盘格式识别错误的问题,后来发现必须明确指定格式:
glance image-create --name "CentOS-7" \
--file CentOS-7-x86_64-GenericCloud.qcow2 \
--disk-format qcow2 --container-format bare \
--visibility=public
生产环境建议配置多后端存储,将频繁访问的系统镜像放在SSD存储,大容量镜像放在普通硬盘。
2.3 Nova计算服务
计算节点部署后务必检查虚拟化支持:
egrep -c '(vmx|svm)' /proc/cpuinfo # 返回值应≥1
如果返回0,需要在/etc/nova/nova.conf中强制指定虚拟化类型:
[libvirt]
virt_type = qemu # 对于没有硬件虚拟化的环境
3. 网络与存储配置
3.1 Neutron网络服务
网络规划是OpenStack最复杂的部分之一。我的经验是:
- Provider网络 :用于连接外部网络(如互联网)
- Self-service网络 :租户内部网络,通过VXLAN实现隔离
关键配置示例:
[ml2]
type_drivers = flat,vlan,vxlan
tenant_network_types = vxlan
mechanism_drivers = linuxbridge,l2population
[ml2_type_vxlan]
vni_ranges = 1:1000
3.2 Cinder块存储
生产环境一定要配置多路径存储,我吃过单点故障的亏:
# 创建LVM卷组
pvcreate /dev/sdb
vgcreate cinder-volumes /dev/sdb
# 配置多路径(如果使用SAN存储)
yum install -y device-mapper-multipath
mpathconf --enable --with_multipathd y
4. 运维与问题排查
4.1 服务状态检查
这套命令组合能快速定位问题:
# 检查所有服务状态
openstack compute service list
openstack network agent list
# 查看具体服务日志
journalctl -u nova-api -f # 实时查看Nova API日志
4.2 常见故障处理
问题1 :虚拟机启动失败,报"No valid host was found"
- 检查计算节点资源是否充足
- 确认调度器日志/var/log/nova/nova-scheduler.log
问题2 :网络连通性异常
- 检查Linux网桥:brctl show
- 验证安全组规则:openstack security group rule list
问题3 :镜像上传失败
- 检查Glance存储目录权限
- 确认磁盘空间:df -h /var/lib/glance
5. 生产环境优化建议
经过多个项目实践,这些优化措施效果显著:
- 数据库优化 :为MariaDB配置innodb_buffer_pool_size(建议物理内存的70%)
- 消息队列 :RabbitMQ开启镜像队列防止消息丢失
- 日志管理 :统一接入ELK栈,方便问题追踪
- 监控告警 :Prometheus+Granfana监控关键指标
最后提醒:部署完成后立即备份/etc目录和数据库,我在一次误操作后靠这个习惯挽回了整个集群。
更多推荐
所有评论(0)