构建基于openEuler2209的OpenStack云平台

Posted 1688red

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了构建基于openEuler2209的OpenStack云平台相关的知识,希望对你有一定的参考价值。

【说明】 

本指南参考自OpenStack官方文档:OpenStack Installation Guide — Installation Guide documentation

以及openEuler文档:Openstack Train

本文档部署的OpenStack云平台为Train发行版,该发行版是一个稳定的且长期维护的版本。其它版本的部署可参考官方文档。

1 部署环境

1.1 硬件配置

本次部署采用5台华为私有云服务器ECS,也可以使用VMware Workstation虚拟机软件部署,主机系统均用openEuler(5.10.0-106.18.0.68.oe2209.x86_64),节点硬件配置情况如下图所示。

1.2 网络布局 

节点网络布局如下图所示。

利用VMware Workstation虚拟机软件部署时,所有节点的第1块网卡的连接模式均设置为NAT,并通过NAT连接到Internet,控制节点和计算节点的第2块网卡的连接模式均设置为桥接,将其连接到提供商网络(网络地址因人而异,本示例为WIFI网络,地址为192.168.0.0/24)

 其中各节点主机名称和IP地址如下表所示。

节点名称管理网络接口IP地址角色
xgk-ctl192.168.18.200/24控制节点
xgk-cpt192.168.18.201/24计算节点
xgk-blkn1192.168.18.202/24块存储节点
xgk-objn1192.168.18.203/24对象存储节点1
xgk-objn2192.168.18.204/24对象存储节点2

1.3 节点环境配置

1.3.1 配置控制节点环境

1、修改主机名和/etc/hosts文件

[root@localhost ~]# hostnamectl hostname xgk-ctl
[root@localhost ~]# exit
[root@xgk-ctl ~]# vi /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

#增加以下内容
192.168.18.200 xgk-ctl
192.168.18.201 xgk-cpt
192.168.18.202 xgk-blkn1
192.168.18.203 xgk-objn1
192.168.18.204 xgk-objn2

2、配置管理IP地址

控制节点有两张网络适配器,其设备名称可通过命令【ip a】查看,这里指定接口enp4s3连接OpenStack平台管理网络,IP地址设定为192.168.18.200/24。另一个接口enp4s4连接提供商网络,不指定IP地址。

(1)接口enp4s3的配置内容如下

[root@xgk-ctl ~]# vim /etc/sysconfig/network-scripts/ifcfg-enp4s3
TYPE=Ethernet
BOOTPROTO=static
NAME=enp4s3
DEVICE=enp4s3
ONBOOT=yes
IPADDR=192.168.18.200
NETMASK=255.255.255.0
GATEWAY=192.168.18.254
DNS1=114.114.114.114
DNS2=8.8.8.8

(2)接口enp4s4的配置内容如下:

[root@xgk-ctl ~]# vim /etc/sysconfig/network-scripts/ifcfg-enp4s4
TYPE=Ethernet
BOOTPROTO=none
NAME=enp4s4
DEVICE=enp4s4
ONBOOT=yes

3、测试网络并安装基础软件包

完成上述配置后,可测试能否ping通外网,若能,则安装以下基础软件包。

[root@xgk-ctl ~]# dnf -y install vim bash-completion net-tools

4、关闭SELinux

修改SELinux配置文件,将其中的SELINUX设置为disabled或者permissive。

[root@xgk-ctl ~]# setenforce 0
[root@xgk-ctl ~]# vim /etc/sysconfig/selinux 
……此处省略文件原有内容……
SELINUX=disabled

5、关闭防火墙

[root@xgk-ctl ~]# systemctl stop firewalld.service && systemctl disable firewalld.service

6、配置NTP服务

 openEuler2209默认已安装chrony服务,故只需修改该服务配置文件,在该配置文件中,将allow所在行改为管理网络网段。

[root@xgk-ctl ~]# vim /etc/chrony.conf 
……省略文件原有内容……
allow 192.168.18.0/24

然后重启chronyd服务

[root@xgk-ctl ~]# systemctl restart chronyd.service

1.3.3 配置计算节点环境

计算节点的环境配置与控制节点相似,仅主机名和IP地址不同,可参考前面表格中的主机名称和IP地址进行配置,这里就不重复了。

另外,在NTP服务配置部分,计算节点的配置如下:

 (1)修改/etc/chrony.conf文件,将pool所在行注释掉,然后将控制节点设置为时间同步服务器。

[root@xgk-cpt ~]# vim /etc/chrony.conf 
……
#pool pool.ntp.org iburst
server 192.168.18.200 iburst

然后重启chronyd服务 

[root@xgk-cpt ~]# systemctl restart chronyd.service

稍等片刻执行命令【chronyc sources】验证是否同步成功。

[root@xgk-cpt ~]# chronyc sources
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
^* xgk-ctl                       2   6    17    12  -1991us[-3083us] +/-   33ms

1.3.3 配置其它节点环境

