《OpenStack高可用集群(下册):部署与运维》—11.3 OpenStack集群高可用部署实验环境准备

举报
华章计算机 发表于 2019/05/29 16:06:10 2019/05/29
【摘要】 本书摘自《OpenStack高可用集群(下册):部署与运维》一书中的第11章,第11.3.1节,作者是山金孝。

11.3OpenStack集群高可用部署实验环境准备

在正式部署OpenStack相关集群软件之前,应该事先初始化操作系统,使得其满足运行OpenStack集群所需的系统环境,如离线yum源、NFS服务器、NTP时钟同步、SELinux和Firewall设置等,同时还需根据用户自己的网络环境规划好IP网段和IP地址,以及每块物理网卡承载何种网络等。由于推荐采用操作系统最小化安装,因此对于需要创建KVM虚拟机的操作系统,还需安装相应的虚拟化支持安装包。在本实验环境中,操作系统准备分为控制节点系统准备和计算节点系统准备。下面分别对这两种角色的操作系统进行初始化准备。

11.3.1 控制节点VMware宿主机准备

1. VMware虚拟机创建

在本实验中,为了实现控制节点的Fencing功能,控制节点由三个位于VMware虚拟机中的KVM虚拟机构成,VMware虚拟机安装Centos7.2操作系统,作为控制节点的KVM虚拟机同样安装Centos7.2操作系统。为了实现控制节点高可用,实验环境中OpenStack高可用集群控制节点由独立的三台VMware虚拟机提供,如图11-13所示,每台VMware虚拟机分别命名为controller1、controller2和controller3。

OpenStack高可用集群的三台控制节点将分别由图11-13中所示的三台VMware虚拟机各自创建的KVM虚拟机承担,并将控制节点KVM虚拟机分别命名为controller1-vm、controller2-vm和controller3-vm。

image.png

三台VMware虚拟机的资源配置是相同的,为了保证VMwrae虚拟机可以与外部和内部网络通信,同时为了实现KVM虚拟机能与外部网络和内部网络通信,需要为VMware虚拟机创建四块网卡,如图11-14所示,

image.png

其中两块网卡能够与外部网络(如Internet)通信(网路连接为NAT模式),另外两块用于管理内部网络(网络连接为仅主机模式),并且为了保证KVM虚拟机与外部和内部网络的正常通信,VMware虚拟机中的两块网卡后续将会被配置为网桥。

VMware虚拟机网卡IP配置方式可以采用DHCP形式。对于NAT连接模式,VMware在Windows系统中的网络名称为VMnet8;对于仅主机模式,在Windows系统中对应的网络名称为VMnet1。因此,对于NAT和仅主机模式的网卡,用户只需在VMwareWorkstaion中的“编辑”菜单中选择“虚拟网络编辑器”功能选项,即可对VMnet1和VMnet8进行编辑,如图11-15所示。为了实现NAT和仅主机模式的DHCP功能,只需分别为VMnet1和VMnet8开启DHCP功能,并设置对应的DHCP网段即可。

image.png

图11-15 开启VMware仅主机和NAT模式的DHCP功能

需要再次强调的是,为了最大限度使用服务器资源,VMware虚拟机建议采用最小化安装方式安装Centos 7/RHEL 7系统。最小化方式安装速度非常快,但是很多针对特定场景的功能模块均没有被安装,为了满足特定功能场景需求,后续用户需要自己手动安装所需的软件包。

2.网卡重命名

在Centos 7/RHEL 7中,网卡命名不再遵从原来的命名规则,而是启用了最新的命名方式。Centos 7/RHEL 7中systemd和udevd支持不同的命名方案,默认是根据固件、拓扑及位置信息分配固定名称。这种命名方法的优点是完全自动且可预测后续新增设备的名称,即使添加或者删除硬件名称也不会发生改变,而且可以在不产生任何影响的情况下替换故障硬件。这种命名方式的缺点是,名称比以前使用的更难读写,如以前的网卡名称eth0在Centos 7/RHEL 7中被命名为eno16777736,在读写引用时非常不便。图11-16所示是最小化安装后,controller1这台VMware虚拟机中Centos7.2操作系统中的网卡名称。

