【云原生运维】OpenStack 核心原理与双节点部署全解|从理论到实操的保姆级教程
本文系统讲解 OpenStack 云操作系统的核心概念、架构设计与核心组件,并基于 CentOS7 环境提供双节点(控制节点 + 计算节点)完整部署流程,覆盖认证、镜像、计算、网络、存储全服务配置,附详细命令与网络调优步骤,适合云计算入门与运维从业者参考。
一、OpenStack 基础理论:什么是云操作系统
1.1 OpenStack 的定义与定位
OpenStack 是一款开源的数据中心级云操作系统,它统一管理数据中心内的计算、存储、网络三大核心资源池,为管理员提供可视化仪表盘(Dashboard)实现资源全局管控,最终用户则可以通过 Web 界面或 API 按需申请、使用云资源。
需要明确的是:OpenStack 只是云计算系统的控制面,而非完整的云体系。一套完整的云平台还包含底层硬件基础设施、虚拟化层(KVM/QEMU 等)、运营运维系统(计费、监控、BSS/OSS)等,OpenStack 承担的是资源调度与服务编排的核心控制角色。
1.2 虚拟化 vs 云计算:核心区别
很多初学者容易混淆虚拟化与云计算,二者核心目标与能力边界有本质差异:
- 虚拟化:核心能力是将物理硬件资源抽象分配给多台虚拟机,本质是提升硬件利用率,重点在于「资源分配」。
- 云计算:基于虚拟化资源池对外提供标准化服务,具备多租户隔离、按需使用、按量计费的特性,重点在于「交付服务」。
云也被视作一种操作系统,因为它完整实现了资源抽象、资源分配与负载调度、应用生命周期管理、系统运维与人机交互等核心操作系统能力。
1.3 OpenStack 三大设计理念
OpenStack 能成为开源云平台的事实标准,离不开其核心设计思想:
- 开放:完全开源,且最大程度复用已有成熟开源项目,不重复造轮子。
- 灵活:不绑定任何不可替代的私有商业组件,大量采用插件化架构设计,允许厂商自定义驱动与能力扩展。
- 可拓展:由多个相互独立的项目组成,每个项目包含多个独立服务组件;采用无中心、无状态架构,天然支持高可用与水平扩容。
二、OpenStack 核心架构与组件详解
2.1 项目分层架构
OpenStack 采用分层设计,从下到上可分为三层:
基础公共组件层:为所有上层服务提供基础支撑,包括 Keystone(认证鉴权)、数据库(MySQL 等)、消息队列(RabbitMQ 等)。
IaaS 核心服务层:提供基础设施即服务核心能力,包括计算(Nova)、镜像(Glance)、块存储(Cinder)、网络(Neutron)、裸金属(Ironic)、可视化面板(Horizon)。
增值服务层(PaaS+):构建于 IaaS 之上的扩展服务,如 Trove(数据库服务)、Sahara(大数据服务)、Swift(对象存储)、Heat(编排服务)、Ceilometer(度量计费)等。
2.2 六大核心组件功能全解
(1)Keystone:身份认证服务
OpenStack 的统一身份中心,为所有组件提供认证、鉴权与服务目录功能。所有服务间的调用、用户的操作请求,都需要先通过 Keystone 完成身份校验,是整个平台的权限网关。
(2)Nova:计算服务
OpenStack 最核心的项目,负责虚拟机与其他计算资源的全生命周期管理(创建、开关机、迁移、销毁等)。
核心模块:nova-api(接收 REST 请求)、nova-scheduler(调度选节点)、nova-conductor(数据库交互代理)、nova-compute(计算节点执行,调用 Hypervisor)
不负责:物理主机自身管理、全系统状态监控
(3)Glance:镜像服务
提供云主机操作系统镜像的元数据管理与查询服务,镜像文件本身并不存储在 Glance 中,而是后端对接 Swift 对象存储等存储后端,Glance 只维护镜像的元数据索引。
(4)Cinder:块存储服务
为云平台提供统一接口、按需分配的持久化块存储(云硬盘),支持卷创建、快照、备份、类型管理。采用驱动化设计,可对接 LVM、Ceph、SAN 存储等各类后端存储设备。
(5)Neutron:网络服务
OpenStack 的网络核心,实现软件定义网络(SDN)能力,提供网络、子网、端口、安全组、路由等网络资源管理。
核心 Agent:
L2 Agent:二层网络服务,部署在所有计算节点,提供基础网络连通
L3 Agent:三层网络服务,提供路由、浮动 IP 等能力
DHCP Agent:为云主机自动分配 IP
Adv Services:高级服务(负载均衡、防火墙等)
(6)Horizon:仪表盘服务
OpenStack 的 Web 可视化管理界面,将所有组件的能力封装为图形化操作,降低用户使用门槛。
2.3 一台云主机的诞生:组件协作流程
用户在 Dashboard 申请创建虚拟机的完整流程,清晰体现了组件间的协作关系:
- 用户通过 Horizon 发起创建请求,请求先经过 Keystone 完成身份鉴权
- Nova API 接收请求,复杂创建请求转交 Nova Conductor 处理
- Nova Scheduler 根据调度算法,从资源池中选择一台空闲的计算节点
- 计算节点的 Nova Compute 调用 Hypervisor(如 KVM)执行虚拟机创建
- 过程中同步调用 Neutron 分配虚拟网络与 IP、调用 Cinder 挂载数据卷、调用 Glance 获取系统镜像
- 所有资源分配完成后,虚拟机进入运行状态
三、双节点部署前置准备
3.1 实验环境规划
本次采用双节点极简部署架构,适合入门学习:
| 节点角色 | 主机名 | 管理网 IP(内网) | 外网网卡 | 网卡模式 |
|---|---|---|---|---|
| 控制节点 | controller | 20.0.0.10 | ens33 | NAT 模式(192.168.1.x 段) |
| 计算节点 | compute | 20.0.0.20 | ens33 | NAT 模式(192.168.1.x 段) |
说明:管理网使用 ens34(仅主机模式),承载 OpenStack 内部服务通信;外网 ens33 承载公网访问与虚拟机流量。
3.2 旧环境卸载(重装场景)
如果环境中已有旧版本 OpenStack,先执行卸载:
# controller节点与compute节点均执行
/usr/local/bin/iaas-uninstall-all.sh
3.3 基础环境配置
步骤 1:设置主机名
# 控制节点执行
hostnamectl set-hostname controller
# 计算节点执行
hostnamectl set-hostname compute
# 执行后退出终端重新登录生效
步骤 2:确认网卡配置
检查网卡配置文件,确保双网卡 IP 配置正确:
ls /etc/sysconfig/network-scripts/ifcfg-ens*
cat /etc/sysconfig/network-scripts/ifcfg-ens33
cat /etc/sysconfig/network-scripts/ifcfg-ens34
步骤 3:搭建 FTP 本地源(控制节点)
# 控制节点安装vsftpd
yum -y install vsftpd
echo "anon_root=/opt/" >> /etc/vsftpd/vsftpd.conf
systemctl start vsftpd
systemctl enable vsftpd
# 计算节点验证yum源可用
yum list
步骤 4:安装部署工具与环境变量配置
双节点均安装部署工具包:
yum install iaas-xiandian -y
编辑环境变量配置文件 /etc/xiandian/openrc.sh,双节点保持一致:
# 主机信息
HOST_IP=20.0.0.10
HOST_NAME=controller
HOST_IP_NODE=20.0.0.20
HOST_NAME_NODE=compute
# 消息队列配置
RABBIT_USER=openstack
RABBIT_PASS=000000
# 数据库密码
DB_PASS=000000
# 域与账号密码
DOMAIN_NAME=demo
ADMIN_PASS=000000
DEMO_PASS=000000
# 各组件数据库密码与服务密码
KEYSTONE_DBPASS=000000
GLANCE_DBPASS=000000
GLANCE_PASS=000000
NOVA_DBPASS=000000
NOVA_PASS=000000
NEUTRON_DBPASS=000000
NEUTRON_PASS=000000
METADATA_SECRET=000000
# 网络配置
INTERFACE_NAME=ens33
Physical_NAME=provider
minvlan=101
maxvlan=201
# 存储组件配置
CINDER_DBPASS=000000
CINDER_PASS=000000
TROVE_DBPASS=000000
TROVE_PASS=000000
BLOCK_DISK=sdb1
SWIFT_PASS=000000
OBJECT_DISK=sdc1
STORAGE_LOCAL_NET_IP=20.0.0.10
# 编排与监控组件
HEAT_DBPASS=000000
HEAT_PASS=000000
CEILOMETER_DBPASS=000000
CEILOMETER_PASS=000000
AODH_DBPASS=000000
AODH_PASS=000000
四、OpenStack 核心组件分步部署
4.1 主机基础环境初始化
控制节点与计算节点同时执行基础环境配置脚本,完成后重启主机:
iaas-pre-host.sh
reboot
4.2 MySQL 数据库服务部署
# 控制节点执行,安装MySQL并初始化
iaas-install-mysql.sh
# 计算节点执行,安装数据库连接依赖
yum -y install MySQL-python
4.3 Keystone 认证服务部署
仅在控制节点执行,完成统一身份服务安装:
iaas-install-keystone.sh
4.4 Glance 镜像服务部署
仅在控制节点执行,安装镜像服务并上传测试镜像:
iaas-install-glance.sh
# 加载环境变量并上传CentOS镜像
source /etc/keystone/admin-openrc.sh
glance image-create --name "CentOS7.0" --disk-format qcow2 \
--container-format bare --progress < /opt/images/CentOS_6.5_x86_64_XD.qcow2
4.5 Nova 计算服务部署
# 控制节点执行,安装Nova控制端
iaas-install-nova-controller.sh
# 计算节点执行(控制端安装完成后再执行),安装Nova计算端
iaas-install-nova-compute.sh
4.6 Neutron 网络服务部署与 VLAN 配置
步骤 1:基础安装
# 控制节点执行
iaas-install-neutron-controller.sh
# 计算节点执行
iaas-install-neutron-compute.sh
步骤 2:配置 VLAN 网络模式
在控制节点执行,将租户网络类型切换为 VLAN 模式:
# 修改ML2插件配置,设置租户网络类型为vlan
openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 tenant_network_types vlan
systemctl restart neutron-server
# 配置外部网络网桥
openstack-config --set /etc/neutron/l3_agent.ini DEFAULT external_network_bridge br-ex
systemctl restart neutron-l3-agent
步骤 3:创建 VLAN 租户网络
neutron net-create demo-net --tenant-id \
`openstack project list |grep -w admin |awk '{print $2}'` \
--provider:network_type vlan
4.7 Dashboard 可视化面板部署
仅在控制节点执行:
iaas-install-dashboard.sh
部署完成后,将物理机 VMnet1 网卡 IP 设置为20.0.0.1/24,确保能 ping 通 20.0.0.10,即可通过浏览器访问 Dashboard:
访问地址:http://20.0.0.10/dashboard
账号:admin
密码:000000
4.8 Cinder 块存储服务部署
# 控制节点执行
iaas-install-cinder-controller.sh
# 计算节点执行
# 先修改yum源配置,将centos.repo中的IP改为管理网IP 20.0.0.10
sed -i 's/原IP/20.0.0.10/g' /etc/yum.repos.d/centos.repo
iaas-install-cinder-compute.sh
4.9 Swift 对象存储服务部署
# 控制节点执行
iaas-install-swift-controller.sh
# 计算节点执行,联机时输入控制节点root密码
iaas-install-swift-compute.sh
五、平台验证与基础使用
5.1 Dashboard 登录验证
浏览器访问管理地址,输入 admin 账号登录,成功进入控制台即表示核心组件部署正常。可在「管理员 - 系统信息」中查看各服务状态,确认 Nova、Neutron、Glance 等服务均为正常运行状态。
5.2 创建云子网
进入「项目 → 网络 → 网络」,找到已创建的demo-net
点击「创建子网」,填写子网参数:
子网名称:自定义(如 aaa)
网络地址:10.10.1.0/24
IP 版本:IPv4
网关 IP:10.10.1.1
下一步配置 DHCP:
激活 DHCP
分配地址池:10.10.1.2,10.10.1.100
DNS 服务器:10.90.87.88
提交完成子网创建,后续即可基于该网络创建云主机。
六、部署常见问题与避坑指南
节点间通信失败:优先关闭防火墙与 SELinux,检查管理网网卡配置,确保双节点能互相 ping 通主机名与 IP。
组件服务启动失败:查看对应服务日志(默认路径/var/log/[组件名]/),通常为消息队列连接异常、数据库密码错误或 Keystone 鉴权失败。
Dashboard 无法访问:检查 httpd 服务状态,确认 SELinux 已关闭,且浏览器所在网络能访问 20.0.0.0/24 网段。
云主机网络不通:检查计算节点 OVS 网桥状态,确认 VLAN 范围与物理交换机配置匹配,Neutron 各 Agent 运行正常。
七、总结
OpenStack 作为开源 IaaS 平台的标杆,其组件化、插件化的设计思想极具参考价值。本文从理论层面拆解了其核心架构与组件协作逻辑,同时提供了一套可复现的双节点部署流程,覆盖从基础环境到计算、网络、存储服务的完整搭建。
入门学习建议先掌握核心组件的职责与交互流程,再通过实操加深理解;进阶可深入研究 Neutron 网络模型、Ceph 存储对接、高可用集群部署等内容,逐步构建完整的云平台运维能力。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)