嘘~ 正在从服务器偷取页面 . . .

CentOS 7 / RHEL7 部署高可用集群High-Avaliablity Cluster


一,安装规划

1.1基本介绍

高可用性集群又称Failover-cluster(主动-被动集群)是生产环境中使用最广泛的集群类型之一。这种集群为您提供了服务的持续可用性,即使计算机组中的某个节点出现故障。如果服务器运行的应用程序由于某种原因(硬件故障)失败,集群软件(pacemaker)将在另一个节点上重新启动应用程序。

在生产环境中,您会发现这种类型的集群主要用于数据库、自定义应用程序和文件共享。故障转移不仅仅是启动一个应用程序;它有一系列的相关操作;像安装文件系统一样,配置网络和启动依赖应用程序。 CentOS 7 / RHEL 7使用pacemaker支持故障转移集群,我们将在这里讨论如何将apache (web)服务器配置为高可用的应用程序。正如我所说,故障转移是一系列操作,因此我们需要将文件系统和网络配置为资源。对于文件系统,我们将使用iSCSI存储中的共享存储。

1.2节点规划

节点

Hostname

IP地址

Node1

node01.cluster.local

172.16.10.11

Node2

node02.cluster.local

172.16.10.12

iSCSI-Server

iscsinode.cluster.local

172.16.10.13

1.3 安装环境

本次安装采用VMware虚拟机的形式部署三个节点,所有节点OS版本为CentOS 7.5

二,部署iSCSI节点

2.1 说明
共享存储是高可用性集群中的重要资源之一,它包含运行中的应用程序的数据。集群中的所有节点都可以访问共享存储中的应用和数据,SAN是生产环境中使用最广泛的共享存储;在这里,我们将使用iSCSI存储配置一个集群用于演示目的。

2.2 开始部署
在这里,我们将在iSCSI服务器上创建50GB的LVM磁盘,作为集群节点的共享存储。
2.2.1 查看可用磁盘
fdisk –l grep –i sd

我们将使用/dev/sdb来创建LVM

2.2.2 创建LVM
执行以下命令:
pvcreate /dev/sdb
vgcreate vg_iscsi /dev/sdb
lvcreate –l 100%FREE –n lv_iscsi vg_iscsi

2.2.3 创建iSCSI Target
安装targetcli package, yum install targetcli -y

配置iSCSI Target,执行以下命令:
targetcli
cd /backstores/block
create iscsi_shared_storage /dev/vg_iscsi/lv_iscsi
cd /iscsi
create iqn.2018-09.local.cluster.iscsinode:cluster
cd /iscsi/iqn.2018-09.local.cluster.iscsinode:cluster/tpg1/acls
create iqn.2018-09.local.cluster.iscsinode:node01node02
cd /iscsi/ iqn.2018-09.local.cluster.iscsinode:cluster/tp1/
set attribute authentication=0
set attribute generate_node_acls=1
cd /iscsi/iqn.2018-09.local.cluster.iscsinode:cluster/tp1/luns
create /backstores/block/iscsi_shared_storage

检查配置并保存退出
cd /
ls
saveconfig
exit

Enable并重启target服务

添加防火墙规则

三,配置iSCSI Initiator

分别在两台HA节点上执行以下操作配置iSCSI Initiator

3.1 安装iSCSI Initiator
yum install iscsi-initiator-utils -y

3.2发现Target
iscsiadm -m discovery -t st -p 172.16.10.13

3.3 修改iscsi initiator名称
vi /etc/iscsi/initiatorname.iscsi

3.4 注册target
Iscsiadm –m node –T iqn.2018-09.local.cluster.iscsinode:cluster –p 172.16.10.13 -l

3.5 重启并Enable Initiator服务
systemctl restart iscsid.service
systemctl enable iscsid.service

四,配置HA集群节点

4.1 配置LVM
执行以下操作,在两个节点上创建LVM
确认两个节点都已经可以看到iSCSI共享存储

4.2 在节点1上创建LVM
执行以下操作:
pvcreate /dev/sdb
vgcreate vg_apache /dev/sdb
lvcreate -n lv_apache -l 100%FREE vg_apache
mkfs.ext4 /dev/vg_apache/lv_apache

4.3 在节点2上验证LVM
pvscan
vgscan
lvscan

4.4 确认LVM配置正确

4.5 编辑Hosts
在每个节点上为所有节点创建一个主机条目,集群将使用主机名相互通信。在所有集群节点上执行任务。
vi /etc/hosts

4.6 安装集群软件pacemaker
在两个节点上安装pacemaker,yum install pcs fence-agents-all -y

4.7 添加防火墙规则
firewall-cmd –permanent –add-service=high-availability
firewall-cmd –add-service=high-availability
firewall-cmd –reload

Firewall-cmd –list-service

4.8 集群管理账号设置
为hacluster用户设置密码,此为群集管理帐户。建议为所有节点设置相同的密码。

4.9 启动集群服务
执行以下命令启动集群服务并设置为开机自动启动
systemctl start pcsd.service
systemctl enable pcsd.service

五,创建集群

5.1 节点授权
使用以下命令授权节点,在任何一个节点中运行该命令即可
pcs cluster auth node01.cluster.local node02.cluster.local