image.png

图11-16 VMware虚拟机controller1中的网卡命名情况

为了便于记忆和使用,建议在正式使用系统之前将Centos 7/RHEL 7这种网卡命名方式改为之前的ethx形式。对于大规模集群节点而言,手工更改显然不现实,读者可以参考如下代码对集群节点进行批量更改。运行如下代码之后,节点中全部用户网卡都会被重新命名,即由原来的enoxxxx现实变为ethx形式。

#/usr/bin/bash

#this script will change default ifcfg-enoxxxx to ifcfg-ethx 

ls -l /etc/sysconfig/network-scripts|awk  '/ifcfg-eno[0-9]*/ {print \$9}' > default_nic_name.txt

i=0

cat default_nic_name.txt| while read line

do

cd /etc/sysconfig/network-scripts

name=$(echo $line|cut -b 7-)

cp $line ${line}.bak

sed -i "s/$name/eth${i}/g" $line

sed -i 's/ONBOOT=no/ONBOOT=yes/g' $line

mv $line ifcfg-eth${i}

i=$(expr $i + 1)

done

sed -i '/GRUB_CMDLINE_LINUX=/d' /etc/default/grub 

echo 'GRUB_CMDLINE_LINUX="rd.lvm.lv=centos/root rd.lvm.lv=\

centos/swap crashkernel=auto net.ifnames=0 biosdevname=0 rhgb \

quiet"' >> /etc/default/grub 

grub2-mkconfig -o /boot/grub2/grub.cfg

reboot

上述代码在系统重启后生效,并且重启系统或network服务之后,对应的网卡将会从VMware的VMnet1和VMnet8中自动获取IP地址。图11-17所示为controller1这台VMware虚拟机中的Centos7.2系统在运行上述代码后的网卡信息。对比图11-16可以看到,运行上述代码重命名网卡之后,controller1中对应的四块网卡被分别命名为eth0、eth1、eth2和eth3,同时对应NAT连接模式的eth0和eth1从VMnet8中获取到了192.168.115.0网段的IP地址,对应仅主机模式的eth2和eth3从VMnet1中获取到了192.168.142.0网段的IP地址。

image.png

图11-17 VMware虚拟机controller1中的网卡重命名结果

3.设置主机名

主机名称设置很简单,对于三台VMware虚拟机,主机名称分别设置为controller1、controller2和controller3。主机名需要一个对应的主机IP以便进行地址解析,设置主机名之后,将对应的主机名和IP写入/etc/hosts配置文件中,具体如下:

hostnamectl set-hostname ${NAMEHOST}

echo "${host_ip} ${NAMEHOST}" >>/etc/hosts

4.设置防火墙

对于公有云而言,安全设置是非常重要的环节,尤其是防火墙的设置,需要细化到各个服务和端口。对于私有云环境而言,防火墙显得不是很重要,在启用防火墙的情况下,如果对防火墙规则不是很熟悉,反而会影响很多服务的正常启动和运行。因此在本节中,建议直接关闭防火墙,具体如下:

systemctl stop firewalld.service

systemctl disable firewalld.service

5.设置SELinux

SELinux是一种通过上下文标签来严格设置访问权限的安全机制。SELinux提供了一种灵活的强访问控制(MAC)系统,且内嵌于Linux Kernel中。SELinux定义了系统中每个用户、进程、应用和文件的访问和转变的权限,然后它使用一个安全策略来控制用户、进程、应用和文件这些实体之间的交互,安全策略指定如何严格或宽松地进行检查。SELinux对系统用户是透明的,系统管理员需要考虑在他的服务器中如何制定严格的策略。策略可以根据需要设置为严格或宽松策略。在启用SELinux后,只有同时满足了标准Linux访问控制和SELinux访问控制时,主体才能访问客体。在Centos 7/RHEL 7中,SELinux配置文件为/etc/sysconfig/selinux或/etc/selinux/config,其默认状态为enforcing,同时还有permissive和disable两个状态。通过getenforce命令可以获取SELinux当前状态;通过setenforce 0命令可以将SELinux由enforcing设置为permissive;通过setenforce 1命令可以将SELinux由permissive设置为enforcing。在本节中,建议将SELinux设置为disable以避免不必要的麻烦。永久性的设置需要更改SELinux配置文件并且重启系统,具体如下:

