OpenStack 从理论到实操:架构解析 + Packstack 部署 Victoria 完整实战
摘要:OpenStack 是业界主流开源 IaaS 云平台,本文先梳理 OpenStack 核心理论、组件架构,再基于 CentOS‑Stream‑8,使用 Packstack 工具双节点部署 OpenStack Victoria,包含环境规划、模板制作、排坑要点,适合云计算初学者、运维做实验参考。
文章目录
- 前言
- 一、OpenStack 基础理论认知
- 1.1 OpenStack 到底是什么?
- 1.2 核心组件速览
- 1.3 创建一台 VM 发生了什么?
- 1.4 部署架构说明
- 二、实验环境规划:Packstack 双节点部署 OpenStack Victoria
- 2.1 硬件与网络规划
- 2.2 制作通用模板虚拟机
- 2.3 初始化 Controller 与 Compute 节点
- 2.4 Packstack 执行部署(在 controller 节点操作)
- 2.5 部署完成后配置与验证
- 三、实验踩坑总结
- 四、小结
前言
OpenStack 作为开源基础设施即服务 (IaaS) 云平台,2010 年由 NASA 和 Rackspace 联合发起,对标 AWS 公有云能力,可以统一管理虚拟机、裸金属、容器的计算、存储、网络资源池。
很多同学学习 OpenStack 会遇到两个痛点:看不懂各个组件之间的关系;跟着教程部署时源报错、网络冲突、部署卡死。 本文结合华为 OpenStack 架构课件 + 真实 Packstack 部署文档,把理论和实操结合起来,带你理解 OpenStack 架构同时,完成一套可复现的双节点实验环境。
一、OpenStack 基础理论认知

1.1 OpenStack 到底是什么?
很多人会混淆OpenStack、虚拟化、云计算三者概念:
OpenStack 设计三大理念:开放、灵活、可扩展。采用插件化、无中心、无状态架构;社区每年 4 月、10 月发布一个新版本。
1.2 核心组件速览
OpenStack 由多个独立项目(服务)组成,每个服务各司其职,相互配合完成云资源生命周期管理。
表格
| Horizon | 仪表盘服务 | Web 可视化 UI 面板,管理员 / 用户网页操作云平台 |
| Keystone | 认证服务 | 整个云的 “大门”,负责身份认证、权限授权、服务注册发现,几乎所有服务都依赖它 |
| Glance | 镜像服务 | 管理虚拟机镜像,实现镜像上传、注册、检索,为实例提供操作系统模板 |
| Nova | 计算服务 | 核心计算管理,调度虚拟机、裸金属、容器实例生命周期(创建、重启、删除) |
| Neutron | 网络服务 | 网络即服务,提供虚拟网络、子网、路由、DHCP,管理实例网络连接 |
| Cinder | 块存储服务 | 给虚拟机提供持久化云硬盘,可以挂载、卸载,数据独立于虚拟机生命周期 |
| Swift | 对象存储服务 | 分布式对象存储,适合存放图片、备份等非结构化海量数据 |
| Heat | 编排服务 | 通过模板文件批量编排、一键部署整套云资源,实现基础设施即代码 |
| Ceilometer | 计量服务 | 采集全平台资源监控数据,用于计费、资源统计、告警触发 |
1.3 创建一台 VM 发生了什么?

创建一台虚拟机实例,不是 Nova 单独完成,需要多个组件协同:
1.4 部署架构说明
实验环境可以单节点 All‑in‑One 部署;生产环境一般采用多控制节点实现高可用,搭配大量计算节点、独立存储节点。
OpenStack 内部通信机制:服务 API 进程接收用户请求,通过RabbitMQ消息队列做组件间消息传递,业务数据持久化到MariaDB/MySQL数据库。
二、实验环境规划:Packstack 双节点部署 OpenStack Victoria

