2023 年我参加了全国职业技能大赛「私有云搭建」赛项,这篇文章是我从备战到实践总结出的 OpenStack 平台搭建完整流程。

无论你是准备比赛,还是想学习企业级私有云搭建,这篇都能帮你少走弯路。


背景

全国职业技能大赛「私有云」赛项主要考察选手在规定时间内,基于 CentOS 7.9 + 先电 IaaS 平台(OpenStack Train 版)搭建完整私有云平台的能力。

比赛的核心是速度和准确性——不是让你从零编译 OpenStack,而是用官方提供的脚本快速部署,然后在平台上完成各类题目。

技术栈:

  • 操作系统:CentOS 7.9(CentOS-7-x86_64-DVD-2009.iso)
  • IaaS 平台:先电 chinaskills_cloud_iaas_v2.0.3(基于 OpenStack Train 版)
  • 架构:双节点(Controller 控制节点 + Compute 计算节点)

一、比赛环境说明

比赛现场一般提供三个资源:

资源 说明
OpenStack 平台 提供 IP/账号/密码,登录后创建云主机答题
答题平台 提供题目,必须提交当前题才能做下一题,提交后立即显示得分
文件服务器 提供所有软件包(yum 源基于 http 搭建)

答题规则关键点:

  1. 答题平台提交时需要填 用户名(root)、密码(000000)、IP 地址
  2. 判分机制:只要提交时虚拟机上有正确答案就得分,即使后面搭建失败也不影响已得分
  3. 搭建失败不用慌,快速搭建到题目需要的部分即可

二、基础配置

2.1 配置主机名和域名解析

1
2
3
4
5
6
7
8
9
10
# 控制节点
[root@controller ~]# hostnamectl set-hostname controller
# 计算节点
[root@compute ~]# hostnamectl set-hostname compute

# 两台都配置 hosts 解析
[root@controller ~]# cat >> /etc/hosts << EOF
10.60.3.7 controller
10.60.3.21 compute
EOF

云主机默认没有 selinux 和防火墙,不用处理。

三、搭建 YUM 源

比赛用文件服务器通过 http 挂载 yum 源。假设文件服务器 IP 是 10.60.2.20

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@controller ~]# cat > /etc/yum.repos.d/http.repo << EOF
[centos]
name=centos
baseurl=http://10.60.2.20/centos
gpgcheck=0
enabled=1
[iaas]
name=iaas
baseurl=http://10.60.2.20/iaas/iaas-repo
gpgcheck=0
enabled=1
EOF

# 验证 yum 源
[root@controller ~]# yum clean all && yum repolist

正常会显示 centosiaas 两个源,包数量约 5000+。

1
2
# 传给计算节点
[root@controller ~]# scp /etc/yum.repos.d/http.repo compute:/etc/yum.repos.d/

四、修改环境变量 openrc.sh

先安装 iaas 主包:

1
[root@controller ~]# yum install openstack-iaas -y

4.1 批量去除注释

1
[root@controller ~]# sed -i -e 's/^#//'g /etc/openstack/openrc.sh

4.2 批量修改密码为 000000

1
[root@controller ~]# sed -i -e 's/PASS=/PASS=000000/'g /etc/openstack/openrc.sh

4.3 关键参数修改

打开 /etc/openstack/openrc.sh,重点改这几个:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#--------------------system Config--------------------##
HOST_IP=10.60.3.7 # 控制节点 IP(改成你的)
HOST_PASS=000000 # 控制节点密码
HOST_NAME=controller
HOST_IP_NODE=10.60.3.21 # 计算节点 IP(改成你的)
HOST_PASS_NODE=000000
HOST_NAME_NODE=compute

#--------------------Chrony Config-------------------##
network_segment_IP=10.60.3.0/24 # 时间同步网段

#--------------------Neutron Config-------------------##
INTERFACE_NAME=eth1 # ⚠️ 第二张网卡!不要用正常通信的网卡
Physical_NAME=provider
minvlan=1
maxvlan=1000

#--------------------Cinder Config--------------------##
BLOCK_DISK=vdb1 # Cinder 挂载点(需先分区)

#--------------------Swift Config---------------------##
OBJECT_DISK=vdb2 # Swift 挂载点
STORAGE_LOCAL_NET_IP=10.60.3.21 # 计算节点 IP

#--------------------Manila Config----------------##(v2.0.3 新增)
SHARE_DISK=vdb3 # 文件共享挂载点
1
2
# 传给计算节点
[root@controller ~]# scp /etc/openstack/openrc.sh compute:/etc/openstack/openrc.sh

五、计算节点分区