[root@controller1 ~]#sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g"\ 

/etc/selinux/config

[root@controller1 ~]#reboot

6.设置NTP

对集群而言,很多莫名其妙的问题都可以追溯至节点时间不同步这种低级错误上,因此在正式使用部署集群应用之前,首先需要将集群各个节点的时间进行同步。对于私有云环境而言,集群节点可能没法同步到互联网上的时钟源,因此可以将集群中某个节点的时钟作为集群时钟源来同步,使得集群全部节点时钟相对该时钟源节点的时钟是同步的。本节中,将controller1作为NTP时钟源,controller2、controller3、compute1、compute2、controller1-vm、controller2-vm和controller3-vm均与controller1保持时钟同步。NTP客户端节点只需将controller1配置为时钟源即可,为了保证NTP时钟同步,可以设置一个crontab任务,每10分钟主动发起一次时钟同步,如下:

[root@controller2~]#echo "*/10 * * * * /usr/sbin/ntpdate ${NTP_SERVER}\ 

2>&1> /tmp/ntp.log;hwclock -w"

在NTP时钟同步之后,controller1、controller2和controller3之间应该具有相同的日期和时间,如果同时对三个节点运行date命令,则可以看到如下所示相同的日期和时间:

[root@controller1 ~ ]# date

Mon Nov 28 22:46:36 CST 2016

[root@controller3 ~]# date

Mon Nov 28 22:46:36 CST 2016

[root@controller2 ~]# date

Mon Nov 28 22:46:36 CST 2016

7.配置本地yum源

对于离线安装,yum源的配置至关重要。在配置本地yum源之前,用户需要事先根据11.1节中的介绍将RedHat发行版本RDO的RPM包同步到本地。在本节中,controller1同时充当管理节点和NFS服务器,因此在配置yum源之前,务必将Centos7.2操作系统镜像以及OpenStack相关RPM包及其依赖包全部上传到controller1中指定的目录下。在本节环境中,默认将Centos7.2 ISO镜像安装包上传到/data/ISO目录中,将RDO OpenStack安装包分别上传到/data/rdo-openstack-kilo/openstack-common、/data/rdo-openstack-kilo/openstack-kilo和/data/rdo-openstack-epel目录中,之后运行位于Github中的Master控制节点初始化脚本(脚本名称为openstack_master_ctr-nodes_prepare.sh)。脚本将会自动创建本地yum仓库,并自动配置指向本地yum仓库的yum源文件。脚本运行完成之后,用户即可离线安装OpenStack及其依赖包。

对于其他节点,只需将controller1节点通过NFS导出的/data目录和/etc/yum.repos.d目录挂载到本地即可,即其他节点通过NFS共享controller1节点的本地yum源。在controller1节点上配置完成本地yum源后,将会出现如下的yum源配置文件,在后续的软件安装过程中,全部通过如下yum本地源进行离线安装,而不会去访问Internet。

[root@controller1 ~]# cd /etc/yum.repos.d

[root@controller1 yum.repos.d]# ls -l

total 16

-rw-r--r--. 1 root root  77 Nov 28 22:02 centos7-iso.repo

-rw-r--r--. 1 root root 128 Nov 28 22:05 openstack-common.repo

-rw-r--r--. 1 root root 122 Nov 28 22:05 openstack-kilo.repo

-rw-r--r--. 1 root root 109 Nov 28 22:05 rdo-epel.repo

对于其他节点,将通过NFS的形式共享controller1的yum本地源,即集群中全部节点均共享controller1的yum源,因此集群全部节点均可实现离线安装。

8.配置NFS

NFS是集群管理中不可缺少的配置,尤其是在静态共享资源方面,NFS有着得天独厚的优势。在本节的OpenStack集群部署中,controller1被配置为NFS服务器,并将其/data和/etc/yum.repos.d目录共享出去,以便其他集群节点可以通过mount形式挂载共享controller1的本地yum源。对于其他节点,为了实现关机重启后自动挂载/data和/etc/yum.repos.d目录,需要将挂载条目写入/etc/fstab文件中。NFS配置完成后,在controller1上将会看到NFS导出的目标目录:

