OpenStack Victoria双节点实战|Packstack一键部署(CentOS‑Stream‑8)+华为云ECS实操

OpenStack Victoria双节点实战|Packstack一键部署(CentOS‑Stream‑8)+华为云ECS实操

引言

本篇适合云计算运维入门新手,分为两大实操部分:第一部分在VMware Workstation环境,使用Packstack工具一键部署OpenStack‑Victoria双节点集群(控制节点+计算节点);第二部分讲解华为云ECS弹性云服务器的创建流程,弄懂公有云实例关键概念。读完本文你将学会:

  1. 制作OpenStack模板虚拟机,完成模板机环境初始化,学会VMware完整克隆虚拟机;
  2. 双节点环境配置:静态IP、主机名、hosts解析、chrony时间同步、关闭SELinux;
  3. Packstack应答文件修改,一键自动化部署OpenStack,访问Horizon仪表盘;
  4. 理解公有云ECS核心概念:计费模式、区域Region、可用区AZ、镜像、安全组;
  5. 完整实操:华为云控制台创建ECS实例,登录与基础管理。

全部来自课堂实操,本地电脑安装VMware Workstation即可做OpenStack实验;ECS部分只需要浏览器访问华为云控制台,不需要本地虚拟机。

前置说明

✅ 环境

  1. OpenStack实验:VMware Workstation17.5;CentOS‑Stream‑8 minimal镜像;至少16G物理内存(控制节点4核8G,计算节点4核8G);
  2. ECS实操:浏览器访问华为云官网,注册华为云账号即可体验;
    ✅ 前置知识 :掌握Linux基础命令、vim编辑器、网络IP、虚拟化基础概念;
    ✅ 新手友好:步骤完整,命令附带注释,遇到的坑全部整理在故障章节。

💡代码块中#后面是注释,不要复制输入终端 。

⚠️OpenStack部署耗时很长,Packstack安装阶段预计40‑50分钟;实验仅用于学习,不适合直接用于生产环境。


一、实验整体规划

1.1 硬件&IP规划

虚拟机 配置 IP 角色
controller 4CPU,8G内存,100G硬盘 192.168.108.10 OpenStack控制节点
compute 4CPU,8G内存,100G硬盘 192.168.108.11 OpenStack计算节点

VMware网络:使用NAT模式,网段192.168.108.0/24。

Windows版VMware NAT网关:192.168.108.2;Linux版本VMware NAT网关:192.168.108.1。

1.2 实验流程总览

  1. 制作基础模板虚拟机openstack_template,初始化yum源、基础环境;关机打快照;
  2. 通过完整克隆,克隆出controller控制节点、compute计算节点;
  3. 两台节点配置主机名、静态IP、hosts、chrony时间同步;关机打快照;
  4. 控制节点安装packstack,修改应答文件,执行一键部署OpenStack;
  5. 浏览器访问Horizon仪表盘完成验证;
  6. 拓展:华为云ECS弹性云服务器实操。

二、制作OpenStack模板虚拟机

模板机的意义:把yum源、软件、系统初始化全部做完,后续直接克隆,避免两台机器重复做大量重复配置。

  1. 基于CentOS‑Stream‑8 minimal镜像安装基础虚拟机;
  2. 关机,右键虚拟机选择「管理」→「克隆」,选择完整克隆 ,命名openstack_template。

❗注意:必须选择完整克隆;链接克隆依赖原模板机,模板损坏克隆机直接失效,不适合OpenStack实验。

2.1 模板机配置yum阿里源

