OpenStack部署实战:从零搭建最小可用私有云环境
如果你正准备第一次动手部署 OpenStack,最直接的路径是:用 CentOS 7 虚拟机 + Packstack 工具跑通一个最小化环境。
本文按这个思路,从系统准备到登录 Dashboard 完整走一遍,重点给出可复制的命令和常见报错处理。
环境准备:一台能联网的 CentOS 7 虚拟机
OpenStack 对资源有最低要求,实验环境建议至少 4 核 CPU、8GB 内存、60GB 磁盘,并分配一个可访问外网的网卡。
如果内存不足 8GB,Packstack 安装过程中容易因服务启动超时而失败。
系统层面需要先做三件事:
- 关闭 SELinux 和防火墙,避免安装过程中端口被拦截。
- 配置主机名和 hosts 解析,让各服务能通过名称互通。
- 启用 EPEL 源并更新系统。
对应命令如下:
# 关闭 SELinux
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
# 关闭 firewalld
systemctl stop firewalld
systemctl disable firewalld
# 设置主机名(示例:openstack.local)
hostnamectl set-hostname openstack.local
echo '192.168.1.100 openstack.local' >> /etc/hosts
# 安装 EPEL 并更新
yum install -y epel-release
yum update -y
执行完成后用 hostname 和 ping openstack.local 确认主机名与解析正常。
安装 Packstack 并生成应答文件
Packstack 是 OpenStack 官方提供的快速部署工具,适合单节点实验环境。
安装和生成配置文件的命令:
yum install -y openstack-packstack
packstack --gen-answer-file=answer.txt
生成的 answer.txt 是安装参数文件,重点修改以下几项:
CONFIG_DEFAULT_PASSWORD=YourStrongPassword
CONFIG_NEUTRON_ML2_TYPE_DRIVERS=flat,vxlan
CONFIG_NEUTRON_ML2_TENANT_NETWORK_TYPES=vxlan
CONFIG_NEUTRON_ML2_MECHANISM_DRIVERS=openvswitch
CONFIG_NEUTRON_OVS_BRIDGE_MAPPINGS=extnet:br-ex
CONFIG_NEUTRON_OVS_BRIDGE_IFACES=br-ex:eth0
CONFIG_PROVISION_DEMO=n
将 CONFIG_DEFAULT_PASSWORD 换成强密码,
把 eth0 替换成你实际的网卡名(用 ip addr 查看)。CONFIG_PROVISION_DEMO=n 表示不创建演示用户,
减少干扰。
修改完成后执行安装:
packstack --answer-file=answer.txt
安装过程约 20–40 分钟,取决于网络和机器性能。
终端会输出每一步的进度,如果中途报错,先看 /var/log/packstack/ 下对应的日志文件。
验证服务与登录 Dashboard
安装结束后,检查关键服务是否处于运行状态:
systemctl status openstack-nova-api
systemctl status openstack-glance-api
systemctl status neutron-server
systemctl status openstack-keystone
如果某个服务显示 failed,用 journalctl -u 服务名 -xe 查看详细报错。
常见原因包括数据库连接失败、消息队列未启动或配置文件路径错误。
通过命令行验证身份服务:
source /root/keystonerc_admin
openstack user list
openstack service list
能正常列出用户和服务,说明 Keystone 认证可用。
浏览器访问 Dashboard 的地址通常是 http://<你的IP>/dashboard,用户名 admin,密码为应答文件中设置的值。
登录后能看到“项目”和“管理员”菜单,即表示基础环境部署成功。
容易踩坑的地方
网络配置错误是新手遇到最多的失败原因。CONFIG_NEUTRON_OVS_BRIDGE_IFACES 里的网卡名必须和实际一致,写错会导致 br-ex 网桥无法创建,实例拿不到 IP。
修改前先用 ip addr 确认。
内存不足会让 Nova 或 Neutron 服务反复重启。
实验环境至少给 8GB,如果只有 4GB,可以在应答文件中关闭不需要的组件(如 Cinder、Swift),但功能会受限。
DNS 解析不稳定会导致 yum 安装中途失败。
建议提前配置好可用的 DNS,或使用本地镜像源。
安装过程中不要手动中断,否则残留的配置需要手动清理才能重装。
重复安装前需要清理旧配置,否则会因端口占用或数据库已有数据而报错。
可以重装系统或手动卸载相关包,不熟悉的情况下重新建虚拟机更省时间。
部署完成后建议做的检查
在正式使用前,用下面几条命令确认基础功能可用:
openstack network list
openstack image list
openstack flavor list
如果列表为空,说明对应服务尚未初始化数据,可以上传一个测试镜像验证 Glance 是否正常。
上传命令参考:
openstack image create --disk-format qcow2 --container-format bare --file cirros.qcow2 cirros
镜像状态变为 active 后,就可以尝试创建实例。
第一次创建实例建议用最小的 flavor,观察是否能正常分配到 IP 并进入运行状态。
常见问题
Packstack 安装到一半报错退出怎么办?
先查看 /var/log/packstack/ 目录下最新的日志文件,定位具体失败的服务。常见原因是某个包下载失败或端口被占用。修复后重新运行 packstack --answer-file=answer.txt,工具会尝试继续未完成的步骤。
Dashboard 打不开但服务显示正常?
检查 HTTP 服务是否运行:systemctl status httpd。如果 httpd 正常,再看防火墙是否真的关闭,以及浏览器访问的 IP 是否正确。
实例能创建但无法访问外网?
通常是 br-ex 网桥或安全组规则的问题。用 ovs-vsctl show 查看网桥状态,确认物理网卡已加入 br-ex。安全组需要放行 ICMP 和 SSH 规则。
能否用于生产环境?
本文演示的是单节点实验部署,适合学习和功能验证。生产环境需要考虑高可用、多节点、存储后端和监控告警,建议参考官方架构文档做进一步规划。