云计算百科
云计算领域专业知识百科平台

OpenStack 从理论到实操:架构解析 + Packstack 部署 Victoria 完整实战

OpenStack 从理论到实操:架构解析 + Packstack 部署 Victoria 完整实战

摘要:OpenStack 是业界主流开源 IaaS 云平台,本文先梳理 OpenStack 核心理论、组件架构,再基于 CentOS‑Stream‑8,使用 Packstack 工具双节点部署 OpenStack Victoria,包含环境规划、模板制作、排坑要点,适合云计算初学者、运维做实验参考。

文章目录

  • 前言
  • 一、OpenStack 基础理论认知
    • 1.1 OpenStack 到底是什么?
    • 1.2 核心组件速览
    • 1.3 创建一台 VM 发生了什么?
    • 1.4 部署架构说明
  • 二、实验环境规划:Packstack 双节点部署 OpenStack Victoria
    • 2.1 硬件与网络规划
    • 2.2 制作通用模板虚拟机
    • 2.3 初始化 Controller 与 Compute 节点
    • 2.4 Packstack 执行部署(在 controller 节点操作)
    • 2.5 部署完成后配置与验证
  • 三、实验踩坑总结
  • 四、小结

前言

OpenStack 作为开源基础设施即服务 (IaaS) 云平台,2010 年由 NASA 和 Rackspace 联合发起,对标 AWS 公有云能力,可以统一管理虚拟机、裸金属、容器的计算、存储、网络资源池。

很多同学学习 OpenStack 会遇到两个痛点:看不懂各个组件之间的关系;跟着教程部署时源报错、网络冲突、部署卡死。 本文结合华为 OpenStack 架构课件 + 真实 Packstack 部署文档,把理论和实操结合起来,带你理解 OpenStack 架构同时,完成一套可复现的双节点实验环境。

一、OpenStack 基础理论认知

在这里插入图片描述

1.1 OpenStack 到底是什么?

