OpenStack 云操作系统完整教程:核心原理 + 双节点一键脚本部署实战
一、文章前言
大家好,本文结合课堂 PPT 理论 + 企业实训脚本完整流程,系统讲解OpenStack 底层原理、核心组件协作、双节点(Controller+Compute)一键脚本部署全流程,适合云计算初学者、运维、高校实训学员。 OpenStack 是业界主流开源 IaaS 云操作系统,统一管理数据中心计算、存储、网络资源,支持多租户隔离、按需弹性扩容,广泛用于私有云、政企云平台搭建。本文分为两大模块:理论原理篇、上机部署实战篇,全部内容基于 CentOS7 一键 iaas 自动化脚本环境,步骤可复现。
二、OpenStack 基础理论入门
2.1 OpenStack 是什么?
OpenStack 是云操作系统,统一管控数据中心级计算、存储、网络资源池;管理员通过 Web 仪表盘统一管控资源,普通用户通过 Web 界面自助申请虚拟机、云硬盘、虚拟网络等资源。 架构分层定位:OpenStack 仅负责云控制面,底层硬件资源(服务器、存储、交换机)、虚拟化层 KVM/QEMU、计费运营系统为配套基础设施。
2.2 虚拟化 vs 云计算
- 虚拟化:核心是硬件资源切分,一台物理机虚拟多台虚拟机,提升硬件利用率,只解决资源分配问题;
- 云计算:在虚拟化基础上对外提供标准化服务,核心特性:多租户隔离、按需使用、按量计费、弹性伸缩。
2.3 OpenStack 三大设计理念
- 开放:完全开源,最大限度复用现有成熟开源项目;
- 灵活:无绑定私有闭源组件,全架构插件化,可替换数据库、虚拟化驱动;
- 可扩展:模块化独立项目、无中心化架构、无状态服务,天然支持高可用集群扩容。
2.4 OpenStack 整体分层架构
整体分为三层:底层硬件资源池、IaaS 核心服务层、PaaS 扩展服务层、统一公共基础组件。
1)公共基础组件(所有服务依赖)
- Keystone:统一认证鉴权中心,所有组件 API 调用都需要 Token 身份校验;
- Database:MySQL/GaussDB,持久化存储租户、虚拟机、网络、存储配置数据;
- Message Queue:RabbitMQ 消息队列,组件间异步通信核心。
2)IaaS 核心基础服务(必装五大组件)
表格
| 组件名称 | 服务中文名 | 核心作用 |
|---|---|---|
| Horizon | 仪表盘 | Web 可视化管理控制台,对接所有组件 API |
| Nova | 计算服务 | 管理虚拟机全生命周期(创建、开机、迁移、销毁) |
| Glance | 镜像服务 | 统一管理操作系统镜像,镜像文件后端存储在 Swift |
| Cinder | 块存储服务 | 提供持久化云硬盘、快照、备份,对接 SAN/LVM/Ceph |
| Neutron | 网络服务 | SDN 虚拟网络,二层交换、三层路由、DHCP、安全组、负载均衡 |
3)PaaS 扩展增值服务
- Swift:对象存储,存放镜像、文件、静态资源;
- Heat:资源编排,批量自动化创建云资源栈;
- Ceilometer:计量监控,采集资源使用量,对接计费系统;
- Trove:数据库云服务;Sahara:大数据集群服务;Ironic:裸金属管理。
2.5 创建一台虚拟机完整业务流程
用户登录 Horizon 页面创建云主机,组件协同流程:
- Keystone 校验用户账号、权限,下发访问令牌 Token;
- Neutron 分配虚拟网卡、子网、路由、安全组;
- Cinder 按需挂载云硬盘卷;
- Glance 调取操作系统镜像(镜像实体存储在 Swift 对象存储);
- Nova 调度器筛选空闲计算节点,下发指令至计算节点 nova-compute;
- 底层 KVM/QEMU 虚拟化监视器完成虚拟机创建与启动。
三、三大核心组件深度原理
3.1 Nova 计算核心组件(OpenStack 核心)
Nova 只管理虚拟机生命周期,不管理物理服务器硬件监控。
核心服务模块
- nova-api:接收用户 Web/API 请求,权限校验;
- nova-conductor:中间指令转发,隔离数据库访问;
- nova-scheduler:调度器,根据资源负载、亲和规则选择计算节点;
- nova-compute(计算节点):对接底层 Hypervisor(KVM),执行虚拟机创建、启停操作。
Nova 关键概念
- Instance/Server:云虚拟机实例;Flavor:虚拟机规格模板(CPU / 内存 / 磁盘);
- Quota:租户资源配额,限制最大虚拟机、硬盘数量;
- Host Aggregate:主机聚合,统一调度同硬件配置服务器;
- Server Group:虚拟机亲和 / 反亲和策略,主备业务分散部署。
3.2 Cinder 块存储服务
为云平台提供统一块存储接口,支持云硬盘创建、挂载、快照、扩容、备份,兼容 LVM、SAN、分布式存储 Ceph。
- cinder-api:接收存储操作请求;
- cinder-scheduler:筛选可用存储后端;
- cinder-volume:对接存储驱动,管理 LUN、iSCSI 存储链路; 虚拟机通过 iSCSI/FC 协议挂载远程块存储卷。
3.3 Neutron 网络 SDN 组件
实现网络即服务,为租户隔离虚拟网络,核心代理组件:
- neutron-server:网络 API 总入口;
- L2 Agent(所有计算节点部署):基于 OVS 虚拟交换机,处理二层 VLAN;
- L3 Agent:三层路由、外网网关、浮动 IP;
- DHCP Agent:自动分配虚拟机 IP 地址; 支持 VLAN、VXLAN 网络模式,实验环境采用 VLAN 租户网络。
四、双节点部署架构规划
4.1 硬件节点划分
- Controller 控制节点:20.0.0.10,部署 Keystone、Horizon、Nova 控制端、Glance、Neutron 控制端、Cinder 控制端、Swift 控制端;
- Compute 计算节点:20.0.0.20,部署 nova-compute、neutron 计算代理、cinder 存储客户端、Swift 计算端;
4.2 网卡规划(VMware 虚拟机环境)
- 外网网卡 ens33:NAT 模式,192.168.1.x 网段,访问互联网、Dashboard 页面;
- 管理内网网卡 ens34:仅主机模式,20.0.0.x 网段,OpenStack 组件内部通信、虚拟机流量。
4.3 网络流量划分
- OpenStack 内部服务网络:Controller 与 Compute 节点通信(20.0.0.0/24);
- 虚拟机业务流量网络:租户 VLAN 虚拟网络;
- 公网:外网 NAT 网段,虚拟机访问外网、外部访问云平台。
五、实战:一键脚本完整部署流程(CentOS7 iaas 自动化脚本)
5.0 前置卸载旧环境(清空残留)
两台节点分别执行卸载脚本,截图保存 9-1.jpg、9-2.jpg
bash
运行
# Controller & Compute 节点
/usr/local/bin/iaas-uninstall-all.sh
5.1 基础环境初始化(主机名 + 网卡配置)
- Controller 节点
bash
运行
hostnamectl set-hostname controller
# 查看网卡配置确认IP
cat /etc/sysconfig/network-scripts/ifcfg-ens34
exec bash
- Compute 节点
bash
运行
hostnamectl set-hostname compute
cat /etc/sysconfig/network-scripts/ifcfg-ens34
exec bash
执行结果截图:9-3.jpg、9-4.jpg
5.2 搭建本地 FTP 镜像源(Controller)
bash
运行
yum -y install vsftpd
vi /etc/vsftpd/vsftpd.conf
# 添加配置
anon_root=/opt/
# 开机自启
systemctl start vsftpd
systemctl enable vsftpd
Compute 节点验证 yum 源可用,两台节点截图 9-5.jpg、9-6.jpg
5.3 全局环境变量配置(核心配置文件 /etc/xiandian/openrc.sh)
两台节点安装配置工具并统一修改配置文件:
bash
运行
yum install iaas-xiandian -y
vi /etc/xiandian/openrc.sh
完整关键配置参数:
bash
运行
# 节点IP主机名
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
# 存储磁盘分区
BLOCK_DISK=sdb1
OBJECT_DISK=sdc1
STORAGE_LOCAL_NET_IP=20.0.0.10
# Cinder、Swift、Heat、Ceilometer数据库密码统一000000
5.4 系统基础预配置(两台节点同步执行)
bash
运行
# 主机环境初始化
iaas-pre-host.sh
reboot
重启后部署数据库服务:
bash
运行
# Controller
iaas-install-mysql.sh
# Compute
yum -y install MySQL-python
5.5 分步安装 OpenStack 核心组件(Controller 优先)
1)Keystone 认证服务(仅 Controller)
bash
运行
iaas-install-keystone.sh
2)Glance 镜像服务(仅 Controller)
bash
运行
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
3)Nova 计算服务
bash
运行
# Controller
iaas-install-nova-controller.sh
# Compute(控制节点安装完成后执行)
iaas-install-nova-compute.sh
4)Neutron 网络服务(重点)
- 安装服务,截图 9-7.jpg、9-8.jpg
bash
运行
# Controller
iaas-install-neutron-controller.sh
# Compute
iaas-install-neutron-compute.sh
- 修改网络为 VLAN 模式(Controller,截图 9-9.jpg)
bash
运行
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
- 创建 VLAN 租户网络(截图 9-10.jpg)
bash
运行
neutron net-create demo-net --tenant-id `openstack project list |grep -w admin |awk '{print $2}'` --provider:network_type vlan
5)Horizon Web 控制台(Controller)
bash
运行
iaas-install-dashboard.sh
宿主机 VMware 网卡 vmnet1 配置 IP 20.0.0.1/24,浏览器访问http://20.0.0.10/dashboard,账号 admin/000000 登录。
6)Web 端创建子网(截图 9-11.jpg、9-12.jpg)
项目→网络→demo-net→创建子网,参数:
- 子网地址:10.10.1.0/24,网关 10.10.1.1
- 启用 DHCP,地址池 10.10.1.2~10.10.100
- DNS 服务器:10.90.87.88
7)Cinder 块存储服务
bash
运行
# Controller 截图9-13.jpg
iaas-install-cinder-controller.sh
# Compute:修改yum源IP为20.0.0.10后执行,截图9-14.jpg
iaas-install-cinder-compute.sh
8)Swift 对象存储服务(部署收尾)
bash
运行
# Controller 截图9-15.jpg
iaas-install-swift-controller.sh
# Compute 截图9-16.jpg
iaas-install-swift-compute.sh
六、部署常见问题与避坑总结
- 节点互通失败:检查内网网卡 ens34 IP 是否 20.0.0.x,关闭防火墙、SELinux;
- Neutron 网络不通:确认 ml2 配置 tenant_network_types 为 vlan,重启 neutron-server 与 l3-agent;
- 虚拟机无法获取 IP:DHCP Agent 未正常运行,VLAN 区间 minvlan/maxvlan 配置冲突;
- 存储卷挂载失败:检查 sdb1/sdc1 磁盘分区未格式化,Cinder 后端驱动配置错误;
- Dashboard 无法访问:宿主机 vmnet1 网卡配置 20.0.0.1/24,关闭宿主机防火墙。
七、总结
- 理论层面:OpenStack 是模块化 IaaS 云操作系统,Keystone 统一鉴权,Nova/Cinder/Neutron 分别管理计算、块存储、虚拟网络,组件依靠 RabbitMQ 消息队列异步通信;
- 实操层面:采用 Controller+Compute 双节点架构,通过 iaas 一键脚本自动化部署,流程标准化、适合实训教学;
- 拓展方向:可基于本环境扩展多计算节点、Ceph 分布式存储、OpenStack 高可用集群、Heat 资源编排自动化运维。
更多推荐


所有评论(0)