5.2 创建集群
pcs cluster setup –start –name centos_cluster node01.cluster.local node02.cluster.local

设置开机自动启用集群,否则每次重新启动系统时都需要手动启动集群。
pcs cluster enable –all

5.3 查看集群状态
pcs cluster status

运行下面的命令以获得关于集群的详细信息,包括其资源、pacemaker状态和节点详细信息
pcs status

六,配置Apache

经过上面的配置,HA高可用集群已经创建完成,下面我们通过配置简单的Apache服务来验证集群的高可用。

6.1 安装Apache
在两个节点上安装Apache
yum install –y httpd

编辑Apache配置文件,在配置文件中添加下图中的内容,两个节点上都要编辑
vi /etc/httpd/conf/httpd.conf

6.2 配置Apache使用共享存储
配置使用共享存储来存储web内容(HTML)文件。在Node01上执行以下操作
mount /dev/vg_apache/lv_apache /var/www/
mkdir /var/www/html
mkdir /var/www/cgi-bin
mkdir /var/www/error
restorecon –R /var/www

编辑index.html,这里使用输入重定向的方式简单编辑了一下, 也可以通过VIM直接编辑

编辑完成后,umount /var/www 注意如果不执行此操作,集群中的其它节点将无法正常访问apache目录

添加防火墙规则
firewall-cmd –add-service=http
firewall-cmd –permanent –add-service=http
firewall-cmd –reload

6.3 创建共享资源
为Apache服务器创建一个文件系统资源,并使用iSCSI服务器的共享存储。
pcs resource create httpd_fs Filesystem device=”/dev/mapper/vg_apache-lv_apache” directory=”/var/www” fstype=”ext4” –group apache

6.4 配置Floating IP
创建一个IP地址资源,该 IP为访问Apache的虚拟IP。用户将使用此ip地址访问Apache web内容,而不是访问单个节点的IP地址。 将地址设置为172.16.10.10
pcs resource create httpd_vip IPaddr2 ip=172.16.10.10 cidr_netmask=24 –group apache

6.5 配置heartbeat
创建一个Apache资源,它将监视Apache服务器的状态,并在出现任何故障时将资源移动到另一个节点
pcs resource create httpd_ser apache configfile=”/etc/httpd/conf/httpd.conf” statusurl=”http://127.0.0.1/server-status“ –group apache

6.6 检查集群状态
在两个节点上检查集群状态,如下图,可以看到节群中两个节点都是在线状态,并且Apache运行在node01上。

七,验证集群

7.1访问Apache
确认集群启动并运行后,通过浏览器访问Apache的虚拟ip,确认可以正常访问

7.2 停止node01的集群服务
因为当前Apache服务是运行在node01上,所以我们现在关闭node01的集群服务,来模拟节点1出现故障不可访问
pcs cluster stop node01.cluster.local

在节点2上查看集群状态,可以看到现在只有node02是在线状态,并且Apache服务已经切换到node02上

关闭浏览器,并重新打开访问Apache虚拟IP地址,确认Apache依然可以正常访问。 这说明HA高可用是有效的,web服务已经从node01切换到node02上。

7.3 资源回切
当故障节点修复后,如果我们需要将服务重新切换到修复的节点上运行,可按以下方 式操作
重新启动Node01的集群服务

可以看到两个节点都已经处于在线状态,但是Apache服务还是运行在node02上,并没有自动切换回node01

在node02上运行使用以下命令,将node02节点设置为备用,Apache服务将会切换回node01
pcs node standby

八,关于隔离设备(Fencing Devices)

隔离设备是一种硬件/软件设备,它通过重置节点/断开问题节点访问共享存储的连接。由于我这里的实验是以VM的方式搭建的集群环境,所以没有配置隔离设备。对于实际的生产环境,或者以物理机部署的高可用集群来说,隔离设备(Fencing Devices)是集群的重要组成部分。使用隔离设备可以防止“脑裂”现象的产生,从而保证集群的正常运行。

关于“脑裂”:
当集群中的两个节点(或者多个节点)同时认为自已是唯一处于活动状态的服务器时,就会出现争用资源的情况,这种争用资源的场景即是所谓的“脑裂”(split-brain)或”区间集群“(partitioned cluster)。

导致“脑裂”的原因通常有以下几点:
● 心跳链路故障:比如当联系2个节点的“心跳线”断开时,由于相互失去了联系,都以为是对方出了故障,这时两个节点都开始控制服务和资源,出现资源争抢,导致业务服务不可用
●  活动节点假死:当活动节点负载过高,系统响应变慢,这时有可能对心跳的回应也出现停止或延迟,备用节点再接收不到主节点的回应后,判断主节点已经出现故障,开始接管资源和服务,出现资源争抢,导致业务服务不可用
●  磁盘故障:如果心跳方式采用的是共享磁盘的方式,当共享磁盘出现故障时,节点之间失去联系,同样会导致各节点之间开始资源争抢,导致业务服务不可用。产生脑裂现象

关于隔离设备(Fencing Devices)的详细配置,可通过以下链接进行了解:
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/high_availability_add-on_administration/s1-fenceconfig-haaa


文章作者: kclouder
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 kclouder !
  目录