说明:CentOS8 官方已经停止维护,软件包迁移至 centos‑vault 归档源,OpenStack Victoria 是 CentOS‑Stream‑8 支持的版本,Packstack 是 OpenStack 官方提供的快速部署工具,底层基于 Puppet 自动化安装配置各个组件。
2.1 硬件与网络规划
表格
| controller 控制节点 | CentOS‑Stream‑8 | 192.168.108.10 | 4 核 CPU,8G 内存,100G 磁盘,NAT 网卡 |
| compute 计算节点 | CentOS‑Stream‑8 | 192.168.108.11 | 4 核 CPU,8G 内存,100G 磁盘,NAT 网卡 |
- VMware NAT 网段:192.168.108.0/24,网关192.168.108.2
- 实验环境建议开启 CPU 虚拟化,否则 KVM 虚拟机无法正常启动。
2.2 制作通用模板虚拟机
先制作基础模板,后续直接完全克隆,减少重复配置工作。
⚠️ 常见报错:Curl error (6): Couldn't resolve host name,该报错为DNS 解析失败,不是源地址错误,需要检查虚拟机 DNS 配置。
rm -rf /etc/yum.repos.d/*
#写入完整openstack.repo阿里云vault源配置文件
cat <<EOF > /etc/yum.repos.d/openstack.repo
[centos-openstack-victoria]
name=CentOS 8 – OpenStack victoria
baseurl=https://mirrors.aliyun.com/centos-vault/8-stream/cloud/x86_64/openstack-victoria/
gpgcheck=0
enabled=1
[highavailability]
name=CentOS Stream 8 – HighAvailability
baseurl=https://mirrors.aliyun.com/centos-vault/8-stream/HighAvailability/x86_64/os/
gpgcheck=0
enabled=1
[nfv]
name=CentOS Stream 8 – NFV
baseurl=https://mirrors.aliyun.com/centos-vault/8-stream/NFV/x86_64/os/
gpgcheck=0
enabled=1
[rt]
name=CentOS Stream 8 – RT
baseurl=https://mirrors.aliyun.com/centos-vault/8-stream/RT/x86_64/os/
gpgcheck=0
enabled=1
[resilientstorage]
name=CentOS Stream 8 – ResilientStorage
baseurl=https://mirrors.aliyun.com/centos-vault/8-stream/ResilientStorage/x86_64/os/
gpgcheck=0
enabled=1
[extras-common]
name=CentOS Stream 8 – Extras packages
baseurl=https://mirrors.aliyun.com/centos-vault/8-stream/extras/x86_64/extras-common/
gpgcheck=0
enabled=1
[extras]
name=CentOS Stream \\$releasever – Extras
baseurl=https://mirrors.aliyun.com/centos-vault/8-stream/extras/x86_64/os/
gpgcheck=0
enabled=1
[centos-ceph-pacific]
name=CentOS – Ceph Pacific
baseurl=https://mirrors.aliyun.com/centos-vault/8-stream/storage/x86_64/ceph-pacific/
gpgcheck=0
enabled=1
[centos-rabbitmq-38]
name=CentOS-8 – RabbitMQ 38
baseurl=https://mirrors.aliyun.com/centos-vault/8-stream/messaging/x86_64/rabbitmq-38/
gpgcheck=0
enabled=1
[centos-nfv-openvswitch]
name=CentOS Stream 8 – NFV OpenvSwitch
baseurl=https://mirrors.aliyun.com/centos-vault/8-stream/nfv/x86_64/openvswitch-2/
gpgcheck=0
enabled=1
[baseos]
name=CentOS Stream 8 – BaseOS
baseurl=https://mirrors.aliyun.com/centos-vault/8-stream/BaseOS/x86_64/os/
gpgcheck=0
enabled=1
[appstream]
name=CentOS Stream 8 – AppStream
baseurl=https://mirrors.aliyun.com/centos-vault/8-stream/AppStream/x86_64/os/
gpgcheck=0
enabled=1
[powertools]
name=CentOS Stream 8 – PowerTools
baseurl=https://mirrors.aliyun.com/centos-vault/8-stream/PowerTools/x86_64/os/
gpgcheck=0
enabled=1
EOF
yum clean all
yum makecache
yum install -y bash-completion vim net-tools chrony open-vm-tools
cat >> /etc/hosts << EOF
192.168.108.10 controller
192.168.108.11 compute
EOF
sed -i '/^SELINUX=/cSELINUX=disabled' /etc/selinux/config
rm -rf /etc/ssh/ssh_host_*
cat /dev/null > /etc/machine-id
poweroff
2.3 初始化 Controller 与 Compute 节点
从模板完全克隆两台虚拟机,分别开机做初始化。
# controller执行
hostnamectl set-hostname controller
# compute执行
hostnamectl set-hostname compute
nmcli connection reload ens160
nmcli connection up ens160
- controller 节点:配置公网时间源,允许内网网段客户端同步时间
- compute 节点:直接同步 controller 节点时间
# 重启并开机自启
systemctl restart chronyd
systemctl enable chronyd
#验证
chronyc sources -v
NetworkManager 会和 OpenStack Neutron 网络组件冲突,必须停止 + 屏蔽
systemctl stop NetworkManager
systemctl disable NetworkManager
systemctl mask NetworkManager
2.4 Packstack 执行部署(在 controller 节点操作)
yum install -y openstack-packstack
packstack –gen-answer-file=answers.txt
CONFIG_HEAT_INSTALL=y
CONFIG_COMPUTE_HOSTS=192.168.108.10,192.168.108.11
CONFIG_NEUTRON_OVN_BRIDGE_IFACES=br-ex:ens160
CONFIG_PROVISION_DEMO=n
统一所有组件密码为 huawei(测试环境使用,生产环境严禁弱口令)
sed -i.bak -r 's/(.+_PW)=[0-9a-z]+/\\1=huawei/g' answers.txt
packstack –answer-file=answers.txt
⏱注意:部署卡在Testing if puppet apply is finished:192.168.108.10_controller.pp属于正常现象,该步骤耗时最长,约 40‑50 分钟,耐心等待,不要中断。
2.5 部署完成后配置与验证
systemctl start network
systemctl enable network
openstack complete >> /etc/bash_completion.d/complete
三、实验踩坑总结

cat > /etc/resolv.conf <<EOF
nameserver 223.5.5.5
nameserver 223.6.6.6
EOF
如果使用 NetworkManager 管理网卡,要修改网卡配置持久化 DNS,防止被覆盖。
四、小结
OpenStack 不是虚拟化软件,是管理底层虚拟化、存储、网络资源的 IaaS 云控制平台。 理论层面要理解各个组件分工和协同关系;实操层面,Packstack 适合快速搭建学习实验环境,但不直接用于生产,生产环境需要考虑高可用、安全加固、性能调优。
完成部署之后,可以尝试通过网页或者 CLI 创建镜像、网络、云硬盘,最终创建一台虚拟机,完整走完实例生命周期,加深对 OpenStack 的理解。
网硕互联帮助中心





评论前必须登录!
注册