复制代码
# 清空旧的repo文件
rm -rf /etc/yum.repos.d/*

# 批量写入openstack victoria以及依赖仓库
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/](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/](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/](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/](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/](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/](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/](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/](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/](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/](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/](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/](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/](https://mirrors.aliyun.com/centos-vault/8-stream/PowerTools/x86_64/os/)
gpgcheck=0
enabled=1
EOF

# 重建yum缓存
yum clean all
yum makecache

2.2 安装基础工具包

复制代码
# bash-completion命令补全、vim编辑工具、vmtools虚拟机工具、chrony时间同步
yum install -y bash-completion vim open-vm-tools net-tools chrony.x86_64
source /usr/share/bash-completion/bash_completion

2.3 配置/etc/hosts主机解析

复制代码
echo '192.168.108.10 controller' >> /etc/hosts
echo '192.168.108.11 compute' >> /etc/hosts

2.4 关闭SELinux

OpenStack环境SELinux容易引发权限故障,实验环境直接关闭

复制代码
sed -i '/^SELINUX=/cSELINUX=disabled' /etc/selinux/config

2.5 网卡保持DHCP获取

复制代码
vim /etc/sysconfig/network-scripts/ifcfg-ens160
TYPE=Ethernet
BOOTPROTO=dhcp
NAME=ens160
DEVICE=ens160
ONBOOT=yes

2.6 清除克隆会冲突的标识(关键!)

如果不清除ssh密钥与machine‑id,两台克隆机器ID完全一样,会发生SSH通信异常

复制代码
# 删除ssh主机密钥,开机自动重新生成
cd /etc/ssh/
rm -rf ssh_host_*

# 清空系统machine‑id
cat /dev/null > /etc/machine-id
cat /etc/machine-id

2.7 关机,拍摄快照

复制代码
poweroff

虚拟机菜单:快照 → 拍摄快照,模板机准备完成。

三、克隆生成controller、compute两个节点

  1. 对openstack_template完整克隆,分别命名openstack_controller、openstack_compute;
  2. 修改虚拟机硬件,CPU选项勾选「虚拟化 Intel VT‑x/EPT or AMD‑V/RVI」。>

compute计算节点需要开启嵌套虚拟化,内部才能运行OpenStack虚拟机实例。

3.1 controller控制节点配置

开机执行:

复制代码
# 修改主机名
hostnamectl set-hostname controller

# 修改网卡配置静态IP
vim /etc/sysconfig/network-scripts/ifcfg-ens160
TYPE=Ethernet
BOOTPROTO=none
NAME=ens160
DEVICE=ens160
ONBOOT=yes
IPADDR=192.168.108.10
NETMASK=255.255.255.0
GATEWAY=192.168.108.2
DNS1=192.168.108.2

# 重启网卡生效
nmcli connection reload ens160
nmcli connection up ens160

配置chrony时间服务(controller作为内网NTP服务器)

复制代码
vim /etc/chrony.conf
# pool 2.centos.pool.ntp.org iburst
server ntp.aliyun.com iburst
allow 192.168.108.0/24   # 允许内网网段来同步时间

systemctl restart chronyd
systemctl enable chronyd
chronyc sources -v

3.2 compute计算节点配置

复制代码
hostnamectl set-hostname compute

vim /etc/sysconfig/network-scripts/ifcfg-ens160
TYPE=Ethernet
BOOTPROTO=none
NAME=ens160
DEVICE=ens160
ONBOOT=yes
IPADDR=192.168.108.11
NETMASK=255.255.255.0
GATEWAY=192.168.108.2
DNS1=192.168.108.2

nmcli connection reload ens160
nmcli connection up ens160

chrony配置,compute同步controller节点时间:

复制代码
vim /etc/chrony.conf
# pool 2.centos.pool.ntp.org iburst
server controller iburst

systemctl restart chronyd
systemctl enable chronyd
chronyc sources -v

两台节点全部关机,分别拍摄快照。

四、Packstack一键部署OpenStack Victoria

Packstack是OpenStack官方提供的一键部署工具,基于Puppet自动化安装各个组件,只需要修改应答文件即可双节点部署。所有操作在controller控制节点执行。

4.1 安装packstack工具

复制代码
yum install -y openstack-packstack

4.2 生成应答配置文件answers.txt

复制代码
packstack --gen-answer-file=answers.txt

4.3 修改应答文件关键参数

编辑answers.txt,修改下面几个核心配置项:

  1. CONFIG_HEAT_INSTALL=y 开启heat编排组件;
  2. CONFIG_COMPUTE_HOSTS=192.168.108.10,192.168.108.11 指定控制+计算节点IP;
  3. CONFIG_NEUTRON_OVN_BRIDGE_IFACES=br-ex:ens160 外部网桥绑定物理网卡;
  4. CONFIG_PROVISION_DEMO=n 不自动创建demo测试项目;

一键把所有组件密码统一修改为huawei

复制代码
sed -i.bak -r 's/(.+_PW)=[0-9a-z]+/\1=huawei/g' answers.txt

4.4 两台节点关闭NetworkManager

NetworkManager会和OpenStack的Neutron网络组件冲突,两台机器都执行!

复制代码
# controller节点
systemctl stop NetworkManager
systemctl disable NetworkManager
systemctl mask NetworkManager

# compute节点同样执行上面三条命令
systemctl stop NetworkManager
systemctl disable NetworkManager
systemctl mask NetworkManager

4.5 启动部署OpenStack

⏱注意:部署会持续40‑50分钟 ,中间Testing if puppet apply is finished会卡住很久,属于正常现象,不要中断。

复制代码
packstack --answer-file=answers.txt

部署成功提示:**** Installation completed successfully ******

4.6 部署后基础配置

两台节点启动传统network服务

复制代码
systemctl start network
systemctl enable network

配置openstack命令行补全

复制代码
openstack complete >> /etc/bash_completion.d/complete

4.7 访问Horizon Web仪表盘

浏览器访问:[http://192.168.108.10/dashboard](http://192.168.108.10/dashboard)

  • 用户名:admin
  • 密码:huawei

登录成功代表OpenStack双节点集群部署完成。

把controller、compute关机,拍摄快照,方便后续做实验回滚。

五、拓展实操|华为云ECS弹性云服务器创建

比喻:ECS弹性云服务器,就是公有云上的虚拟机。不需要自己准备物理服务器,网页上点选配置,几分钟拿到一台Linux/Windows云主机。

5.1 计费模式三种

  1. 包年/包月(预付费):一次性买一段时间,适合长期使用,价格优惠;
  2. 按需计费(后付费):用多久算多久,随时创建、随时删除,适合测试、短期业务;
  3. 竞价计费 :价格很低,但是库存不足实例会被回收;严禁跑重要业务,一定要做好数据备份。

5.2 区域Region & 可用区AZ

  • 区域Region:物理数据中心地理位置,比如上海、北京。不同区域之间网络延迟高,资源互相隔离;优先选择离用户近的区域降低访问延迟。
  • 可用区AZ:同一个区域内部,电力、网络互相隔离的机房。>

容灾建议:业务高可用,把多台ECS分散部署同一个Region不同AZ可用区;追求低延迟通信,放在同一个可用区。

5.3 创建ECS关键选项讲解

  1. 实例规格:X86架构(Intel CPU)、鲲鹏架构(ARM芯片);不同规格对应不同CPU、内存性能。
  2. 镜像 :就是操作系统模板。
    • 公共镜像:云厂商官方提供稳定系统;
    • 私有镜像:自己导出保存的系统镜像;
    • 共享镜像:别人分享给你的镜像;
    • 市场镜像:预装软件的第三方镜像。
  3. 存储:系统盘,选择磁盘类型、磁盘大小;可以额外添加数据盘。
  4. 网络 :虚拟私有云VPC、子网;安全组相当于云上防火墙,控制端口访问。
  5. 登录凭证:两种方式,密码登录 / SSH密钥对登录;Linux推荐密钥对登录,安全性更高。

5.4 登录ECS三种方式

  1. VNC登录:网页控制台登录,服务器网络故障也可以排错;
  2. 云堡垒机:多台云主机统一运维审计;
  3. SSH远程登录:本地终端ssh连接(需要绑定弹性公网IP)。

忘记密码可以在控制台实例操作菜单重置密码,重置密码之后需要重启实例生效。


🚨新手常见坑合集

  1. ❌OpenStack克隆虚拟机之后两台节点SSH连接异常

✅模板机关机克隆之前,*一定要删除/etc/ssh/ssh_host_密钥,清空/etc/machine‑id,否则两台机器ID重复,SSH通信出错。

  1. ❌Packstack部署长时间卡住失败

✅①确认yum阿里源全部正常;②两台节点关闭NetworkManager;③主机名解析/etc/hosts双向互通;④虚拟机开启嵌套虚拟化;⑤虚拟机内存CPU资源充足。

  1. ❌compute节点chrony时间同步失败

✅controller节点chrony配置放开网段允许allow 192.168.108.0/24;防火墙放行ntp服务;检查网络互通。

  1. ❌Packstack应答文件部署完,Horizon网页打不开

✅查看packstack部署日志/var/tmp/packstack/*/openstack‑setup.log;确认controller节点httpd、openstack相关组件服务正常运行。

  1. ❌混淆链接克隆和完整克隆

