本文系统讲解 OpenStack 云操作系统的核心概念、架构设计与核心组件,并基于 CentOS7 环境提供双节点(控制节点 + 计算节点)完整部署流程,覆盖认证、镜像、计算、网络、存储全服务配置,附详细命令与网络调优步骤,适合云计算入门与运维从业者参考。

一、OpenStack 基础理论:什么是云操作系统

1.1 OpenStack 的定义与定位

OpenStack 是一款开源的数据中心级云操作系统,它统一管理数据中心内的计算、存储、网络三大核心资源池,为管理员提供可视化仪表盘(Dashboard)实现资源全局管控,最终用户则可以通过 Web 界面或 API 按需申请、使用云资源。

需要明确的是:OpenStack 只是云计算系统的控制面,而非完整的云体系。一套完整的云平台还包含底层硬件基础设施、虚拟化层(KVM/QEMU 等)、运营运维系统(计费、监控、BSS/OSS)等,OpenStack 承担的是资源调度与服务编排的核心控制角色。

1.2 虚拟化 vs 云计算:核心区别

很多初学者容易混淆虚拟化与云计算,二者核心目标与能力边界有本质差异:

  • 虚拟化:核心能力是将物理硬件资源抽象分配给多台虚拟机,本质是提升硬件利用率,重点在于「资源分配」。
  • 云计算:基于虚拟化资源池对外提供标准化服务,具备多租户隔离、按需使用、按量计费的特性,重点在于「交付服务」。

云也被视作一种操作系统,因为它完整实现了资源抽象、资源分配与负载调度、应用生命周期管理、系统运维与人机交互等核心操作系统能力。

1.3 OpenStack 三大设计理念

OpenStack 能成为开源云平台的事实标准,离不开其核心设计思想:

  1. 开放:完全开源,且最大程度复用已有成熟开源项目,不重复造轮子。
  2. 灵活:不绑定任何不可替代的私有商业组件,大量采用插件化架构设计,允许厂商自定义驱动与能力扩展。
  3. 可拓展:由多个相互独立的项目组成,每个项目包含多个独立服务组件;采用无中心、无状态架构,天然支持高可用与水平扩容。

二、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 申请创建虚拟机的完整流程,清晰体现了组件间的协作关系:

  1. 用户通过 Horizon 发起创建请求,请求先经过 Keystone 完成身份鉴权
  2. Nova API 接收请求,复杂创建请求转交 Nova Conductor 处理
  3. Nova Scheduler 根据调度算法,从资源池中选择一台空闲的计算节点
  4. 计算节点的 Nova Compute 调用 Hypervisor(如 KVM)执行虚拟机创建
  5. 过程中同步调用 Neutron 分配虚拟网络与 IP、调用 Cinder 挂载数据卷、调用 Glance 获取系统镜像
  6. 所有资源分配完成后,虚拟机进入运行状态

三、双节点部署前置准备

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 存储对接、高可用集群部署等内容,逐步构建完整的云平台运维能力。

更多推荐