摘要

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

本节内容
本节内容

准备工作

  1. 开启电脑上的 VMnet1 和 VMnet8 两块网卡;
  2. 在 VMware 中开启 controller 节点,并使用 MoboXTerm 进行连接;
  3. 开启虚拟机的虚拟化功能;
  4. 执行以下命令,自动完成环境准备:
curl -s http://192.168.192.205/scripts/env2-2.sh  | bash

环境准备完成
环境准备完成

实验步骤

1. 基础安全设置

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

注意

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

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

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

2. 配置主机名

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

# 设置主机名为 controller
hostnamectl set-hostname controller
提示

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

更新 /etc/hosts 文件,把 192.168.30.129 改成你自己的服务器 IP 地址:

echo "192.168.30.129 controller" >> /etc/hosts

3. 配置 NTP 时间同步

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

安装 chrony 包:

yum install chrony -y

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

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

# 允许所有网段的机器访问同步时间
allow all

启动服务:

systemctl enable chronyd
systemctl start chronyd

4. 安装 OpenStack 运行环境

注:准备工作中已经在 /etc/yum.repos.d/ 目录中创建了相关的镜像源文件。

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

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

# 安装 OpenStack 客户端
yum install -y python2-openstackclient

5. 安装并配置数据库

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

安装数据库软件:

yum install mariadb mariadb-server python2-PyMySQL -y

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

[mysqld]
bind-address = 0.0.0.0
default-storage-engine = innodb  # 设置默认存储引擎
innodb_file_per_table = on       # 每个表的数据独立保存成文件
max_connections = 4096           # 调高最大连接数,防止服务多了连不上
collation-server = utf8_general_ci  # 设置字符集为 UTF-8,避免乱码
character-set-server = utf8

启动数据库:

systemctl start mariadb
systemctl enable mariadb

数据库安全初始化:

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

mysql_secure_installation

6. 安装消息队列 RabbitMQ

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

安装并启动:

# 安装软件包
yum install -y rabbitmq-server 
# 启动服务
systemctl start rabbitmq-server
systemctl enable rabbitmq-server

配置用户:

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

rabbitmqctl add_user openstack openstack

配置权限:

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

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

7. 安装 Memcached 缓存服务

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

安装软件:

yum install memcached python-memcached -y

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

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

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

启动服务:

systemctl start memcached
systemctl enable memcached

8. 安装 Etcd 服务

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

安装软件:

yum install etcd -y

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

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

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

启动服务:

systemctl start etcd
systemctl enable etcd

附:重新设置数据库

# 1. 停止服务
systemctl stop mariadb

# 2. 删除数据库的实际数据文件(极其危险的操作,仅限刚安装且无数据的实验环境环境!)
rm -rf /var/lib/mysql/*

# 3. 重启服务(MariaDB 发现目录空了,会自动重新初始化一组初始系统表)
systemctl start mariadb

# 4. 这时候再让学生重新执行安全脚本
mysql_secure_installation

检查完成情况

curl -s http://192.168.192.205/scripts/3.1.sh | bash