重要坑: 云主机用 cinder 挂载的硬盘启动后默认挂载在 /mnt 下,分区前必须先 umount

这个版本多了 manila 文件共享服务,需要分三个区:

1
2
3
4
5
6
7
8
9
10
# 先取消挂载
[root@compute ~]# umount /mnt

# 分区(fdisk /dev/vdb)
[root@compute ~]# fdisk /dev/vdb
# 依次输入:
n → 回车三下 → +15G # vdb1 给 cinder
n → 回车三下 → +15G # vdb2 给 swift
n → 回车三下 → +15G # vdb3 给 manila
w # 保存

验证:

1
2
3
4
5
6
7
8
[root@compute ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 253:0 0 100G 0 disk
└─vda1 253:1 0 100G 0 part /
vdb 253:16 0 50G 0 disk
├─vdb1 253:17 0 15G 0 part
├─vdb2 253:18 0 15G 0 part
└─vdb3 253:19 0 15G 0 part

六、脚本安装

6.1 初始化环境

两台节点都要执行:

1
2
[root@controller ~]# iaas-pre-host.sh
[root@compute ~]# iaas-pre-host.sh

必须重启! 脚本执行完会提示重启,否则 rabbitmq 服务会报错。重启后用 SSH 重新连接。

6.2 安装控制节点服务(按顺序!)

核心原则:先装完 Controller 所有服务,再装 Compute!顺序错了会出问题。

1
2
3
4
5
6
7
8
9
[root@controller ~]# iaas-install-mysql.sh
[root@controller ~]# iaas-install-keystone.sh
[root@controller ~]# iaas-install-glance.sh
[root@controller ~]# iaas-install-placement.sh # 新增,搭配 nova
[root@controller ~]# iaas-install-nova-controller.sh
[root@controller ~]# iaas-install-neutron-controller.sh
[root@controller ~]# iaas-install-dashboard.sh
[root@controller ~]# iaas-install-cinder-controller.sh
[root@controller ~]# iaas-install-swift-controller.sh

6.3 安装计算节点服务

控制节点全部装完后,再装计算节点:

1
2
3
4
[root@compute ~]# iaas-install-nova-compute.sh
[root@compute ~]# iaas-install-neutron-compute.sh
[root@compute ~]# iaas-install-cinder-compute.sh
[root@compute ~]# iaas-install-swift-compute.sh

七、验证平台

安装完成后,浏览器访问 Dashboard:

1
http://10.60.3.7/dashboard
  • 账号:admin
  • 密码:000000(或你在 openrc.sh 里设的 ADMIN_PASS)

能看到登录界面就说明基础平台搭建成功。

比赛实战经验

1. 时间分配

阶段 建议时间
环境准备 + YUM 源 10 分钟
openrc.sh 配置 5 分钟
分区 + 脚本初始化 10 分钟
安装平台服务 30-40 分钟
答题 剩余时间

2. 常见踩坑

脚本执行失败? 多数是环境变量未加载完就执行了下一步。解决:每个脚本执行前手动加载一次:

1
[root@controller ~]# source /etc/openstack/openrc.sh
问题 解决办法
脚本报错连不上数据库 检查 mysql 服务:systemctl status mariadb
nova 服务起不来 检查 rabbitmq:systemctl status rabbitmq-server
网络服务异常 确认 INTERFACE_NAME 填的是第二张网卡
搭到一半失败 不用重来,快速重跑失败的脚本即可

3. 2023 年参赛心得

参加这场比赛让我深刻理解了:

  • 私有云的完整架构:从认证(Keystone)到计算(Nova)、网络(Neutron)、存储(Cinder/Swift),每个组件各司其职
  • 运维的核心素养:细心、耐心、有序——一个配置错误可能导致整个平台起不来
  • 企业级思维:OpenStack 是很多企业私有云的基础,掌握它对未来职业发展很有价值

虽然比赛过程很紧张(4 小时内要搭完整个平台 + 答题),但这段经历让我对云计算有了系统的认识。

总结

组件 作用
Keystone 身份认证,所有服务的入口
Glance 镜像服务,管理虚拟机镜像
Nova 计算服务,管理虚拟机生命周期
Neutron 网络服务,SDN 网络管理
Cinder 块存储,给虚拟机挂硬盘
Swift 对象存储,类似 AWS S3
Dashboard Web 管理界面
Placement 资源调度(Train 版新增)

OpenStack 私有云搭建看起来步骤多,但理清逻辑后就是:配环境 → 装脚本 → 按顺序跑。掌握这套流程,不管比赛还是实际工作都能用上。


⬅️ 返回首页📖 更多文章