很多人会混淆OpenStack、虚拟化、云计算三者概念:

  • 虚拟化:是底层技术(KVM/QEMU 等),实现硬件资源隔离与复用,属于数据面。
  • OpenStack:是云平台控制面软件,本身不实现虚拟化。它不会直接创建虚拟机,只是下发指令调用底层虚拟化、存储、网络设备,对外提供统一 API、Web 界面来调度资源池。
  • 云计算:是一整套解决方案。OpenStack 只是云计算的核心框架,要构建完整云,还需要硬件机房、运维系统、计费系统、业务服务等配套组件。
  • OpenStack 设计三大理念:开放、灵活、可扩展。采用插件化、无中心、无状态架构;社区每年 4 月、10 月发布一个新版本。

    1.2 核心组件速览

    OpenStack 由多个独立项目(服务)组成,每个服务各司其职,相互配合完成云资源生命周期管理。

    表格

    组件名称服务全称核心功能
    Horizon 仪表盘服务 Web 可视化 UI 面板,管理员 / 用户网页操作云平台
    Keystone 认证服务 整个云的 “大门”,负责身份认证、权限授权、服务注册发现,几乎所有服务都依赖它
    Glance 镜像服务 管理虚拟机镜像,实现镜像上传、注册、检索,为实例提供操作系统模板
    Nova 计算服务 核心计算管理,调度虚拟机、裸金属、容器实例生命周期(创建、重启、删除)
    Neutron 网络服务 网络即服务,提供虚拟网络、子网、路由、DHCP,管理实例网络连接
    Cinder 块存储服务 给虚拟机提供持久化云硬盘,可以挂载、卸载,数据独立于虚拟机生命周期
    Swift 对象存储服务 分布式对象存储,适合存放图片、备份等非结构化海量数据
    Heat 编排服务 通过模板文件批量编排、一键部署整套云资源,实现基础设施即代码
    Ceilometer 计量服务 采集全平台资源监控数据,用于计费、资源统计、告警触发

    1.3 创建一台 VM 发生了什么?

    在这里插入图片描述

    创建一台虚拟机实例,不是 Nova 单独完成,需要多个组件协同:

  • 用户通过 Horizon 网页 / CLI 发起创建请求,请求先交给Keystone完成身份校验;
  • Glance提供虚拟机操作系统镜像;
  • Nova调度,选择合适的计算节点,调用底层虚拟化创建实例;
  • Neutron为虚拟机分配虚拟网卡、IP 地址;
  • 可选:调用Cinder挂载持久化块存储卷;
  • 可选:Heat可以通过模板自动化完成整套资源的批量创建。
  • 1.4 部署架构说明

    实验环境可以单节点 All‑in‑One 部署;生产环境一般采用多控制节点实现高可用,搭配大量计算节点、独立存储节点。

    OpenStack 内部通信机制:服务 API 进程接收用户请求,通过RabbitMQ消息队列做组件间消息传递,业务数据持久化到MariaDB/MySQL数据库。

    二、实验环境规划:Packstack 双节点部署 OpenStack Victoria

    在这里插入图片描述

    说明:CentOS8 官方已经停止维护,软件包迁移至 centos‑vault 归档源,OpenStack Victoria 是 CentOS‑Stream‑8 支持的版本,Packstack 是 OpenStack 官方提供的快速部署工具,底层基于 Puppet 自动化安装配置各个组件。

    2.1 硬件与网络规划

    表格

    主机角色操作系统IP 地址配置
    controller 控制节点 CentOS‑Stream‑8 192.168.108.10 4 核 CPU,8G 内存,100G 磁盘,NAT 网卡
    compute 计算节点 CentOS‑Stream‑8 192.168.108.11 4 核 CPU,8G 内存,100G 磁盘,NAT 网卡
    • VMware NAT 网段:192.168.108.0/24,网关192.168.108.2
    • 实验环境建议开启 CPU 虚拟化,否则 KVM 虚拟机无法正常启动。

    2.2 制作通用模板虚拟机

    先制作基础模板,后续直接完全克隆,减少重复配置工作。

  • 安装 CentOS‑Stream‑8 minimal 系统;
  • 替换全部 yum 源为阿里云centos‑vault归档源,因为 CentOS8 官方源已经下线;
  • ⚠️ 常见报错:Curl error (6): Couldn't resolve host name,该报错为DNS 解析失败,不是源地址错误,需要检查虚拟机 DNS 配置。

    rm -rf /etc/yum.repos.d/*
    #写入完整openstack.repo阿里云vault源配置文件
    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/
    gpgcheck=0
    enabled=1

    [highavailability]
    name=CentOS Stream 8 – HighAvailability
    baseurl=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/
    gpgcheck=0
    enabled=1

    [rt]
    name=CentOS Stream 8 – RT
    baseurl=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/
    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/
    gpgcheck=0
    enabled=1

    [extras]
    name=CentOS Stream \\$releasever – Extras
    baseurl=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/
    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/
    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/
    gpgcheck=0
    enabled=1

    [baseos]
    name=CentOS Stream 8 – BaseOS
    baseurl=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/
    gpgcheck=0
    enabled=1

    [powertools]
    name=CentOS Stream 8 – PowerTools
    baseurl=https://mirrors.aliyun.com/centos-vault/8-stream/PowerTools/x86_64/os/
    gpgcheck=0
    enabled=1
    EOF

    yum clean all
    yum makecache

  • 安装基础工具包
  • yum install -y bash-completion vim net-tools chrony open-vm-tools

  • 修改/etc/hosts写入两个节点主机名解析
  • cat >> /etc/hosts << EOF
    192.168.108.10 controller
    192.168.108.11 compute
    EOF

  • 关闭 SELinux
  • sed -i '/^SELINUX=/cSELINUX=disabled' /etc/selinux/config

  • 清理 SSH 密钥、machine‑id,避免克隆后主机标识冲突
  • rm -rf /etc/ssh/ssh_host_*
    cat /dev/null > /etc/machine-id

  • 关机,拍摄虚拟机快照作为模板。
  • poweroff

    2.3 初始化 Controller 与 Compute 节点

    从模板完全克隆两台虚拟机,分别开机做初始化。

  • 设置主机名
  • # controller执行
    hostnamectl set-hostname controller

    # compute执行
    hostnamectl set-hostname compute

  • 配置静态 IP 修改网卡配置文件/etc/sysconfig/network-scripts/ifcfg-ens160,设置静态 IP、网关、DNS,执行如下命令生效:
  • nmcli connection reload ens160
    nmcli connection up ens160

  • 时间同步 chrony 配置,云平台节点时间必须保持一致
    • controller 节点:配置公网时间源,允许内网网段客户端同步时间
    • compute 节点:直接同步 controller 节点时间

    # 重启并开机自启
    systemctl restart chronyd
    systemctl enable chronyd
    #验证
    chronyc sources -v

  • 禁用 NetworkManager(重要避坑)
  • NetworkManager 会和 OpenStack Neutron 网络组件冲突,必须停止 + 屏蔽

    systemctl stop NetworkManager
    systemctl disable NetworkManager
    systemctl mask NetworkManager

    2.4 Packstack 执行部署(在 controller 节点操作)

  • 安装 packstack 工具
  • yum install -y openstack-packstack

  • 生成应答文件
  • packstack –gen-answer-file=answers.txt

  • 修改应答文件answers.txt关键参数
  • CONFIG_HEAT_INSTALL=y
    CONFIG_COMPUTE_HOSTS=192.168.108.10,192.168.108.11
    CONFIG_NEUTRON_OVN_BRIDGE_IFACES=br-ex:ens160
    CONFIG_PROVISION_DEMO=n

    统一所有组件密码为 huawei(测试环境使用,生产环境严禁弱口令)

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

  • 启动自动化部署
  • packstack –answer-file=answers.txt

    ⏱注意:部署卡在Testing if puppet apply is finished:192.168.108.10_controller.pp属于正常现象,该步骤耗时最长,约 40‑50 分钟,耐心等待,不要中断。

    2.5 部署完成后配置与验证

  • 两台节点启动传统 network 服务
  • systemctl start network
    systemctl enable network

  • 配置 OpenStack 命令行补全
  • openstack complete >> /etc/bash_completion.d/complete

  • 访问 Horizon 仪表盘:浏览器访问http://controller的IP/dashboard,使用应答文件配置的账号密码登录,验证平台可用。
  • 实验环境建议拍摄快照,防止后续操作损坏环境,可以快速回滚。
  • 三、实验踩坑总结

    在这里插入图片描述

  • curl error (6) 域名解析失败 不是 yum 源失效,是虚拟机 DNS 无法解析域名。解决方案:修改/etc/resolv.conf配置公共 DNS
  • cat > /etc/resolv.conf <<EOF
    nameserver 223.5.5.5
    nameserver 223.6.6.6
    EOF

    如果使用 NetworkManager 管理网卡,要修改网卡配置持久化 DNS,防止被覆盖。

  • CentOS‑Stream‑8 源全部使用 vault 归档地址 CentOS8 生命周期结束,原版 baseurl 全部失效,必须使用mirrors.aliyun.com/centos‑vault。
  • NetworkManager 冲突 Packstack 部署 Victoria,一定要关闭屏蔽 NetworkManager,否则 Neutron 网络会出现各种诡异故障。
  • 时间不同步 云平台各个节点时间不一致,会导致 Keystone 令牌认证失败、实例异常,chrony 时间同步必须配置。
  • 部署长时间卡住 controller.pp 阶段执行 Puppet 配置所有 OpenStack 服务,40‑50 分钟属于正常,不要手动终止进程。
  • 四、小结

    OpenStack 不是虚拟化软件,是管理底层虚拟化、存储、网络资源的 IaaS 云控制平台。 理论层面要理解各个组件分工和协同关系;实操层面,Packstack 适合快速搭建学习实验环境,但不直接用于生产,生产环境需要考虑高可用、安全加固、性能调优。

    完成部署之后,可以尝试通过网页或者 CLI 创建镜像、网络、云硬盘,最终创建一台虚拟机,完整走完实例生命周期,加深对 OpenStack 的理解。

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » OpenStack 从理论到实操:架构解析 + Packstack 部署 Victoria 完整实战
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!