ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

OpenStack部署前基础环境准备:硬件、网络与系统配置实战指南

OpenStack部署前基础环境准备:硬件、网络与系统配置实战指南 这次我们来看 OpenStack 的搭建重点不是概念有多复杂而是能不能在真实的硬件环境上跑起来以及搭建过程中那些必须提前搞定的“基础准备环节”。很多教程一上来就敲命令结果卡在硬件兼容性、网络配置或者依赖包版本上浪费大量时间。这篇文章直接切入主题先说清楚 OpenStack 是什么、搭建前必须准备什么再带你一步步完成基础环境的搭建和验证确保你后续的安装部署能顺利进行。OpenStack 是一个开源的云计算管理平台项目你可以把它理解为一套软件用来把一堆物理服务器、存储和网络设备整合成一个可以按需分配资源的私有云。它的核心价值在于提供了类似公有云如 AWS、阿里云的 IaaS基础设施即服务能力但完全由你自己掌控。对于想学习云平台架构、搭建内部开发测试环境、或者构建私有云的企业来说OpenStack 是一个重要的技术选项。搭建 OpenStack 最关键的往往不是安装过程本身而是前期的“基础准备”。这包括硬件选型是否满足要求、操作系统版本是否兼容、网络规划是否清晰、以及所有节点的系统环境是否一致且干净。如果这些基础没打好后续的安装步骤几乎必然会失败。本文将聚焦于这个“基础准备环节”详细拆解从硬件评估到系统初始化的全过程并提供一套可验证的检查清单。本文适合以下读者计划在物理服务器或虚拟化环境中部署 OpenStack 的运维工程师、架构师或技术爱好者希望理解 OpenStack 底层依赖和部署前提的开发者以及任何被 OpenStack 复杂部署劝退想从源头理清思路的学习者。我们将重点关注单节点All-in-One或最小化多节点部署的基础准备这是学习和测试的最常见场景。1. 核心能力速览与部署门槛在动手之前我们先快速了解 OpenStack 部署的核心要求和本文聚焦的“基础准备”所涵盖的范围。能力项说明与本文重点项目类型开源云计算平台IaaS部署复杂度中高。涉及多组件协调基础准备环节至关重要。本文目标仅完成部署前的“基础准备环节”包括硬件、系统、网络、仓库的准备工作不涉及具体组件如 Nova, Neutron的安装。推荐硬件测试环境至少 1 台服务器/虚拟机CPU 4核内存 16GB硬盘 100GB双网卡推荐。生产环境需根据规模大幅提升。核心依赖特定版本的 Linux 发行版如 CentOS 7/8, Ubuntu 20.04/22.04、Python、数据库MariaDB/MySQL、消息队列RabbitMQ、网络时间协议NTP。网络要求规划清晰的网络平面管理、业务、外部等本文重点准备网络环境。部署工具本文使用 OpenStack 官方推荐的自动化部署工具OpenStack-Ansible (OSA)或Kolla-Ansible作为环境准备的目标框架因其对系统环境要求严格能充分体现准备工作的重要性。手动安装同理。是否支持API是OpenStack 所有核心功能都通过 REST API 提供但本文准备阶段不涉及 API 服务启动。适合场景企业内部私有云、开发测试平台、云计算技术学习与验证。门槛提示OpenStack 对基础环境的一致性要求极高。一个配置错误如主机名、时间同步、软件源就可能导致整个部署失败。因此“基础准备”的目标是创造一个干净、统一、符合要求的底层系统环境。2. 适用场景与使用边界了解 OpenStack 基础准备适用于哪些场景能帮你判断是否需要投入精力以及如何规划。适合的场景学习与实验在单台高配物理机或嵌套虚拟化环境中搭建 All-in-One 环境学习 OpenStack 架构和基本操作。开发与测试为软件开发构建一个可重复、可隔离的云测试环境用于测试应用在不同云资源虚拟机、网络、存储下的表现。中小型私有云为部门或中小企业构建内部基础设施云实现虚拟化资源的自助服务和统一管理。特定工作负载运行对数据主权、安全合规有特殊要求或需要定制化网络、存储功能的工作负载。需要谨慎或不适用的场景超小资源环境如果只有一台内存小于8GB的旧电脑或虚拟机运行完整的 OpenStack 会非常吃力体验很差。建议使用 DevStack 进行最小化体验但其对学习完整部署帮助有限。追求极简部署如果你希望像安装一个桌面软件一样“下一步到底”OpenStack 不适合。它本质是一套分布式系统需要系统的运维知识和耐心。替代简单虚拟化如果只需要运行几台虚拟机没有多租户、计量计费、软件定义网络等需求使用 VMware ESXi、Proxmox VE 或单纯的 KVM 管理工具会更简单高效。无稳定硬件或网络OpenStack 依赖稳定的底层硬件和网络。在经常断电、网络抖动频繁或不稳定的环境中部署会带来巨大的运维挑战。合规与安全边界系统安全准备环节就需配置防火墙、SELinux/AppArmor 策略。部署后OpenStack 自身的安全组、密钥对管理至关重要。网络隔离在准备网络时必须规划好管理网络与业务网络的隔离防止未授权访问。数据合规私有云意味着数据完全自主控制但也意味着你需要承担全部的数据安全、备份和合规责任。3. 环境准备与前置条件这是整个“基础准备环节”的蓝图。我们将以一台物理服务器或一台配置较高的虚拟机作为控制计算存储节点为例规划一个 All-in-One 环境。多节点准备逻辑类似只需重复执行并在规划时区分节点角色。3.1 硬件规划清单CPU支持虚拟化Intel VT-x / AMD-V的 x86_64 处理器。建议 4 核以上用于运行多个服务组件和至少一个测试虚拟机。内存最低 16GB推荐 32GB 或更多。OpenStack 服务本身内存开销大还需为创建的虚拟机预留内存。硬盘系统盘 数据盘。系统盘 100GB 用于安装 OS 和 OpenStack 代码额外准备一块至少 100GB 的干净磁盘或分区用于后续 Cinder块存储或 Swift对象存储服务。重要避免使用已有数据的磁盘部署工具可能会格式化。网络至少两个网络接口NIC。这是最佳实践也是很多部署文档的默认要求。eth0/ens192用于管理网络Management Network承载节点间服务通信、API 访问、SSH 管理流量。eth1/ens224用于业务/外部网络Provider/External Network为虚拟机提供外部网络访问如上网。虚拟化支持如果在虚拟机中部署嵌套虚拟化必须在 Hypervisor 层开启 CPU 虚拟化穿透如 VMware 的vhv.enable “TRUE” KVM 的--cpu host-passthrough。3.2 软件与系统清单操作系统选择一个 OpenStack 社区支持良好的发行版。本文以Ubuntu 22.04 LTS为例因其软件包较新且社区活跃。同样可以选择 CentOS 7/8 Stream、Rocky Linux 8/9 等。系统安装最小化安装Minimal Install即可减少不必要的软件包冲突。权限全程使用root用户或具有sudo权限的普通用户。本文为清晰起见使用root操作。4. 基础系统配置实战假设你已经在硬件上安装好了 Ubuntu 22.04。现在我们开始进行一系列必须的配置。4.1 配置静态主机名与 hosts 文件OpenStack 服务严重依赖主机名进行通信。必须配置一个完全限定域名FQDN并确保能解析。# 1. 设置静态主机名例如 ‘openstack-aiO’ hostnamectl set-hostname openstack-aiO # 2. 编辑 /etc/hosts 文件确保本地解析 echo “127.0.0.1 localhost” /etc/hosts echo “192.168.100.10 openstack-aiO openstack-aiO.example.com” /etc/hosts # 注意192.168.100.10 应替换为你为管理网卡eth0规划的静态IP地址。4.2 配置网络接口关键步骤这是最容易出错的地方。我们配置双网卡一个管理一个外部。# Ubuntu 22.04 使用 netplan 配置网络 cat /etc/netplan/00-installer-config.yaml EOF network: version: 2 renderer: networkd ethernets: ens192: # 你的第一块网卡名称使用 ip link 或 ls /sys/class/net 查看 addresses: - 192.168.100.10/24 # 管理网络 IP根据你的规划修改 routes: - to: 0.0.0.0/0 via: 192.168.100.1 # 管理网络的网关如果有 nameservers: addresses: [8.8.8.8, 114.114.114.114] ens224: # 你的第二块网卡名称 addresses: - 10.0.0.10/24 # 业务/外部网络 IP根据你的规划修改 # 注意业务网卡通常不配置默认网关网关由 OpenStack Neutron 提供 EOF # 应用网络配置 netplan apply验证网络ip addr show # 查看两个网卡是否已获取配置的IP ping -c 4 8.8.8.8 # 测试管理网络出口是否通畅如果网关配置正确4.3 禁用防火墙与配置 SELinux/AppArmor测试环境在测试环境中为了简化问题排查可以先禁用系统防火墙。生产环境需按需开放端口。# Ubuntu (使用 ufw) ufw disable # 或者直接使用 iptables临时 iptables -F iptables -t nat -F iptables -t mangle -F iptables -X # 对于 SELinux (CentOS/Rocky Linux) setenforce 0 sed -i ‘s/^SELINUXenforcing/SELINUXpermissive/’ /etc/selinux/config4.4 配置 NTP 时间同步所有节点时间必须高度同步否则会导致认证失败等各种诡异问题。# Ubuntu 安装并配置 chrony apt update apt install -y chrony # 编辑配置文件使用阿里云或腾讯云 NTP 服务器 sed -i ‘s/^pool/#pool/’ /etc/chrony/chrony.conf echo “server ntp.aliyun.com iburst” /etc/chrony/chrony.conf echo “server time1.cloud.tencent.com iburst” /etc/chrony/chrony.conf systemctl restart chronyd systemctl enable chronyd # 验证时间同步 chronyc sources -v timedatectl status4.5 配置 OpenStack 软件源使用 OpenStack 官方或国内镜像源确保能快速下载所需软件包。以 Ubuntu 安装 OpenStack Yoga 版本为例# 安装 ubuntu-cloud-keyring 和 add-apt-repository 工具 apt update apt install -y ubuntu-cloud-keyring software-properties-common # 添加 OpenStack Yoga 仓库Ubuntu 22.04 对应 Yoga add-apt-repository cloud-archive:yoga -y # 更新软件包列表 apt update apt dist-upgrade -y4.6 安装基础工具与 Python 环境安装后续部署和调试所需的常用工具。apt install -y python3-pip python3-dev python3-venv \ git curl wget vim net-tools bridge-utils \ openssh-server5. 部署工具选型与环境初始化完成基础系统配置后我们需要选择一个部署工具来指导后续的组件安装。这里以OpenStack-Ansible (OSA)为例因为它要求严格的前置准备能很好地检验我们之前的工作。5.1 获取部署代码# 创建工作目录 mkdir -p /opt/openstack cd /opt/openstack # 克隆 OSA 仓库指定 Yoga 版本 git clone https://opendev.org/openstack/openstack-ansible -b stable/yoga cd openstack-ansible5.2 运行 OSA 的 Bootstrap 脚本这个脚本会检查系统环境并安装 Ansible 及必要的依赖。它是检验我们“基础准备”是否合格的第一个关卡。# 运行 bootstrap 脚本 scripts/bootstrap-ansible.sh # 如果一切顺利会输出 Ansible 版本等信息 ansible --version5.3 配置 OSA 的 Inventory 文件即使我们只部署单节点也需要配置 inventory 文件来定义主机和角色。# 复制示例 inventory 文件 cp -r /opt/openstack/openstack-ansible/etc/openstack_deploy/ /etc/openstack_deploy # 编辑环境配置文件定义密码、IP等这里仅示意实际需生成复杂密码 cd /etc/openstack_deploy cp openstack_user_config.yml.example openstack_user_config.yml你需要编辑openstack_user_config.yml将里面的 IP 地址示例替换为你实际的管理网络 IP如192.168.100.10并定义单节点的主机组。这是一个简化的单节点配置片段cidr_networks: container: 192.168.100.10/24 tunnel: 10.0.0.10/24 used_ips: - “192.168.100.1” - “192.168.100.10” - “10.0.0.1” - “10.0.0.10” global_overrides: internal_lb_vip_address: 192.168.100.10 external_lb_vip_address: 10.0.0.10 shared-infra_hosts: openstack-aiO: ip: 192.168.100.10 os-infra_hosts: openstack-aiO: ip: 192.168.100.10 # 将所有服务都部署到这一个主机上 compute_hosts: openstack-aiO: ip: 192.168.100.10 network_hosts: openstack-aiO: ip: 192.168.100.10 storage_hosts: openstack-aiO: ip: 192.168.100.105.4 运行 OSA 的环境检查在真正部署前OSA 提供了一个强大的环境检查脚本。cd /opt/openstack/openstack-ansible scripts/run-playbooks.sh setup-hosts.yml # 这一步会检查并配置系统内核参数、LVM等如果setup-hosts.yml能成功运行没有报错可能有一些警告但非错误那么恭喜你你的“基础准备环节”已经基本达标。它意味着你的系统在主机名、网络、软件源、依赖包等方面已经满足了 OpenStack 部署的最低要求。6. 关键验证与排查清单在运行部署 Playbook 之前请务必手动验证以下项目。这能帮你提前发现 90% 的常见问题。6.1 网络连通性验证# 1. 检查网卡状态和IP ip addr show | grep -E “(ens192|ens224)” -A 5 # 2. 检查路由 ip route show # 3. 从本机 ping 自己的两个IP检查网卡是否活跃 ping -c 2 192.168.100.10 ping -c 2 10.0.0.10 # 4. 如果有多节点互 ping 管理IP # ping -c 2 其他节点管理IP6.2 主机名与解析验证# 1. 检查主机名 hostname hostname -f # 应返回 FQDN # 2. 检查 /etc/hosts 解析 getent hosts openstack-aiO getent hosts openstack-aiO.example.com # 3. 使用 nslookup 或 dig 测试如果不依赖外部DNS这步可跳过 nslookup openstack-aiO6.3 时间同步验证# 检查 chrony 服务状态和同步状态 systemctl status chronyd chronyc tracking chronyc sources # 输出中应有 ^* 标记的同步源且 offset 很小如几毫秒6.4 磁盘与存储准备验证检查为 Cinder 等存储服务准备的额外磁盘。lsblk # 查看磁盘列表确认第二块磁盘如 /dev/sdb存在且未挂载 fdisk -l /dev/sdb # 查看磁盘详情确保没有重要分区6.5 软件源与包管理验证# 检查是否成功添加了 OpenStack 仓库 apt-cache policy nova-common | grep -A5 -B5 yoga # 应该能看到来自 cloud-archive 的包版本信息7. 常见问题与排查方法在基础准备阶段你可能会遇到以下问题问题现象可能原因排查方式解决方案hostnamectl设置主机名后hostname -f仍返回旧名或 localhost。/etc/hosts文件未正确配置 FQDN 解析。cat /etc/hosts确保/etc/hosts文件中有一行将管理网络 IP 映射到主机名和 FQDN。netplan apply失败提示“Cannot find physical device ‘ensX’”。网卡名称不对。Ubuntu 可能使用enpXsY或ethX的命名。ip link show或ls /sys/class/net修改/etc/netplan/*.yaml中的网卡名称为实际名称。管理网络可以 ping 通网关但无法 ping 通外网如 8.8.8.8。网关配置错误或上游网络设备有策略限制。ip route show查看默认路由。traceroute 8.8.8.8。检查netplan配置中的gateway4或routes是否正确指向可用的网关 IP。运行 OSAbootstrap-ansible.sh时下载包极慢或失败。软件源未替换为国内镜像或网络不通。检查/etc/apt/sources.list和/etc/apt/sources.list.d/下的源。替换 Ubuntu 基础源和 OpenStack 仓库源为国内镜像如阿里云、腾讯云、华为云镜像站。运行setup-hosts.yml时失败提示关于 LVM、卷组等错误。为存储准备的磁盘上有残留的 LVM 签名或分区表。sudo pvs,sudo vgs,sudo lvs查看现有 LVM。sudo wipefs -a /dev/sdb查看签名。使用wipefs -a /dev/sdX和dd if/dev/zero of/dev/sdX bs1M count100谨慎会清空磁盘清理磁盘。时间同步失败chronyc sources显示?或x。NTP 服务器不可达或防火墙阻止了 123 端口。chronyc sources -v查看状态。ufw status检查防火墙。更换 NTP 服务器地址。在测试环境暂时禁用防火墙 (ufw disable)。确保管理网络可访问互联网。多节点环境下节点间互相 ping 不通主机名。各节点的/etc/hosts文件未包含所有其他节点的 IP 和主机名映射。在每个节点上ping 其他节点主机名。在所有节点的/etc/hosts中统一添加所有节点的 IP 和主机名映射。或者搭建一个内部 DNS 服务器。8. 最佳实践与后续步骤建议完成以上所有验证后你的基础环境就已经准备好了。接下来可以正式进入 OpenStack 组件的部署阶段。这里给出一些最佳实践建议备份配置将/etc/netplan/,/etc/hosts,/etc/chrony/chrony.conf以及 OSA 的/etc/openstack_deploy/目录进行备份。这是你的“黄金配置”。文档记录记录下你所有的 IP 地址规划、主机名、使用的软件源、以及任何对默认配置的修改。这对于后续排查和扩容至关重要。分阶段部署不要一次性运行所有部署 playbook。建议按照 OSA 文档先部署基础设施服务Galera, RabbitMQ, Memcached再部署核心 OpenStack 服务Keystone, Glance, Nova, Neutron等最后部署控制面板Horizon。每完成一个阶段进行验证。善用日志部署过程中所有 Ansible 任务输出和组件日志都是排查问题的关键。OSA 的日志默认在/openstack/log/下。第一个验证动作部署完 Keystone认证服务后立即尝试获取一个 token这是验证服务是否正常工作的第一道关卡。# 示例命令具体参数需根据你的部署调整 openstack --os-auth-url http://192.168.100.10:5000/v3 \ --os-project-domain-name Default --os-user-domain-name Default \ --os-project-name admin --os-username admin token issue“基础准备环节”的完成标志着你已经扫清了 OpenStack 部署道路上最易导致失败的障碍。它虽然不涉及 OpenStack 本身的炫酷功能但却是整个大厦的地基。地基牢固上层建筑的搭建才会顺利。建议将本文的检查清单保存下来在每次部署新环境时都对照执行一遍可以极大提高成功率。接下来你就可以信心十足地开始运行openstack-ansible setup-openstack.yml去构建属于你自己的云平台了。
返回列表