[root@controller1 ~]# showmount -e

Export list for controller1:

/etc/yum.repos.d *

/data            *

在任意一个NFS客户端,NFS配置完成后,可以看到controller1的/data和/etc/yum.repos.d目录已经被挂载到本地:

root@controller2 ~]# df -h

Filesystem                    Size  Used Avail Use% Mounted on

controller1:/etc/yum.repos.d   36G   17G   19G  48% /etc/yum.repos.d

controller1:/data              36G   17G   19G  48% /data

9.配置libvirt

由于系统采用最小化安装,虚拟化相关功能不被支持,为了后续创建KVM虚拟机,需要手动安装Libvirt相关软件包并启动Libvirtd服务。在启用Libvirtd服务后,系统主机中会自动生成virbr0虚拟交换机,默认情况下主机中的KVM虚拟机均通过该虚拟交换机以NAT形式(即IP伪装,IP Masquerade)与外界通信。由于本节实验中采用桥接形式(Bridge)直接将KVM虚拟机与外界进行通信,因此不会用到virbr0,故将其关闭。对于Intel处理器,支持虚拟化的Linux系统内核中需要加载KVM和KVM_intel模块。如果系统没有自动加载,则需进行手动加载。

10.配置网桥

本节实验环境中的KVM虚拟机将利用VMware宿主机中的网桥直接与外界通信。因此在创建KVM虚拟机之前,需要在VMware宿主机中创建对应的网桥。KVM虚拟机有一个外部网络和一个内部管理网络,因此在VMware宿主机中创建一个外网网桥和一个内网网桥。外网网桥绑定能与外界通信的eth0物理网卡,内网网桥绑定能与内网通信的eth3物理网卡。网桥名称用户可自定义,当网桥设置成功之后,与网桥绑定的eth0和eth3物理网卡将不会被配置IP地址,IP地址被配置到网桥上。

外网和内网网桥创建完成后,系统中将会对应新增两个网络接口,通过brctl命令可以查看到网桥对应的物理网络接口,如下所示:

[root@controller1 ~]# brctl show

bridge name     bridge id               STP enabled     interfaces

ext_br0         8000.000c29b9a285       no              eth0

inter_br0       8000.000c29b9a2a3       no              eth3

[root@controller1 ~]# ip a

......

8: ext_br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP 

    link/ether 00:0c:29:b9:a2:85 brd ff:ff:ff:ff:ff:ff

    inet 192.168.115.100/24 brd 192.168.115.255 scope global ext_br0

        valid_lft forever preferred_lft forever

    inet6 fe80::20c:29ff:feb9:a285/64 scope link 

        valid_lft forever preferred_lft forever

9: inter_br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP 

    link/ether 00:0c:29:b9:a2:a3 brd ff:ff:ff:ff:ff:ff

    inet 192.168.142.100/24 brd 192.168.142.255 scope global inter_br0

        valid_lft forever preferred_lft forever

    inet6 fe80::f099:90ff:fe1d:9a55/64 scope link 

        valid_lft forever preferred_lft forever

......

11.常用工具软件包安装

最小化安装时,很多常用的系统工具均不能使用,如网络配置查看命令行工具ifconfig、网络诊断命令tcpdump、网络文件共享NFS和SMB等服务均无法使用。为了便于日常维护和快速操作,可以适当补充安装常用工具包:

[root@controller1 ~]#yum install fence* bind-utils tcpdump expect \

sos nfs-utils cifs-utils net-tools -y

在实际部署中,上述全部配置过程可以通过脚本自动完成。具体脚本可以参考Github上的开源代码,地址为https://github.com/ynwssjx/Openstack-HA-Deployment,对应的配置脚本为openstack_master_ctr-nodes_prepare.sh,用户只需在controller1节点上运行openstack_master_ctr-nodes_prepare.sh脚本。该脚本将会自动完成上述介绍的集群节点初始化过程。


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。