【版本】
当前版本号v20230701
版本 | 修改说明 |
---|---|
v20230701 | 文档基于 RockyLinux8 和 Openstack Yoga 开发 |
任务2.1 复制并配置计算节点
【任务目的】
- 掌握虚拟机的克隆和配置
- 掌握 Openstack 计算节点
【任务环境】
- 内存:至少4G
- 硬盘:至少空余40G
- 操作系统: 64位 Windows系统。
【任务资源】
- FinalShell
- RockyLinux 8 系统镜像
- VirtualBox 7 或 VMWare Workstation
【任务步骤】
复制模板机为计算节点
- 通过复制(克隆) Part1 制作的
tmpl
模板镜像,新创建一个计算节点镜像。
复制要确保虚拟机处于关闭的状态
虚拟机名称命名为
Computer+你的学号后3位
。启动计算节点,并在 FinalShell 配置 root 用户进行登录。此处过程略。
设置 hostname 和 hosts
- 设置计算节点主机名,注意替换学号。例如你的学号是221,则主机名为
computer221
。
hostnamectl set-hostname computer+你的学号后3位
- 输出hostname 查看是否修改成功。
hostname
- 修改计算节点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
可以查看到网卡名称
重启计算节点,并使用 root 用户进行SSH登录。
编辑hosts文件,在文件末增加以下代码,把节点名称映射到相应IP。注意替换学号。
这里注意是在文件末增加内容,不要删除原有内容!
vim /etc/hosts
10.0.0.11 controller+你的学号后3位
10.0.0.31 computer+你的学号后3位
- 验证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
- 打开时间同步配置文件,在文件最后增加以下代码,保存退出。
vim /etc/chrony.conf
server 10.0.0.11 iburst
- 重启时间同步服务
systemctl restart chronyd
计算节点验证
重启
计算节点
虚拟机。在
计算节点
上查看以下服务是否是 active 的状态,注意是 active,不是activing。关于服务的状态可以查看 系统服务状态解释
systemctl status chronyd
任务2.2 复制并配置控制节点
【任务目的】
- 掌握虚拟机的克隆和配置
- 掌握 Openstack 控制节点的配置
【任务环境】
- 内存:至少4G
- 硬盘:至少空余40G
- 操作系统: 64位 Windows系统。
【任务资源】
- FinalShell
- RockyLinux 8 系统镜像
- VirtualBox 7 或 VMWare Workstation
【任务步骤】
复制模板机为控制节点
- 复制 Part1 制作模板镜像,新创建一个控制节点镜像。
注意以下命令是在控制节点下执行!
设置 hostname 和 hosts
- 启动控制节点,并使用 root 用户进行登录。设置控制节点主机名,注意替换学号(不符合要求不给分)。
hostnamectl set-hostname controller+你的学号后3位
- 输出hostname 查看是否修改成功。
hostname
- 重启控制节点。
reboot
- 编辑hosts文件,在文件末增加以下代码,把节点名称映射到相应IP。注意替换学号。
vim /etc/hosts
10.0.0.11 controller+你的学号后3位
10.0.0.31 computer+你的学号后3位
- 验证 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
设置时间同步
- 打开时间同步配置文件,大约在26行,修改 allow 相关代码,保存退出。
vim /etc/chrony.conf
# Allow NTP client access from local network.
allow 10/8
安装 Openstack 客户端和 openstack-selinux
- 安装 Openstack 客户端和 openstack-selinux
dnf install python-openstackclient openstack-selinux -y
安装和设置 MariaDB
MariaDB 是非常流行的开源关系型数据库。 Openstack 各个组件都可以使用 MariaDB 来存储数据。
- 安装配置 MariaDB
dnf install mariadb mariadb-server python2-PyMySQL -y
- 修改 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
- 设置 MariaDB 为开机启动
systemctl start mariadb
systemctl enable mariadb
- 开始 MariaDB 安全配置和初始化。
mysql_secure_installation
- 修改 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)。
- 安装 RabbitMQ
dnf install rabbitmq-server -y
- 启动 RabbitMQ,并设置为开机启动
systemctl start rabbitmq-server.service
systemctl enable rabbitmq-server.service
- 新增 RabbitMQ 用户。用户名为
openstack
,密码为RABBIT_PASS
。
rabbitmqctl add_user openstack RABBIT_PASS
正常应该返回 Creating user “openstack” …
- 设置 RabbitMQ 用户 openstack 的权限。
rabbitmqctl set_permissions openstack ".*" ".*" ".*"
正常应该返回 Setting permissions for user “openstack” in vhost “/” …
- 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 存储一些短期的对象,例如令牌等。
- 安装 Memcached
dnf install memcached python3-memcached -y
- 修改 Memcached 的配置,替换 127.0.0.1 为控制节点内网IP。
sed -i 's#127.0.0.1#10.0.0.11#g' /etc/sysconfig/memcached
sed命令可以利用脚本来处理文本文件,包括插入,删除,替换等操作
- 重启 Memcached,并设置为开机启动。
systemctl restart memcached.service
systemctl enable memcached.service
安装和设置 etcd
etcd 是一个强一致性,分布式的键值对存储服务。
- 安装 etcd
dnf install etcd -y
- 配置 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"
- 设置开机启动。
systemctl enable etcd
systemctl start etcd
- 测试 etcd 存储功能。例如学号
001
对应的学生名字为zhangsan
,我们可以把这个键值对存储到 etcd。
etcdctl --endpoints=10.0.0.11:2379 put 001 zhangsan
- 正常会返回
OK
- 测试 etcd 读取功能。读取学号
001
。
etcdctl --endpoints=10.0.0.11:2379 get 001
- 正常会返回
001
zhangsan
控制节点验证
重启
控制节点
虚拟机。在
控制节点
上查看以下服务是否是 active 的状态。正常应该出现5个服务 active。
systemctl -a |grep -E "UNIT|chronyd|memcached|rabbitmq|mariadb|etcd"
【后台进程(服务)说明】
服务名称 | 日志目录 | 说明 |
---|---|---|
chronyd | /var/log/chrony | chrony是网络时间协议(NTP)的实现。它可以替代ntpd,实现服务器 |
rabbitmq-server | /var/log/rabbitmq | RabbitMQ 是高级消息队列协议(AMQP)开放标准的实现,常用于服务器之间的消息通讯,Openstack 使用 RabbitMQ 作为底层组件来实现不同模块之间的远程调用(RPC)。 |
mariadb | /var/log/mariadb | MariaDB 是非常流行的开源关系型数据库,它能够兼容MySQL |
memcached | /var/log/messages | Memcached 是一个基于内存的,开源的分布式对象缓存系统。 Openstack 会使用 Memcached 存储一些短期的对象,例如令牌等。 |
思考和探索
- 为什么服务器的时间需要同步?
- 上面提到的一些组件,包括chrony、MariaDB、RabbitMQ、Memcached、etcd,你都知道他们的主要功能吗?