其它各节点环境的配置与计算节点相似,这里不重复,要注意的是块存储和对象存储节点只有一个网络接口。

1.4 安装SQL数据库

大多数OpenStack服务使用SQL数据库来存储信息,数据库通常在控制节点上运行。

1.4.1 安装软件包

由于openEuler2209默认已配置好yum源,因此可直接开始安装软件包。

[root@xgk-ctl ~]# dnf -y install mariadb mariadb-server python3-Pymysql

这里的python3-PyMySQL用于openstack的控制端连接mysql所需要的模块,如果不安装,则无法连接数据库。

1.4.2 配置/etc/my.cnf.d/openstack.cnf

该配置文件默认不存在,直接新建并添加以下内容,其中的IP地址为控制节点的管理IP地址。

[root@xgk-ctl ~]# vim /etc/my.cnf.d/openstack.cnf

[mysqld]
bind-address = 192.168.18.200
default-storage-engine = innodb
innodb_file_per_table = on
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8

1.4.3 启动mariadb服务,并将其设置为开机自启动

[root@xgk-ctl ~]# systemctl start mariadb.service 
[root@xgk-ctl ~]# systemctl enable mariadb.service 

1.4.4 增强数据库安全

默认情况下,数据库用户root的密码为空,显然存在安全隐患,可执行mysql_secure_installation命令重置root密码,同时移除匿名用户和测试数据库。

[root@xgk-ctl ~]# mysql_secure_installation
Enter current password for root (enter for none):   #初始密码为空,此处直按按回车
Switch to unix_socket authentication [Y/n] n		#此处输入n
Change the root password? [Y/n] y		#输入y,修改数据库账号root的密码
New password: 			#设置新密码,请牢记该密码
Re-enter new password: 	#再次输入密码
Remove anonymous users? [Y/n] y			#此处输入y删除匿名用户
Disallow root login remotely? [Y/n] n	#此处输入n,允许root账户远程登录
Remove test database and access to it? [Y/n] y		#此处输入y,移除test测试数据库
Reload privilege tables now? [Y/n] y		#此处输入y,刷新权限表

1.5 安装和配置RabbitMQ

OpenStack使用消息队列来协调服务之间的操作和状态信息。消息队列服务通常在控制节点上运行,这里采用RabbitMQ消息队列服务。

1.5.1 安装和启动RabbitMQ

[root@xgk-ctl ~]# dnf -y install rabbitmq-server
[root@xgk-ctl ~]# systemctl enable rabbitmq-server.service && systemctl start rabbitmq-server.service

1.5.2 添加openstack用户

[root@xgk-ctl ~]# rabbitmqctl add_user openstack RABBIT_PASS
Adding user "openstack" ...
Done. Don't forget to grant the user permissions to some virtual hosts! See 'rabbitmqctl help set_permissions' to learn more.

1.5.3 配置openstack用户的操作权限

配置openstack用户的操作权限,允许openstack用户进行配置、写入和读取访问

[root@xgk-ctl ~]# rabbitmqctl set_permissions openstack ".*" ".*" ".*"
Setting permissions for user "openstack" in vhost "/" ...

1.5.4 开启RabbitMQ的web管理界面插件

[root@xgk-ctl ~]# rabbitmq-plugins enable rabbitmq_management
Enabling plugins on node rabbit@xgk-ctl:
rabbitmq_management
The following plugins have been configured:
  rabbitmq_management
  rabbitmq_management_agent
  rabbitmq_web_dispatch
Applying plugin configuration to rabbit@xgk-ctl...
The following plugins have been enabled:
  rabbitmq_management
  rabbitmq_management_agent
  rabbitmq_web_dispatch

started 3 plugins.

RabbitMQ的web管理界面插件端口为15672,打开浏览器,访问http://192.168.18.200:15672,

可打开如下图所示界面。

默认管理账号/密码为: guest/guest,也可以用前面新建的openstack/RABBIT_PASS登录。

1.6 安装和配置memcached

OpenStack的各种服务的身份服务认证机制使用Memcached缓存令牌。memcached服务通常在控制节点上运行。

1.6.1 安装memcached

[root@xgk-ctl ~]# dnf -y install memcached python3-memcached

1.6.2 修改/etc/sysconfig/memcached文件

在文件最后一行的OPTIONS中,添加控制节点的主机名

[root@xgk-ctl ~]# vim /etc/sysconfig/memcached
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS="-l 127.0.0.1,::1,xgk-ctl"

1.6.3 启动memcached服务,并将其设置为开机自启动

[root@xgk-ctl ~]# systemctl enable memcached.service
Created symlink /etc/systemd/system/multi-user.target.wants/memcached.service → /usr/lib/systemd/system/memcached.service.
[root@xgk-ctl ~]# systemctl start memcached.service

完成此步后,可查看11211端口是否处于监听状态

