3.1 控制节点环境准备

系列 - OpenStack云平台部署
摘要
在开始安装 OpenStack 之前,我们首先需要对控制节点(Controller)进行一些基础环境的配置。这些准备工作就像是盖房子前的地基,非常关键。

为了避免实验过程中受到干扰,我们需要先关闭防火墙和 SELinux。

注意
在生产环境中通常需要配置精细的防火墙规则,但在学习和实验阶段,为了降低排错难度,我们选择直接关闭它们。

bash

# 关闭防火墙并设置开机不启动
systemctl stop firewalld
systemctl disable firewalld

# 临时关闭 SELinux
setenforce 0
# 修改配置文件,永久关闭 SELinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

为了让集群里的机器互相认识,我们需要给控制节点起一个规范的名字。

bash

# 设置主机名为 controller
hostnamectl set-hostname controller
提示
设置完主机名后,可以尝试重新登录终端,你会看到前面的提示符变成了 [root@controller ~]

OpenStack 的各个组件对时间非常敏感,如果机器之间时间不同步,会导致各种奇怪的报错。我们使用 chrony 来同步时间。

安装 chrony 包:

bash

yum install chrony -y

修改配置文件 /etc/chrony.conf

我们需要让控制节点作为时间服务器,允许局域网内的其他机器(如计算节点)来同步时间。在文件中添加或修改以下内容:

text

# 允许 192.168.192.0 网段的机器访问
allow 192.168.192.0/24

启动服务:

bash

systemctl enable chronyd
systemctl start chronyd

我们要安装的是 OpenStack 的 Rocky 版本。

安装软件源:

bash

yum install centos-release-openstack-rocky -y

替换为国内镜像源:

由于默认的官方源在国外,下载速度很慢,我们将其替换为阿里云的镜像站。

bash

sed -i 's|^mirrorlist=|#mirrorlist=|g' /etc/yum.repos.d/CentOS-OpenStack-*.repo
sed -i 's|^#baseurl=|baseurl=|g' /etc/yum.repos.d/CentOS-OpenStack-*.repo
sed -i 's|http://mirror.centos.org|http://mirrors.aliyun.com/centos-vault|g' /etc/yum.repos.d/CentOS-OpenStack-*.repo
sed -i 's|http://buildlogs.centos.org|http://mirrors.aliyun.com/centos-vault|g' /etc/yum.repos.d/CentOS-OpenStack-*.repo

更新系统并安装基础工具:

bash

# 升级所有软件包到最新版本
yum upgrade -y

# 安装 OpenStack 客户端和相关的安全插件
yum install python-openstackclient openstack-selinux -y

OpenStack 使用 MariaDB 数据库来存储大部分的状态信息。

安装数据库软件:

bash

yum install mariadb mariadb-server python2-PyMySQL -y

创建并编辑配置文件 /etc/my.cnf.d/openstack.cnf

ini

[mysqld]
# 这里的 IP 地址要替换成你控制节点自己的管理 IP
bind-address = 192.168.192.202 
default-storage-engine = innodb  # 设置默认存储引擎
innodb_file_per_table = on       # 每个表的数据独立保存成文件
max_connections = 4096           # 调高最大连接数,防止服务多了连不上
collation-server = utf8_general_ci  # 设置字符集为 UTF-8,避免乱码
character-set-server = utf8

启动数据库:

bash

systemctl start mariadb
systemctl enable mariadb

数据库安全初始化:

执行下面的命令来设置数据库密码并清理测试数据。

bash

mysql_secure_installation

信息
在初始化过程中,系统会问你一堆问题,除了设置新密码外,其他的通常一路输入 Y 回车即可。

OpenStack 的各个服务之间是通过消息队列进行通信的,RabbitMQ 就像是它们之间的“邮递员”。

安装并启动:

bash

yum install rabbitmq-server -y
systemctl start rabbitmq-server
systemctl enable rabbitmq-server

配置用户:

我们需要创建一个名为 openstack 的用户,密码也设为 openstack

bash

rabbitmqctl add_user openstack openstack

配置权限:

openstack 用户授予读、写和配置的权限:

bash

rabbitmqctl set_permissions openstack ".*" ".*" ".*"

Memcached 主要用于缓存身份认证令牌,可以显著提高 OpenStack 的响应速度。

安装软件:

bash

yum install memcached python-memcached -y

修改配置文件 /etc/sysconfig/memcached

修改 OPTIONS 这一行,确保它监听在控制节点的主机名或 IP 上。

text

OPTIONS="-l 127.0.0.1,::1,controller"

启动服务:

bash

systemctl start memcached
systemctl enable memcached

Etcd 是一个分布式的键值存储系统,OpenStack 使用它来保存一些关键的配置同步信息。

安装软件:

bash

yum install etcd -y

修改配置文件 /etc/etcd/etcd.conf

注意
请务必把下面内容中的 192.168.192.212 替换为你自己控制节点的实际 IP 地址。

ini

#[Member]
ETCD_LISTEN_PEER_URLS="http://192.168.192.212:2380"
ETCD_LISTEN_CLIENT_URLS="http://192.168.192.212:2379"
ETCD_NAME="controller"

#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.192.212:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.192.212:2379"
ETCD_INITIAL_CLUSTER="controller=http://192.168.192.212:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"
ETCD_INITIAL_CLUSTER_STATE="new"

启动服务:

bash

systemctl start etcd
systemctl enable etcd