ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

OpenStack部署前必做的四大基础配置:网络、数据库、系统调优与认证规划

OpenStack部署前必做的四大基础配置:网络、数据库、系统调优与认证规划 最近在整理本地开发环境时我翻出了几年前做的一个OpenStack实验笔记。当时为了验证一个混合云方案花了一周时间在几台旧服务器上手动部署了一套小规模OpenStack。现在回头看那些密密麻麻的配置文件和命令行很多步骤其实都指向同一个核心问题OpenStack的搭建本质上不是一次性的安装而是一系列基础服务的正确配置与协同。很多人把OpenStack搭建想象成运行一个安装脚本然后坐等成功。但真正踩过坑的人都知道脚本跑完只是开始后续的网络不通、镜像上传失败、实例无法启动才是真正的“主菜”。这些问题的根源大多不在OpenStack本身的高深而在于基础环境——网络、存储、认证——这些“地基”没有打牢。今天我们不谈那些复杂的HA架构或生产级优化就聚焦在搭建OpenStack之前你必须亲手配置好的那些“基础设施”。这些配置决定了你的OpenStack是只能活在实验文档里的玩具还是一个能真正跑起虚拟机的平台。1. 为什么说“基础搭建”比“安装OpenStack”更重要在开始敲命令之前我们需要先扭转一个观念OpenStack不是一个单一的软件而是一个由数十个独立服务项目组成的集合。Neutron管网络Nova管计算Cinder管块存储Glance管镜像……它们之间通过消息队列如RabbitMQ通信通过数据库如MySQL共享状态通过身份服务Keystone相互认证。因此所谓的“搭建OpenStack”第一步其实是搭建一个能让这些服务“住得舒服、聊得顺畅”的底层环境。这个环境主要包括三块网络环境各服务节点之间如何通信管理流量、实例流量、存储流量是否隔离IP地址规划好了吗支撑服务数据库、消息队列、缓存这些“公共设施”是否就位它们的性能和高可用性直接影响上层服务的稳定性。系统与安全操作系统版本、内核参数、时间同步、防火墙策略、SELinux状态这些细节任何一个出问题都可能导致某个OpenStack服务行为异常。跳过这些基础配置直接去装OpenStack组件就像在松软的地基上盖楼楼盖得越高倒塌的风险越大。你遇到的很多“玄学”问题比如实例突然失联、卷创建超时、API调用失败回头排查十有八九是基础层某个配置没到位。2. 搭建前必须完成的四大基础配置假设我们已经准备好了物理服务器或虚拟机并安装了纯净的CentOS 7/Rocky Linux 8或Ubuntu 20.04/22.04系统。接下来请按顺序完成以下四件事。2.1 网络规划与配置为流量画好“车道”OpenStack对网络比较敏感尤其是多节点部署时。即使是All-in-One单机部署也需要理清几种网络类型。核心概念与规划你需要提前规划好以下几种网络的IP段并确保它们之间路由可达或通过特定网卡隔离管理网络Management Network用于OpenStack各服务内部通信如Nova与Neutron的交互、数据库连接、消息队列通信。通常使用一个独立的私有网段如172.16.0.0/24。数据网络Data Network/Tunnel Network用于实例之间的通信特别是跨计算节点的实例会使用VXLAN或GRE等隧道技术流量走这个网络。网段如172.17.0.0/24。外部网络External Network/Provider Network为实例提供访问外网的能力。通常需要一块物理网卡连接到你的公司/实验室的上行交换机。这个网络需要分配真实的、可路由的IP地址。API网络可选将OpenStack的API端点如Horizon dashboard, Keystone暴露给最终用户。在简单实验环境中常与管理网络复用。单节点配置示例对于学习环境我们可以简化使用两张虚拟网卡eth0(NAT网络)用于主机SSH管理和访问外网下载包。IP:192.168.1.100eth1(仅主机网络)用于模拟“管理/数据”网络OpenStack服务间通信和实例隧道流量都走这里。IP:172.16.0.10配置eth1以CentOS 7为例# 编辑网络配置文件 sudo vi /etc/sysconfig/network-scripts/ifcfg-eth1 # 文件内容示例 TYPEEthernet BOOTPROTOstatic NAMEeth1 DEVICEeth1 ONBOOTyes IPADDR172.16.0.10 NETMASK255.255.255.0 # GATEWAY和DNS通常不在此设置除非该网络需要出外网配置完成后重启网络sudo systemctl restart network注意务必关闭NetworkManager对OpenStack所用网卡的管理否则它可能会覆盖你的配置。sudo systemctl disable NetworkManager --now(生产环境慎用需评估)。2.2 支撑服务部署搭建“通信中心”与“记忆库”OpenStack服务是无状态的状态保存在数据库通信通过消息队列。因此这两者的稳定至关重要。1. 数据库MariaDB/MySQLOpenStack支持多种数据库但MariaDB是最常见的选择。# 安装 sudo yum install mariadb-server mariadb-client -y # CentOS/Rocky sudo apt install mariadb-server -y # Ubuntu # 启动并设置开机自启 sudo systemctl enable mariadb --now # 运行安全初始化脚本设置root密码移除测试数据库和匿名用户 sudo mysql_secure_installation安装后你需要为每个OpenStack服务创建独立的数据库和用户。这是后续安装每个组件时都要做的步骤。例如为Keystone创建数据库mysql -u root -p CREATE DATABASE keystone; GRANT ALL PRIVILEGES ON keystone.* TO keystonelocalhost IDENTIFIED BY YOUR_KEYSTONE_DBPASS; GRANT ALL PRIVILEGES ON keystone.* TO keystone% IDENTIFIED BY YOUR_KEYSTONE_DBPASS; FLUSH PRIVILEGES; EXIT;记住‘%’允许从任何主机连接在生产环境中应替换为具体的服务节点IP。2. 消息队列RabbitMQOpenStack服务使用AMQP协议通过消息队列进行异步通信。# 安装 sudo yum install rabbitmq-server -y # CentOS/Rocky sudo apt install rabbitmq-server -y # Ubuntu sudo systemctl enable rabbitmq-server --now sudo rabbitmq-plugins enable rabbitmq_management # 启用管理插件方便Web查看 # 添加OpenStack用户 sudo rabbitmqctl add_user openstack RABBIT_PASS sudo rabbitmqctl set_permissions openstack .* .* .*这里的RABBIT_PASS需要记下来后续所有服务配置中都会用到。3. 缓存服务MemcachedKeystone等服务使用Memcached来缓存令牌Token提升认证性能。sudo yum install memcached python-memcached -y # CentOS/Rocky sudo apt install memcached python3-memcached -y # Ubuntu # 编辑配置通常监听本地即可 sudo vi /etc/sysconfig/memcached # CentOS # 修改 OPTIONS-l 127.0.0.1,::1 如果需要被其他节点访问可改为管理网IP sudo systemctl enable memcached --now2.3 系统环境调优消除潜在的“性能陷阱”与“兼容地雷”操作系统默认配置并非为虚拟化平台设计需要进行一些调整。1. 时间同步NTP/Chrony所有节点时间必须同步否则会导致证书验证失败、日志时间错乱等诡异问题。# CentOS 8/Rocky 8, Ubuntu 使用 chrony sudo yum install chrony -y sudo systemctl enable chronyd --now # 配置后检查同步状态 chronyc sources -v2. 关闭防火墙和SELinux仅限实验环境在学习和PoC环境为了排除干扰通常会暂时关闭它们。生产环境必须基于安全策略重新规划。# 关闭防火墙 sudo systemctl stop firewalld sudo systemctl disable firewalld # Ubuntu使用ufw: sudo ufw disable # 关闭SELinux sudo setenforce 0 sudo sed -i s/^SELINUX.*/SELINUXdisabled/g /etc/selinux/config重要提醒这仅仅是实验环境的权宜之计。生产部署中你需要精确配置防火墙规则和SELinux策略只开放必要的端口。3. 安装基础工具和OpenStack客户端# CentOS/Rocky需要先启用EPEL和OpenStack仓库 sudo yum install epel-release -y sudo yum install centos-release-openstack-版本代号 -y # 如 victoria, wallaby sudo yum update -y # 安装Python OpenStack客户端和常用工具 sudo yum install python3-openstackclient openstack-selinux openstack-utils -y # Ubuntu sudo apt install software-properties-common -y sudo add-apt-repository cloud-archive:版本代号 -y sudo apt update sudo apt upgrade -y sudo apt install python3-openstackclient -y2.4 认证服务Keystone先导配置确立“身份规则”虽然Keystone是OpenStack的第一个核心服务但它的前期配置思维可以提前建立。你需要想好管理用户密码admin用户的密码。服务用户密码每个OpenStack服务如nova, glance在Keystone中都有一个对应的“服务用户”用于相互认证。这些密码需要统一管理。角色Roles至少需要admin和_member_或member角色。端点Endpoints服务访问的URL公开URL、内部URL、管理URL。建议在安装任何组件前用一个文档或密码管理器把这些关键信息确定下来。例如Admin Password: ADMIN_PASS Keystone DB Password: KEYSTONE_DBPASS Glance Password: GLANCE_PASS Nova Password: NOVA_PASS ... Region: RegionOne Public Endpoint IP: 192.168.1.100 # 你的管理节点IP这样在后续配置文件中你就可以从容地填充这些变量避免混乱。3. 基础配置的通用排查链路当事情不对劲时即使严格按照步骤操作也可能因为系统差异、网络抖动或依赖包版本问题导致服务异常。以下是一个通用的基础层排查顺序看服务状态systemctl status 服务名检查服务是否活跃active且没有错误。查服务日志journalctl -u 服务名 -f或tail -f /var/log/服务名/日志文件。日志是定位问题的第一现场关注ERROR和WARNING信息。验网络连通ping管理IP检查节点间通信。netstat -tlnp检查关键端口MySQL的3306 RabbitMQ的5672 Keystone的5000等是否在监听。测数据库连接mysql -u keystone -p -h 管理节点IP用你创建的用户密码测试能否远程连接数据库。验消息队列rabbitmqctl list_users确认用户存在。或者尝试用Python脚本发送测试消息。核配置文件再次检查各服务的配置文件通常在/etc/服务名/下确认数据库连接字符串、消息队列地址、认证信息等关键参数无误尤其注意IP地址和密码。查时间同步chronyc tracking或ntpq -p确认所有节点时间差在秒级以内。遵循这个链路大部分基础服务问题都能被定位。核心思路是先确保“基础设施”网络、数据库、消息队列是通的再去看“上层建筑”OpenStack服务的日志。4. 从“能跑通”到“能使用”你还差什么完成上述基础配置你只是获得了安装OpenStack组件的“入场券”。接下来安装Keystone, Glance, Nova等组件时你会反复用到上面配置好的数据库、消息队列和网络信息。但即使所有服务安装完毕Dashboard也能登录也不代表你的OpenStack就“可用”了。要真正启动一个虚拟机你至少还需要跨越以下两个台阶第一网络配置的“最后一公里”。你配置了Neutron创建了外部网络和子网但实例可能还是无法获取IP或访问外网。这通常涉及到物理网卡与OpenStack外部网络的桥接br-ex。正确的浮动IPFloating IP池配置。路由器Router上网关的设置是否正确。计算节点上是否安装了正确的网络代理OVS或Linux Bridge并启动了。第二镜像与实例类型的准备。你需要一个系统镜像如CirrOS, CentOS, Ubuntu Cloud Image上传到Glance并定义好实例规格Flavor。没有镜像Nova无法创建实例。所以基础搭建配置是“从0到0.5”组件安装是“从0.5到1”而网络和镜像的调试是“从1到100”是让整个平台活起来的关键。很多人卡在最后这一步原因往往可以追溯到最初网络规划时的考虑不周。回过头看OpenStack搭建的复杂性正是源于其架构的模块化和灵活性。这份复杂性要求我们在动手之前必须对底层基础有清晰的规划和扎实的配置。把这些“脏活累活”做好后续的组件安装和业务部署才会变得顺理成章。下次当你再看到一篇OpenStack搭建教程时不妨先问自己它把“基础搭建配置2”这部分讲清楚了吗如果没有那可能只是另一个“看起来很美”的空中楼阁指南。
返回列表