✅OpenStack实验必须完整克隆;链接克隆依赖原始模板机,模板机损坏全部克隆机报废。

  1. ❌ECS竞价实例跑正式业务

✅竞价实例库存不足会被平台强制回收;只适合测试,生产业务不要选择竞价计费模式。

  1. ❌ECS安全组没放行22端口,SSH连不上云主机

✅安全组是云上防火墙,入方向需要放开SSH 22端口;即使系统内部防火墙放行,安全组拦截依旧访问失败。

  1. ❌OpenStack实验模板机开机忘记关闭SELinux

✅模板阶段修改/etc/selinux/config设置SELINUX=disabled,需要重启系统才生效。

总结

  1. OpenStack‑Victoria双节点实验:先制作干净模板虚拟机,清除ssh密钥、machine‑id,完整克隆出控制节点与计算节点;配置静态IP、hosts解析、chrony内网时间同步;
  2. Packstack工具通过应答文件自动化部署OpenStack;部署前两台节点必须关闭NetworkManager;部署时间很长耐心等待,部署完成访问Horizon网页仪表盘;
  3. 公有云ECS弹性云服务器:分清包年包月、按需、竞价三种计费;理解Region区域、AZ可用区容灾思想;熟悉镜像、安全组、登录凭证核心概念;掌握VNC、SSH、堡垒机三种登录方式。

