995 字
5 分钟
RDO OpenStack 单节点部署(Rocky 版)

本文定位:OpenStack Rocky 单节点的 Packstack 一键部署,目标是快速跑起来用于学习/测试。 如果你想学手动逐组件部署原理,请看 [[posts/openstack-guide/index.md]] 第 3 章「Rocky 版手动搭建」。 Python SDK / RESTful API 运维开发见 [[posts/openstack-python-ops/index.md]]。

1. 环境#

操作系统CentOS Linux release 7.9.2009 (Core)
VMware 网卡类型VMnet8(NAT 模式)
内存建议8 GB 以上
磁盘建议系统盘 30 GB + 数据盘 25 GB(用于 Cinder)

注意:VMware 虚拟网卡需关闭 DHCP,避免和 OpenStack 内部网络冲突。

2. 网络配置#

修改网卡配置文件,设置静态 IP 和 DNS:

Terminal window
$ vi /etc/sysconfig/network-scripts/ifcfg-ens32
TYPE=Ethernet
BOOTPROTO=dhcp
DEFROUTE=yes
NAME=ens32
DEVICE=ens32
ONBOOT=yes
IPADDR=192.168.10.100
NETMASK=255.255.255.0
GATEWAY=192.168.10.2
DNS1=223.5.5.5

配置文件里 BOOTPROTO 应为 static,源文档此处写的是 dhcp,写成 dhcp 时下方的 IPADDR 等字段不会生效,请按需修改。

验证连通性:

Terminal window
$ ip a | grep ens
$ ping -c 3 aliyun.com
$ ping -c 3 223.5.5.5

3. 关闭安全策略#

Terminal window
$ systemctl stop firewalld && systemctl disable firewalld
$ setenforce 0
$ sed -i 's/SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
$ systemctl stop NetworkManager && systemctl disable NetworkManager

NetworkManager 必须关闭——OpenStack Neutron 会自己接管网络,两者并存会冲突。

4. 配置 YUM 仓库#

Terminal window
$ mv /etc/yum.repos.d/* /media/
$ curl -o /etc/yum.repos.d/aliyun.repo http://mirrors.aliyun.com/repo/Centos-7.repo
$ yum clean all && yum makecache

5. 修改主机名#

主机名必须是 FQDN 格式,否则 Packstack 会报错:

Terminal window
$ hostnamectl set-hostname rocky.openstack.org

6. 创建 Cinder 卷组#

OpenStack 块存储服务 Cinder 默认使用名为 cinder-volumes 的 LVM 卷组:

Terminal window
$ lsblk # 确认数据盘 sdb 存在
$ fdisk /dev/sdb # 创建一个主分区
$ partprobe
$ pvcreate /dev/sdb1
$ vgcreate cinder-volumes /dev/sdb1
$ vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 1 0 wz--n- <29.00g 0
cinder-volumes 1 0 0 wz--n- <25.00g <25.00g

卷组名 cinder-volumes 是 Packstack 默认值,改名需要同步修改应答文件。

7. 配置 OpenStack Rocky 源#

Terminal window
$ cat >> /etc/yum.repos.d/rocky.repo <<EOF
[centotack-rocky]
name=openstack-rocky
baseurl=https://mirrors.aliyun.com/centos/7/cloud/x86_64/openstack-rocky/
enabled=1
gpgcheck=0
[qemu-kvm]
name=qemu-kvm
baseurl=https://mirrors.aliyun.com/centos/7/virt/x86_64/kvm-common/
enabled=1
gpgcheck=0
EOF
$ yum clean all && yum makecache

8. 一键部署 OpenStack#

Terminal window
$ yum install -y openstack-packstack
$ packstack --allinone \
--provision-demo=n \
--os-neutron-ovs-bridge-mappings=extnet:br-ex \
--os-neutron-ovs-bridge-interfaces=br-ex:ens32 \
--os-neutron-ml2-type-drivers=vxlan,flat

参数说明:

  • --allinone:所有组件部署到同一台机器
  • --provision-demo=n:不创建示例资源(demo 项目、demo 用户等),保持干净
  • --os-neutron-ovs-bridge-mappings=extnet:br-ex:把外部网络 extnet 桥接到 OVS 网桥 br-ex
  • --os-neutron-ovs-bridge-interfaces=br-ex:ens32:把 br-ex 绑定到物理网卡 ens32
  • --os-neutron-ml2-type-drivers=vxlan,flat:启用 VXLAN 与 Flat 两种二层驱动

这一步耗时较长(半小时到一小时),中途不要中断网络。

部署完成后查看管理员凭证:

Terminal window
$ cat keystonerc_admin
unset OS_SERVICE_TOKEN
export OS_USERNAME=admin
export OS_PASSWORD='<部署生成的随机密码>'
export OS_REGION_NAME=RegionOne
export OS_AUTH_URL=http://192.168.10.128:5000/v3
export PS1='[\u@\h \W(keystone_admin)]\$ '
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_IDENTITY_API_VERSION=3

加载凭证:

Terminal window
$ source keystonerc_admin

9. 切换为 KVM 虚拟化#

默认 Nova 用 qemu 跑虚拟机,性能差。如果宿主机 CPU 支持嵌套虚拟化,切到 KVM:

Terminal window
$ sed -i 's/virt_type=qemu/virt_type=kvm/' /etc/nova/nova.conf
# 验证
$ grep "^virt_type=" /etc/nova/nova.conf
virt_type=kvm

修改硬件机型为 RHEL7 兼容型:

Terminal window
$ sed -i 's/#hw_machine_type=<None>/hw_machine_type=x86_64=pc-i440fx-rhel7.2.0/' \
/etc/nova/nova.conf
$ grep hw_machine_type /etc/nova/nova.conf
hw_machine_type=x86_64=pc-i440fx-rhel7.2.0

重启 Compute 服务生效:

Terminal window
$ systemctl restart openstack-nova-compute

10. Dashboard 创建外部网络#

浏览器访问 http://<节点IP>/dashboard,用 keystonerc_admin 中的账号登录后操作:

管理员 → 网络 → 网络 → 创建网络
· 名称:自拟,例如 ext-net
· 项目:admin
· 供应商网络类型:vxlan
· 勾选 "共享的" 与 "外部网络"
· 子网与子网详情:按实际网段填写

创建完成后,普通项目即可创建虚拟机并通过该外部网络出网。

11. 常见问题#

现象排查点
packstack 报主机名解析错误主机名必须 FQDN,并写入 /etc/hosts
部署中途网络断重新跑 packstack --answer-file=... 续传
Dashboard 502systemctl status httpd、查 /var/log/httpd/error_log
虚拟机创建失败找不到 vCPU宿主机 BIOS 未开 VT-x,或 VMware 未勾选嵌套虚拟化
vgs 看不到 cinder-volumes数据盘没分区或卷组名拼错

12. 小结#

  • Packstack 是 RDO 项目对 Puppet 的封装,是 CentOS 上跑 OpenStack 最快的方式
  • 网络部分是单节点部署最容易踩坑的环节:网卡名、桥接接口、ml2 驱动三者要对齐
  • 部署完成后优先做的事:切 KVM 虚拟化、源化 keystonerc_admin、建外部网络
  • 单节点仅适合学习/测试,生产环境请走多节点架构(控制 / 计算 / 存储分离)
RDO OpenStack 单节点部署(Rocky 版)
https://blog.xeu.asia/posts/openstack-rdo-allinone/
作者
Xeu
发布于
2026-05-21
许可协议
CC BY-NC-SA 4.0