[root@xgk-ctl ~]# netstat -nautp | grep 11211
tcp        0      0 192.168.18.200:11211    0.0.0.0:*               LISTEN      12461/memcached     
tcp        0      0 127.0.0.1:11211         0.0.0.0:*               LISTEN      12461/memcached     
tcp6       0      0 ::1:11211               :::*                    LISTEN      12461/memcached

1.7 安装和配置Etcd服务

OpenStack服务可以使用Etcd,这是一个分布式可靠的密钥值存储库,用于分布式密钥锁定、存储配置、跟踪服务的实时性和其他场景。

1.7.1 安装Etcd服务

[root@xgk-ctl ~]# dnf -y install etcd

1.7.2 编辑/etc/etcd/etcd.conf文件

将该文件中的原有内容全部删除,然后复制以下内容

[root@xgk-ctl ~]# vim /etc/etcd/etcd.conf
#[Member]
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="http://192.168.18.200:2380"
ETCD_LISTEN_CLIENT_URLS="http://192.168.18.200:2379"
ETCD_NAME="controller"
#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.18.200:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.18.200:2379"
ETCD_INITIAL_CLUSTER="controller=http://192.168.18.200:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"
ETCD_INITIAL_CLUSTER_STATE="new"

注:要将其中的IP地址替换为控制节点的管理IP地址。

1.7.3 启动Etcd服务,并将其设置为开机自启动 

[root@xgk-ctl ~]# systemctl enable etcd.service
Created symlink /etc/systemd/system/multi-user.target.wants/etcd.service → /usr/lib/systemd/system/etcd.service.
[root@xgk-ctl ~]# systemctl start etcd.service

成功完成该步骤后,可查看TCP2379和2380端口的监听状态

[root@xgk-ctl ~]# netstat -anutp | grep 2379
tcp        0      0 192.168.18.200:2379        0.0.0.0:*               LISTEN      490985/etcd         
tcp        0      0 192.168.18.200:44582       192.168.18.200:2379        ESTABLISHED 490985/etcd         
tcp        0      0 192.168.18.200:2379        192.168.18.200:44582       ESTABLISHED 490985/etcd              
[root@xgk-ctl ~]# netstat -anutp | grep 2380
tcp        0      0 192.168.18.200:2380        0.0.0.0:*               LISTEN      490985/etcd    

1.8 验证各节点的网络连通性

1.8.1 测试各节点能否访问Internet

示例如下:

[root@xgk-ctl ~]# ping -c4 www.baidu.com
PING www.a.shifen.com (14.215.177.38) 56(84) bytes of data.
64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=1 ttl=128 time=63.4 ms
64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=2 ttl=128 time=29.4 ms
64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=3 ttl=128 time=62.5 ms
64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=4 ttl=128 time=32.9 ms

--- www.a.shifen.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 15443ms
rtt min/avg/max/mdev = 29.374/47.059/63.429/15.973 ms

1.8.2 测试各节点之间能否相互ping,包括ping主机名

示例如下:

[root@xgk-ctl ~]# ping -c4 xgk-cpt
PING xgk-cpt (192.168.18.201) 56(84) bytes of data.
64 bytes from xgk-cpt (192.168.18.201): icmp_seq=1 ttl=64 time=0.664 ms
64 bytes from xgk-cpt (192.168.18.201): icmp_seq=2 ttl=64 time=0.594 ms
64 bytes from xgk-cpt (192.168.18.201): icmp_seq=3 ttl=64 time=0.279 ms
64 bytes from xgk-cpt (192.168.18.201): icmp_seq=4 ttl=64 time=0.584 ms

--- xgk-cpt ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3049ms
rtt min/avg/max/mdev = 0.279/0.530/0.664/0.148 ms

1.9 本文档涉及的密码

在部署过程中,主要涉及的密码如下表所示。

Password name 

Description

ADMIN_PASS

Password of user admin

CINDER_DBPASS

Database password for the Block Storage service

CINDER_PASS

Password of Block Storage service user cinder

DASH_DBPASS

Database password for the Dashboard

DEMO_PASS

Password of user demo

GLANCE_DBPASS

Database password for Image service

GLANCE_PASS

Password of Image service user glance

KEYSTONE_DBPASS

Database password of Identity service

METADATA_SECRET

Secret for the metadata proxy

NEUTRON_DBPASS

Database password for the Networking service

NEUTRON_PASS

Password of Networking service user neutron

NOVA_DBPASS

Database password for Compute service

NOVA_PASS

Password of Compute service user nova

PLACEMENT_PASS

Password of the Placement service user placement

RABBIT_PASS

Password of RabbitMQ user openstack

下一篇: 构建基于openEuler2209的OpenStack云平台(二)

以上是关于构建基于openEuler2209的OpenStack云平台的主要内容,如果未能解决你的问题,请参考以下文章

当OpenHarmony遇上OpenEuler

国产操作系统安装之openEuler-22.03-LTS

高性能处理器架构与编程实验(基础实验1:构建实验环境)

Rancher RFO 正式 GA

Rancher RFO 正式 GA

漫画:什么是openEuler社区?