Part 2 - 配置计算节点和控制节点

2023-07-01
6分钟阅读时长

【版本】

当前版本号v20230701

版本修改说明
v20230701文档基于 RockyLinux8 和 Openstack Yoga 开发

任务2.1 复制并配置计算节点

【任务目的】

  • 掌握虚拟机的克隆和配置
  • 掌握 Openstack 计算节点

【任务环境】

  • 内存:至少4G
  • 硬盘:至少空余40G
  • 操作系统: 64位 Windows系统。

【任务资源】

  • FinalShell
  • RockyLinux 8 系统镜像
  • VirtualBox 7 或 VMWare Workstation

【任务步骤】

复制模板机为计算节点

  1. 通过复制(克隆) Part1 制作的tmpl模板镜像,新创建一个计算节点镜像。
复制要确保虚拟机处于关闭的状态

  1. 虚拟机名称命名为Computer+你的学号后3位

  2. 启动计算节点,并在 FinalShell 配置 root 用户进行登录。此处过程略。

设置 hostname 和 hosts

  1. 设置计算节点主机名,注意替换学号。例如你的学号是221,则主机名为computer221
hostnamectl set-hostname computer+你的学号后3位
  1. 输出hostname 查看是否修改成功。
hostname
  1. 修改计算节点IP为10.0.0.31。注意如果你的网卡名字是eth0,则需要编辑/etc/sysconfig/network-scripts/ifcfg-eth0
vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
IPADDR=10.0.0.31

使用命令ip a可以查看到网卡名称

  1. 重启计算节点,并使用 root 用户进行SSH登录。

  2. 编辑hosts文件,在文件末增加以下代码,把节点名称映射到相应IP。注意替换学号。

这里注意是在文件末增加内容,不要删除原有内容!
vim /etc/hosts
10.0.0.11 controller+你的学号后3位
10.0.0.31 computer+你的学号后3位
  1. 验证hosts和hostname 配置是否正确。
ping controller+你的学号后3位 -c 4
  • 正常应该返回类似以下内容
64 bytes from controller999 (10.0.0.11): icmp_seq=1 ttl=64 time=0.052 ms
64 bytes from controller999 (10.0.0.11): icmp_seq=2 ttl=64 time=0.046 ms
64 bytes from controller999 (10.0.0.11): icmp_seq=3 ttl=64 time=0.045 ms
64 bytes from controller999 (10.0.0.11): icmp_seq=4 ttl=64 time=0.050 ms

设置时间同步服务 chrony

  1. 打开时间同步配置文件,在文件最后增加以下代码,保存退出。
vim /etc/chrony.conf
server 10.0.0.11 iburst
  1. 重启时间同步服务
systemctl restart chronyd

计算节点验证

  1. 重启计算节点虚拟机。

  2. 计算节点上查看以下服务是否是 active 的状态,注意是 active,不是activing。关于服务的状态可以查看 系统服务状态解释

systemctl status chronyd

任务2.2 复制并配置控制节点

【任务目的】

  • 掌握虚拟机的克隆和配置
  • 掌握 Openstack 控制节点的配置

【任务环境】

  • 内存:至少4G
  • 硬盘:至少空余40G
  • 操作系统: 64位 Windows系统。

【任务资源】

  • FinalShell
  • RockyLinux 8 系统镜像
  • VirtualBox 7 或 VMWare Workstation

【任务步骤】

复制模板机为控制节点

  1. 复制 Part1 制作模板镜像,新创建一个控制节点镜像。

  1. 虚拟机名称命名为Controller+你的学号后3位。参考以上步骤1步骤2

  2. 修改控制节点内存为2G(如果内存足够尽可能分配3G或以上)。

注意以下命令是在控制节点下执行!

设置 hostname 和 hosts

  1. 启动控制节点,并使用 root 用户进行登录。设置控制节点主机名,注意替换学号(不符合要求不给分)。
hostnamectl set-hostname controller+你的学号后3位
  1. 输出hostname 查看是否修改成功。
hostname
  1. 重启控制节点。
reboot
  1. 编辑hosts文件,在文件末增加以下代码,把节点名称映射到相应IP。注意替换学号。
vim /etc/hosts
10.0.0.11 controller+你的学号后3位
10.0.0.31 computer+你的学号后3位
  1. 验证 hosts 和 hostname 配置是否正确。
ping controller+你的学号后3位 -c 4
  • 正常应该返回类似以下内容
64 bytes from controller999 (10.0.0.11): icmp_seq=1 ttl=64 time=0.052 ms
64 bytes from controller999 (10.0.0.11): icmp_seq=2 ttl=64 time=0.046 ms
64 bytes from controller999 (10.0.0.11): icmp_seq=3 ttl=64 time=0.045 ms
64 bytes from controller999 (10.0.0.11): icmp_seq=4 ttl=64 time=0.050 ms
ping computer+你的学号后3位 -c 4
  • 正常应该返回类似以下内容
64 bytes from computer999 (10.0.0.31): icmp_seq=1 ttl=64 time=0.052 ms
64 bytes from computer999 (10.0.0.31): icmp_seq=2 ttl=64 time=0.046 ms
64 bytes from computer999 (10.0.0.31): icmp_seq=3 ttl=64 time=0.045 ms
64 bytes from computer999 (10.0.0.31): icmp_seq=4 ttl=64 time=0.050 ms

设置时间同步

  1. 打开时间同步配置文件,大约在26行,修改 allow 相关代码,保存退出。
vim /etc/chrony.conf
# Allow NTP client access from local network.
allow 10/8

