ARTICLE DETAIL

资讯详情

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

OpenStack私有云部署:基础环境配置与核心依赖服务搭建指南

OpenStack私有云部署:基础环境配置与核心依赖服务搭建指南 这次我们来看一个 OpenStack 私有云平台的搭建项目。对于想学习云计算、构建内部开发测试环境或进行技术验证的团队来说本地部署一套 OpenStack 是理解其架构和核心组件的最佳实践。本文的重点不是空谈概念而是带你一步步完成基础服务的配置文件准备这是整个部署过程中最关键、也最容易出错的一环。OpenStack 是一个由众多独立服务模块组成的庞大系统其搭建过程复杂涉及网络规划、认证、计算、存储等多个层面。很多教程在前期环境准备上语焉不详导致后续安装频频报错。本文将聚焦于部署前必须完成的基础文件配置包括网络规划、主机名、域名解析、时间同步、数据库及消息队列的初始化配置等。通过清晰的步骤和可复制的配置示例你将能建立一个稳定、标准的基础环境为后续顺利安装各 OpenStack 服务组件扫清障碍。本文适合有一定 Linux 系统管理基础希望动手实践 OpenStack 部署的开发者、运维工程师或学生。我们将基于一个典型的最小化双节点控制节点计算节点架构进行演示确保每一步都有据可依配置即所得。1. 核心能力速览在深入配置细节前我们先通过下表快速了解本次 OpenStack 基础配置所涵盖的核心内容与目标环境。能力项说明项目类型开源云计算平台IaaS基础环境配置核心目标为 OpenStack 服务Keystone, Nova, Neutron等提供稳定运行的底层环境推荐架构最小化双节点1控制节点 1计算节点操作系统CentOS 7 / Rocky Linux 8 / Ubuntu 20.04 LTS 等主流发行版关键配置网络规划、主机名与解析、时间同步NTP/Chrony、数据库MariaDB、消息队列RabbitMQ、Memcached环境隔离建议在物理机、VMware/KVM 虚拟机或专用服务器上操作配置方式命令行手动编辑配置文件配合脚本化验证最终成果获得一个数据库可连接、消息队列可通信、各节点时间与网络互通的标准环境2. 适用场景与使用边界2.1 适合谁用云计算学习者希望通过亲手搭建深入理解 OpenStack 各组件交互原理。企业内部开发/测试团队需要一套隔离的、可定制的云环境来部署和测试应用程序。运维工程师为构建私有云或混合云平台进行技术预研和原型验证。高校教学与科研用于云计算相关课程实验或科研项目的底层平台。2.2 能解决什么问题环境标准化问题解决因主机名混乱、网络不通、时间不同步导致的组件间通信失败。依赖服务就绪问题确保数据库、消息队列等核心依赖在 OpenStack 服务启动前已正确安装并配置。配置可追溯问题提供清晰的配置模板和备份方法便于排查问题和批量部署。2.3 不适合什么场景生产环境直接套用本文为基础配置指南生产环境需根据实际负载、高可用、安全策略进行深度定制和加固。完全无 Linux 基础的用户需要使用者具备基本的 Linux 命令行操作、文件编辑和网络知识。追求极简一键部署OpenStack 的复杂性决定了其部署过程涉及大量手动配置旨在理解过程而非追求全自动化。2.4 安全与合规边界网络隔离实验环境建议使用独立的物理网络或 VLAN避免影响现有生产网络。防火墙策略配置过程中会开放特定端口在实验完成后或生产部署时必须根据最小权限原则收紧防火墙规则。密码管理文中示例使用了简单密码如openstack在实际部署中必须使用强密码并妥善保管。权限控制遵循最小权限原则避免直接使用 root 用户运行所有服务后续应创建专门的 service 用户。3. 环境准备与前置条件在开始编辑任何配置文件之前必须确保底层环境满足要求。以下是一个通用的检查清单。3.1 硬件与节点规划我们采用最经典的双节点架构进行演示控制节点 (Controller)运行所有管理服务如 API、调度、数据库等。建议至少 4核 CPU8GB 内存100GB 磁盘。计算节点 (Compute)运行虚拟机实例。建议至少 2核 CPU4GB 内存50GB 磁盘额外为实例镜像和存储准备空间。3.2 操作系统与软件版本操作系统以 CentOS 7 或 Rocky Linux 8 为例。确保系统为最小化安装并已更新到最新稳定版。网络各节点至少有两块网卡管理网络 (Management Network)用于节点间内部通信如数据库、消息队列。例如控制节点:192.168.100.10计算节点:192.168.100.20。提供商网络 (Provider Network)用于虚拟机连接外部网络如互联网。通常使用物理网卡桥接或 VLAN。主机名必须正确设置且能互相解析。3.3 通用前置操作所有节点在配置具体服务前需要在所有节点上执行以下基础操作。# 1. 关闭并禁用防火墙实验环境生产环境需配置策略 systemctl stop firewalld systemctl disable firewalld # 2. 关闭 SELinux实验环境简化操作 setenforce 0 sed -i s/^SELINUX.*/SELINUXpermissive/ /etc/selinux/config # 3. 更新系统并安装基础工具 yum update -y yum install -y vim net-tools wget chrony4. 网络规划与主机配置这是整个基础配置的基石错误将导致后续所有服务无法互通。4.1 配置静态 IP 与主机名假设管理网段为192.168.100.0/24。在控制节点 (192.168.100.10) 上操作# 编辑网络配置文件以CentOS 7为例网卡名可能为ens33, ens34等请根据实际情况修改 vim /etc/sysconfig/network-scripts/ifcfg-ens33将内容修改为类似如下管理网卡TYPEEthernet BOOTPROTOstatic DEVICEens33 ONBOOTyes IPADDR192.168.100.10 NETMASK255.255.255.0 GATEWAY你的网关地址 # 如果仅内部通信可不设 DNS1你的DNS地址# 设置主机名 hostnamectl set-hostname controller # 编辑hosts文件添加所有节点的解析 vim /etc/hosts在/etc/hosts文件末尾添加192.168.100.10 controller 192.168.100.20 compute1在计算节点 (192.168.100.20) 上执行类似操作设置主机名为compute1并在/etc/hosts文件中添加同样的两行解析记录。4.2 配置时间同步 (Chrony)所有节点时间必须高度一致否则会导致认证失败等各种诡异问题。在控制节点上配置 Chrony 服务端# 1. 安装chrony如果尚未安装 yum install -y chrony # 2. 编辑配置文件允许计算节点同步 vim /etc/chrony.conf找到allow指令修改或添加# 允许192.168.100.0/24网段的主机同步 allow 192.168.100.0/24 # 注释掉或添加可用的外部NTP服务器如 server ntp.aliyun.com iburst# 3. 启动并设置开机自启 systemctl enable chronyd systemctl start chronyd在计算节点上配置 Chrony 客户端vim /etc/chrony.conf将 server 指向控制节点server controller iburstsystemctl enable chronyd systemctl start chronyd在所有节点验证时间同步chronyc sources -v输出中应看到^*标记的同步源状态为^*。5. 核心依赖服务安装与配置以下操作主要在控制节点上执行为 OpenStack 服务提供数据库和消息总线。5.1 安装与配置 MariaDB 数据库OpenStack 大多数服务使用数据库存储信息。# 1. 安装 MariaDB 服务器和客户端 yum install -y mariadb mariadb-server python2-PyMySQL # 2. 创建并编辑数据库配置文件 vim /etc/my.cnf.d/openstack.cnf添加以下内容重点是绑定地址和字符集[mysqld] bind-address 192.168.100.10 default-storage-engine innodb innodb_file_per_table on max_connections 4096 collation-server utf8_general_ci character-set-server utf8# 3. 启动数据库并设置开机自启 systemctl enable mariadb systemctl start mariadb # 4. 运行安全初始化脚本设置root密码如openstack mysql_secure_installation按照提示设置 root 密码并移除匿名用户、禁止远程 root 登录等。5.2 安装与配置 RabbitMQ 消息队列OpenStack 服务通过消息队列进行异步通信。# 1. 安装 RabbitMQ yum install -y rabbitmq-server # 2. 启动服务并设置开机自启 systemctl enable rabbitmq-server systemctl start rabbitmq-server # 3. 添加 openstack 用户并设置密码如openstack rabbitmqctl add_user openstack openstack # 4. 为 openstack 用户配置读写权限 rabbitmqctl set_permissions openstack .* .* .*5.3 安装与配置 MemcachedKeystone认证服务使用 Memcached 来缓存令牌。# 1. 安装 Memcached yum install -y memcached python-memcached # 2. 编辑配置文件修改监听地址 vim /etc/sysconfig/memcached将OPTIONS行修改为监听控制节点的管理IPOPTIONS-l 127.0.0.1,::1,192.168.100.10# 3. 启动服务并设置开机自启 systemctl enable memcached systemctl start memcached6. 功能测试与基础环境验证在继续安装 OpenStack 组件之前必须验证上述基础服务是否正常工作。6.1 验证网络互通与主机名解析在控制节点上测试ping -c 4 compute1应能收到来自192.168.100.20的回复。在计算节点上测试ping -c 4 controller应能收到来自192.168.100.10的回复。6.2 验证数据库连接在控制节点上使用之前设置的密码登录 MariaDBmysql -u root -p输入密码后应成功进入MariaDB [(none)]提示符。执行SHOW DATABASES;查看数据库列表然后exit;退出。6.3 验证 RabbitMQ 状态# 查看 RabbitMQ 用户列表确认 openstack 用户已存在 rabbitmqctl list_users输出中应看到openstack用户。6.4 验证 Memcached# 使用 telnet 测试 Memcached 服务 yum install -y telnet # 如果未安装 telnet controller 11211连接成功后输入stats并按回车应返回一系列统计信息。输入quit退出。6.5 验证时间同步再次在所有节点运行chronyc tracking查看System time和Last offset确保各节点时间偏差在毫秒级。7. 准备 OpenStack 安装源与通用组件基础服务就绪后我们需要配置 OpenStack 的软件源并安装一些所有服务都可能需要的客户端和公共库。7.1 配置 OpenStack 软件仓库以 Rocky Linux 8 和 Train 版本为例# 启用必要的 EPEL 和 PowerTools 仓库 dnf install -y epel-release dnf config-manager --set-enabled powertools # 安装 OpenStack Train 仓库 dnf install -y centos-release-openstack-train # 更新系统 dnf update -y7.2 安装 OpenStack 客户端及公共工具# 安装 OpenStack 命令行客户端后续管理必备 dnf install -y python3-openstackclient # 安装 openstack-selinux 包用于自动管理 SELinux 策略如果SELinux开启 dnf install -y openstack-selinux8. 常见问题与排查方法在配置基础环境时你可能会遇到以下典型问题。问题现象可能原因排查方式解决方案节点间无法 ping 通1. 防火墙未关闭2. 网卡配置错误3. 网络设备交换机问题1.systemctl status firewalld2.ip addr查看IP3.cat /etc/hosts检查解析1. 关闭防火墙或放行ICMP2. 核对网卡配置文件3. 检查物理连接和VLAN主机名解析失败/etc/hosts文件配置错误或未配置ping 主机名观察解析的IP确保所有节点的/etc/hosts文件内容一致且正确Chrony 时间不同步1. 服务未启动2. 防火墙阻断 123 端口3. server 配置错误chronyc sources -v1. 重启 chronyd2. 关闭防火墙或放行UDP 1233. 检查配置文件 server 指向MariaDB 无法远程连接1.bind-address未改为管理IP2. 用户权限不足1. 检查my.cnf.d/openstack.cnf2. MySQL 内执行SELECT Host, User FROM mysql.user;1. 修改bind-address2. 授权用户GRANT ALL PRIVILEGES ON *.* TO root% IDENTIFIED BY 密码; FLUSH PRIVILEGES;RabbitMQ 服务启动失败1. 主机名解析问题2. Erlang Cookie 问题systemctl status rabbitmq-server查看日志1. 确保/etc/hosts正确2. 检查/var/lib/rabbitmq/.erlang.cookie权限和内容一致性集群场景Memcached 连接被拒绝1. 服务未启动2. 防火墙3. 配置监听地址错误systemctl status memcachedss -tlnp | grep :112111. 启动服务2. 关闭防火墙3. 检查/etc/sysconfig/memcached中OPTIONS参数OpenStack 客户端命令找不到软件仓库未正确配置或包未安装dnf repolist查看仓库which openstack1. 确认仓库已正确安装和启用2. 执行dnf install python3-openstackclient9. 最佳实践与配置备份完成所有基础配置后建议遵循以下实践为后续的 OpenStack 服务安装铺平道路。创建配置备份将修改过的重要配置文件进行备份。# 例如备份网络配置、hosts、数据库配置等 mkdir -p /root/openstack-backup/configs cp /etc/hosts /etc/sysconfig/network-scripts/ifcfg-* /etc/chrony.conf /etc/my.cnf.d/openstack.cnf /etc/sysconfig/memcached /root/openstack-backup/configs/编写验证脚本创建一个简单的 Shell 脚本一键验证基础服务状态。vim /root/check_basic_env.sh#!/bin/bash echo 检查网络连通性 ping -c 2 compute1 echo echo 检查时间同步 chronyc sources -v | head -5 echo echo 检查数据库服务 systemctl status mariadb --no-pager | head -5 echo echo 检查RabbitMQ服务 systemctl status rabbitmq-server --no-pager | head -5 rabbitmqctl list_users | grep openstack echo echo 检查Memcached服务 systemctl status memcached --no-pager | head -5 ss -tlnp | grep :11211chmod x /root/check_basic_env.sh记录所有密码将设置的数据库 root 密码、RabbitMQ 用户密码等记录在安全的地方。后续安装每个 OpenStack 服务时都需要用到。规划下一步基础文件配置完成后接下来通常会按顺序安装以下 OpenStack 服务Keystone (认证) - Glance (镜像) - Nova (计算) - Neutron (网络) - Horizon (仪表板)。每个服务都需要连接到我们刚刚配置好的数据库和消息队列。10. 总结与下一步至此OpenStack 搭建中最繁琐、最基础的文件配置部分已经完成。我们系统性地完成了网络规划、主机配置、时间同步并部署了 MariaDB、RabbitMQ、Memcached 这三个核心依赖服务。你现在拥有的不是一个可以创建虚拟机的云平台而是一个为云平台准备好的、稳固的地基。这个地基最关键的价值在于标准化和可通信所有节点在相同的时钟下运行通过确定的主机名和IP地址相互寻址并通过数据库和消息队列可靠地交换数据。后续无论安装 Keystone、Nova 还是 Neutron它们都将以这个环境为起点进行连接和配置。最容易踩的坑往往集中在第一步网络和主机名解析。务必反复使用ping和cat /etc/hosts进行验证。另一个常见问题是服务启动顺序一定要确保数据库和 RabbitMQ 在安装任何 OpenStack 服务之前就已经处于运行状态。接下来你可以开始安装第一个 OpenStack 服务——Keystone认证服务。它将使用我们配置好的 MariaDB 来存储用户和项目信息使用 Memcached 来缓存令牌。有了今天打下的基础后续服务的安装配置将会更加顺畅因为大部分底层通信问题已经被提前解决。建议将本文的配置步骤和验证脚本保存好它们不仅是本次实验的路线图也是未来排查问题时的关键参考。
返回列表