思考题&互动

  1. OpenStack模板虚拟机克隆前,为什么要删除ssh_host_*密钥、清空machine‑id?
  2. Packstack部署OpenStack,两台节点为什么要关闭NetworkManager服务?
  3. 公有云Region区域和AZ可用区分别是什么?高可用业务如何部署ECS实例?
  4. ECS竞价实例能不能用于正式生产业务?说出你的理由。

欢迎评论区分享踩坑,本地搭建OpenStack对电脑内存要求较高,条件允许建议完整实操一遍!

相关推荐
DevNote_1 小时前
1C1G 服务器从零配置实录(附完整命令)
linux·运维·服务器·javascript·adb·ssh·gmssh
haermosi1 小时前
Ubuntu 下 Flameshot 截图一直闪屏,已找到问题并解决
linux·ubuntu·gnome·问题排查·flameshot·linux 使用记录
进击的荆棘1 小时前
Linux系统——进程信号之保存和捕捉信号
linux·运维·服务器·信号处理·信号
开开心心就好1 小时前
免安装PDF盖章工具,透明度和位置可调
运维·服务器·前端·javascript·pdf·ocr·1024程序员节
whyutianict_vv3 小时前
云计算 HCIE 认证体系解析:HCIA/HCIP/HCIE 三级科目与知识边界
linux·运维·云计算
0+11110 小时前
Linux --从 poll 到 epoll多路转接
linux·服务器·1024程序员节
青瓦梦滋10 小时前
WebSocket协议
linux·服务器·网络·c++·websocket·网络协议·http
桌面运维家11 小时前
旧电脑跑不动课程软件,VDI云桌面怎样接着用?
运维·服务器·虚拟化·pve·vdi·云桌面
zhang1338308907511 小时前
传统机械三杯式风速传感器易磨损冻堵?CG-88金属超声波风速风向传感器给出免运维方案
运维·服务器·网络·人工智能·自动化