安装 Openstack 客户端和 openstack-selinux

  1. 安装 Openstack 客户端和 openstack-selinux
dnf install python-openstackclient openstack-selinux -y

安装和设置 MariaDB

MariaDB 是非常流行的开源关系型数据库。 Openstack 各个组件都可以使用 MariaDB 来存储数据。

  1. 安装配置 MariaDB
dnf install mariadb mariadb-server python2-PyMySQL -y
  1. 修改 MariaDB 的配置。
echo '[mysqld]
bind-address = 10.0.0.11
default-storage-engine = innodb
innodb_file_per_table
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8'  >/etc/my.cnf.d/openstack.cnf
  1. 设置 MariaDB 为开机启动
systemctl start mariadb
systemctl enable mariadb
  1. 开始 MariaDB 安全配置和初始化。
mysql_secure_installation
  1. 修改 MariaDB 的root用户密码为123456
Enter current password for root (enter for none): ->回车
Set root password? [Y/n] -> 输入y
New password:   -> 输入123456
Re-enter new password:  -> 输入123456
Remove anonymous users? [Y/n] -> 输入y
Disallow root login remotely? [Y/n]  -> 输入y
Remove test database and access to it? [Y/n] -> 输入y
Reload privilege tables now? [Y/n] -> 输入y

安装和设置 RabbitMQ

RabbitMQ 是 Advanced Message Queuing Protocol (AMQP,高级消息队列协议)开放标准的实现,是比较流行的开源消息代理组件。 Openstack 使用 RabbitMQ 作为底层组件来实现不同模块之间的远程调用(RPC)。

  1. 安装 RabbitMQ
dnf install rabbitmq-server -y
  1. 启动 RabbitMQ,并设置为开机启动
systemctl start rabbitmq-server.service
systemctl enable rabbitmq-server.service
  1. 新增 RabbitMQ 用户。用户名为openstack,密码为RABBIT_PASS
rabbitmqctl add_user openstack RABBIT_PASS

正常应该返回 Creating user “openstack” …

  1. 设置 RabbitMQ 用户 openstack 的权限。
rabbitmqctl set_permissions openstack ".*" ".*" ".*"

正常应该返回 Setting permissions for user “openstack” in vhost “/” …

  1. RabbitMQ 启用rabbitmq_management插件。
rabbitmq-plugins enable rabbitmq_management

正常应该返回类似以下信息

The following plugins have been enabled:
  mochiweb
  webmachine
  rabbitmq_web_dispatch
  amqp_client
  rabbitmq_management_agent
  rabbitmq_management

Applying plugin configuration to rabbit@controller999... started 6 plugins.

安装和设置 Memcached

Memcached 是一个基于内存的,开源的分布式对象缓存系统。 Openstack 会使用 Memcached 存储一些短期的对象,例如令牌等。

  1. 安装 Memcached
dnf install memcached python3-memcached -y
  1. 修改 Memcached 的配置,替换 127.0.0.1 为控制节点内网IP。
sed -i 's#127.0.0.1#10.0.0.11#g' /etc/sysconfig/memcached

sed命令可以利用脚本来处理文本文件,包括插入,删除,替换等操作

  1. 重启 Memcached,并设置为开机启动。
systemctl restart memcached.service
systemctl enable memcached.service

安装和设置 etcd

etcd 是一个强一致性,分布式的键值对存储服务。

  1. 安装 etcd
dnf install etcd -y
  1. 配置 etcd
vim  /etc/etcd/etcd.conf
  • 修改以下选项
#[Member]
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="http://10.0.0.11:2380"
ETCD_LISTEN_CLIENT_URLS="http://10.0.0.11:2379"
ETCD_NAME="controller999"
#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://10.0.0.11:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://10.0.0.11:2379"
ETCD_INITIAL_CLUSTER="controller999=http://10.0.0.11:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"
ETCD_INITIAL_CLUSTER_STATE="new"
  1. 设置开机启动。
systemctl enable etcd
systemctl start etcd
  1. 测试 etcd 存储功能。例如学号001对应的学生名字为zhangsan,我们可以把这个键值对存储到 etcd。
etcdctl --endpoints=10.0.0.11:2379 put 001 zhangsan
  • 正常会返回OK
  1. 测试 etcd 读取功能。读取学号001
etcdctl --endpoints=10.0.0.11:2379 get 001
  • 正常会返回
001
zhangsan

控制节点验证

  1. 重启控制节点虚拟机。

  2. 控制节点上查看以下服务是否是 active 的状态。正常应该出现5个服务 active。

systemctl -a |grep -E "UNIT|chronyd|memcached|rabbitmq|mariadb|etcd"

【后台进程(服务)说明】

服务名称日志目录说明
chronyd/var/log/chronychrony是网络时间协议(NTP)的实现。它可以替代ntpd,实现服务器
rabbitmq-server/var/log/rabbitmqRabbitMQ 是高级消息队列协议(AMQP)开放标准的实现,常用于服务器之间的消息通讯,Openstack 使用 RabbitMQ 作为底层组件来实现不同模块之间的远程调用(RPC)。
mariadb/var/log/mariadbMariaDB 是非常流行的开源关系型数据库,它能够兼容MySQL
memcached/var/log/messagesMemcached 是一个基于内存的,开源的分布式对象缓存系统。 Openstack 会使用 Memcached 存储一些短期的对象,例如令牌等。

思考和探索

  1. 为什么服务器的时间需要同步?
  2. 上面提到的一些组件,包括chrony、MariaDB、RabbitMQ、Memcached、etcd,你都知道他们的主要功能吗?

扫码或长按识别访问