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

2021-02-28
5分钟阅读时长

【版本】

当前版本号v20230313

版本修改说明
v20230313增加后台进程(服务)说明
v20220208换用VirtualBox
v20210324加入验证部分
v20210301修正控制节点步骤3的说明
v20210227初始化版本

【实验名称】

云计算部署实战 Part 2 - 配置计算节点和控制节点

【实验目的】

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

【实验环境】

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

【实验资源】

  • FinalShell
  • CentOS 7 系统镜像
  • VirtualBox
  • Openstack 源

【实验步骤】

【计算节点】复制

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

  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。注意如果你的网卡名字是enp0s3,则需要编辑/etc/sysconfig/network-scripts/ifcfg-enp0s3
vi /etc/sysconfig/network-scripts/ifcfg-eth0
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. 打开时间同步配置文件,在文件最后增加以下代码,保存退出。
vim /etc/chrony.conf
server 10.0.0.11 iburst
  1. 重启时间同步服务
systemctl restart chronyd

【计算节点】安装 Openstack 客户端和 openstack-selinux

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

【控制节点】复制

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

【控制节点】安装 Openstack 客户端和 openstack-selinux

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

【控制节点】安装和设置 MariaDB

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

  1. 安装配置 MariaDB
yum 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
yum 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
yum install memcached python-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

计算节点验证

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

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

systemctl status chronyd

控制节点验证

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

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

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

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

服务名称日志目录说明
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,你都知道他们的主要功能吗?