Linux运维之RHCS集群套件——Luci/Ricci实现Web高可用集群

一、什么是RHCS?

RHCS即 RedHat Cluster Suite ,中文意思即红帽集群套件,它是一套综合的软件组件,可以通过在部署时采用不同的配置,以满足企业对高可用性,负载均衡,可扩展性,文件共享和节约成本的需要。
它提供有如下两种不同类型的集群:

  • 1、高可用性:应用/服务故障切换-通过创建n个节点的服务器集群来实现关键应用和服务的故障切换
  • 2、负载均衡:IP 负载均衡-对一群服务器上收到的 IP 网络请求进行负载均衡

二、RHCS 集群组成

1、 集群架构管理器

这是RHCS 集群的一个基础套件,提供您一个集群的基本功能,使各个节点组成的集群在一起工作,具体包含分布式集群管理器(CMAN),成员关系管理、锁管理(DLM)配置文件管理(CCS)、栅设备(FENCE)

2、高可用服务管理器

提供节点服务监控和服务故障转移,当一个节点服务出现故障时,将服务转移到另一个健康的节点上。

3、集群配置管理工具

通过LUCI 来管理和配置RHCS集群,LUCI是一个基于web的集群配置方式,通过luci可以轻松的搭建一个功能强大的集群系统,节点主机可以使用ricci来和luci 管理段进行通信

4、Linux virtual server

LVS 是一个开源的负载均衡软件,利用LVS 可以将客户端的请求根据指定的负载策略和算法合理分配到各个节点,实现动态、智能的负载分担。

5、RedHatGS(globalfilesystem)

GFS 是Redhat公司开发的一款集群文件系统,目前最新的版本是GFS2,GFS文件系统允许多个服务同时读写一个磁盘分区,通过GFS可以实现数据的集中管理,免去了数据同步和拷贝的麻烦,但GFS不能独立存在,需要RHCS的底层组件支持

6、clusterlogicalvolumemanger

CLuster 逻辑卷管理,及CLVM,是LVM的扩展,这种允许cluster 中的机器使用LVM来管理共享存储

7、ISCSI

是一种在Internet协议上,特别是以太网上进行数据传输的标准,他是一种基于IPstorage理论的新型存储技术,RHCS可以通过ISCSI技术来导出和分配共享存储的使用。

三、RHCS集群运行原理及功能介绍

1、分布式集群管理器(CMAN)

它运行在各个节点上,为RHCS提供集群管理任务

CMAN 用于管理集群成员、消息和通知。他通过监控每个节点的运行状态来了解节点成员之间的关系,当节点出现故障时,CMAN及时将这种改变通知底层,进而做出相应的调整

2、锁管理(DLM)

表示一个分布式锁管理器,他是RHCS的一个底层基础构建,同时也为集群提供了一个公用的锁运行机制,在RHCS中,DLM运行在集群的每个节点上,GFS通过锁管理机制来同步访问数据系统元数据,CLVM通过锁管理其来同步更新数据到LVM卷和逻辑卷, DLM 不需要设定锁骨哪里服务器,它采用对等的锁管理方式,大大提高了处理性能,同时,DLM避免了当单个节点失败需要整体恢复的性能瓶颈,另外,DLM的请求都是本地的,不需要网络请求,因而请求会立即生效,最后,DLM通过分层机制,可以实现多个锁空间的并行管理模式

3、配置文件管理(CCS)

ClusterConfigurationSystem,简称CCS,主要用于集群配置文件管理和配置文件在节点之间的同步。有时候,luci管理界面可能由于网络等方面的以素并不是那么畅快,CCS就显得很必要了。CCS运行在集群的每个节点上,监控每个集群节点上的单一配置文件/etc/cluster/cluster.conf的状态,当这个文件发生任何变化时,都将此变化更新到集群中的每个节点,时刻保持每个节点的配置文件同步。

例如:

  • 管理员在节点A上更新了集群配置文件,CCS发现A节点的配置文件发生变化后,马上将此变化传播到其它节点上去。

rhcs的配置文件是cluster.conf,它是一个xml文件,具体包含集群名称、
集群节点信息、集群资源和服务信息、fence设备等

4、栅设备(FENCE)

FENCE设备是RHCS集群中必不可少的一个组成部分,通过FENCE设备可以避免因出现不可预知的情况而造成的“脑裂”现象,FENCE设备的出现,就是为了解决类似这些问题,Fence设备主要就是通过服务器或存储本身的硬件管理接口,或者外部电源管理设备,来对服务器或存储直接发出硬件管理指令,将服务器重启或关机,或者与网络断开连接。

FENCE的工作原理是: 当意外原因导致主机异常或者宕机时,备机会首先调用FENCE设备,然后通过FENCE设备将异常主机重启或者从网络隔离,当FENCE操作成功执行后,返回信息给备机,备机在接到FENCE成功的信息后,开始接管主机的服务和资源。这样通过FENCE设备,将异常节点占据的资源进行了释放,保证了资源和服务始终运行在一个节点上。

RHCS的FENCE设备可以分为两种:内部FENCE和外部FENCE,常用的内部FENCE有IBMRSAII卡,HP的iLO卡,还有IPMI的设备等,外部fence设备有UPS、SANSWITCH、NETWORKSWITCH等

5、高可用服务管理器(rgmanager)

高可用性服务管理主要用来监督、启动和停止集群的应用、服务和资源。它提供了一种对集群服务的管理能力,当一个节点的服务失败时,高可用性集群服务管理进程可以将服务从这个失败节点转移到其它健康节点上来,并且这种服务转移能力是自动、透明的。RHCS通过rgmanager来管理集群服务,rgmanager运行在每个集群节点上,在服务器上对应的进程为clurgmgrd。

在一个RHCS集群中,高可用性服务包含集群服务和集群资源两个方面,集群服务其实就是应用服务,例如apache、mysql等,集群资源有很多种,例如一个IP地址、一个运行脚本、ext3/GFS文件系统等。

在RHCS集群中,高可用性服务是和一个失败转移域结合在一起的,所谓失败转移域是一个运行特定服务的集群节点的集合。在失败转移域中,可以给每个节点设置相应的优先级,通过优先级的高低来决定节点失败时服务转移的先后顺序,如果没有给节点指定优先级,那么集群高可用服务将在任意节点间转移。因此,通过创建失败转移域不但可以设定服务在节点间转移的顺序,而且可以限制某个服务仅在失败转移域指定的节点内进行切换。

6、集群配置管理工具(luci和ricci)

Conga是一种新的基于网络的集群配置工具,Conga是通过web方式来配置和管理集群节点的。Conga有两部分组成,分别是luci和ricci,luci安装在一台独立的计算机上,用于配置和管理集群,ricci安装在每个集群节点上,Luci通过ricci和集群中的每个节点进行通信。

RHCS也提供了一些功能强大的集群命令行管理工具,常用的有clustat、cman_tool、ccs_tool、fence_tool、clusvcadm等。

7、RedhatGFS

GFS是RHCS为集群系统提供的一个存储解决方案,它允许集群多个节点在块级别上共享存储,每个节点通过共享一个存储空间,保证了访问数据的一致性,更切实的说,GFS是RHCS提供的一个集群文件系统,多个节点同时挂载一个文件系统分区,而文件系统数据不受破坏,这是单一的文件系统不能实现的。

为了实现多个节点对于一个文件系统同时读写操作,GFS使用锁管理器来管理I/O操作,当一个写进程操作一个文件时,这个文件就被锁定,此时不允许其它进程进行读写操作直到这个写进程正常完成才释放锁,有当锁被释放后,其它读写进程才能对这个文件进行操作,另外,当一个节点在GFS文件系统上修改数据后,这种修改操作会通过RHCS底层通信机制立即在其它节点上可见

在搭建RHCS集群时,GFS一般作为共享存储,运行在每个节点上,并且可以通过RHCS管理工具对GFS进行配置和管理。这些需要说明的是RHCS和GFS之间的关系,一般初学者很容易混淆这个概念:运行RHCS,GFS不是必须的,只有在需要共享存储时,才需要GFS支持,而搭建GFS集群文件系统,必须要有RHCS的底层支持,所以安装GFS文件系统的节点,必须安装RHCS组件。

四、环境配置

两台redht6.5的虚拟机。

  • server1 配置luci集群管理界面,用来配置和管理集群。
  • server1、server2 集群节点,配置ricci。

五、搭建步骤

1、在server1—2上配置更高级的yum源

[root@server1 ~]# vim /etc/yum.repos.d/rhel-source.repo 

[rhel-source]
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=http://172.25.75.250/rhel6.5
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

[HighAvailability]			##高可用
name=HighAvailability
baseurl=http://172.25.75.250/rhel6.5/HighAvailability
gpgcheck=0

[LoadBalancer]				##负载均衡
name=LoadBalancer
baseurl=http://172.25.75.250/rhel6.5/LoadBalancer
gpgcheck=0

[ResilientStorage]			##存储
name=ResilientStorage
baseurl=http://172.25.75.250/rhel6.5/ResilientStorage
gpgcheck=0

[ScalableFileSystem]		##可扩展文件系统
name=ScalableFileSystem
baseurl=http://172.25.75.250/rhel6.5/ScalableFileSystem
gpgcheck=0

在这里插入图片描述
将yum源的配置文件远程同步给server2:

scp rhel-source.repo server2:/etc/yum.repos.d/

在这里插入图片描述

2、在server1上安装ricci、luci,启动服务,开机自启动

  • ricci:集群节点
  • luci:集群管理界面
yum install luci ricci -y		#下载软件
id ricci						#查看是否有ricci用户
passwd ricci					#配置ricci用户的密码
/etc/init.d/ricci start			#开启集群节点
/etc/init.d/luci start			#开启集群管理界面
chkconfig ricci on				#设置ricci开机自启动
chkconfig luci on				

在这里插入图片描述

3、在server2上安装ricci,启动服务,开机自启动

yum install ricci -y
id ricci
passwd ricci
/etc/init.d/ricci start
chkconfig ricci on

在这里插入图片描述

chkconfig --list		#查看服务状态

在这里插入图片描述
2、3、4同为on则表示开机自启动

4、打开浏览器,输入https://172.25.75.1:8084

1、认证

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、登录

输入root用户及自己给ricci用户创建的密码
在这里插入图片描述

3、创建集群,并且将server1和server2添加进集群

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
集群创建成功,并且成功将节点server1、server2添加进集群。
在这里插入图片描述
在server1上:

cat /etc/cluster/cluster.conf 			##查看集群及节点
clustat									##查看节点状态

在这里插入图片描述
在这里插入图片描述

  • cman 检测集群状态
  • rgmanager 集群管理器
  • ricci 管理资源
  • modclusterd 修改配置文件
  • clvmd 集群逻辑卷服务

5、配置fence:

FENCE设备是RHCS集群中必不可少的一个组成部分,通过FENCE设备可以避免因出现不可预知的情况而造成的“脑裂”现象,FENCE设备的出现,就是为了解决类似这些问题,Fence设备主要就是通过服务器或存储本身的硬件管理接口,或者外部电源管理设备,来对服务器或存储直接发出硬件管理指令,将服务器重启或关机,或者与网络断开连接。

1、在真机上下载软件,制作钥匙

yum install fence-virtd.x86_64 fence-virtd-libvirt.x86_64 fence-virtd-multicast.x86_64 -y
mkdir /etc/cluster
cd /etc/cluster
fence_virtd -c		##如果此方法没有生成钥匙,可以采用手动制作钥匙
dd if=/dev/urandom of=/etc/cluster/fence_xvm.key bs=128 count=1		##手动制作钥匙

在这里插入图片描述
在这里插入图片描述

[root@foundation75 cluster]# fence_virtd -c
Module search path [/usr/lib64/fence-virt]: 

Available backends:
    libvirt 0.1
Available listeners:
    multicast 1.2

Listener modules are responsible for accepting requests
from fencing clients.

Listener module [multicast]: 

The multicast listener module is designed for use environments
where the guests and hosts may communicate over a network using
multicast.

The multicast address is the address that a client will use to
send fencing requests to fence_virtd.

Multicast IP Address [225.0.0.12]: 

Using ipv4 as family.

Multicast IP Port [1229]: 

Setting a preferred interface causes fence_virtd to listen only
on that interface.  Normally, it listens on all interfaces.
In environments where the virtual machines are using the host
machine as a gateway, this *must* be set (typically to virbr0).
Set to 'none' for no interface.

Interface [virbr0]: br0			##这里的网卡要是双IP的网卡

The key file is the shared key information which is used to
authenticate fencing requests.  The contents of this file must
be distributed to each physical host and virtual machine within
a cluster.

Key File [/etc/cluster/fence_xvm.key]: 

Backend modules are responsible for routing requests to
the appropriate hypervisor or management layer.

Backend module [libvirt]: 

Configuration complete.

=== Begin Configuration ===
backends {
	libvirt {
		uri = "qemu:///system";
	}

}

listeners {
	multicast {
		port = "1229";
		family = "ipv4";
		interface = "br0";
		address = "225.0.0.12";
		key_file = "/etc/cluster/fence_xvm.key";
	}

}

fence_virtd {
	module_path = "/usr/lib64/fence-virt";
	backend = "libvirt";
	listener = "multicast";
}

=== End Configuration ===
Replace /etc/fence_virt.conf with the above [y/N]? y

在这里插入图片描述

2、将生成的钥匙发送给server1、server2:

 scp fence_xvm.key [email protected]:/etc/cluster/
 scp fence_xvm.key [email protected]:/etc/cluster/

在这里插入图片描述

3、浏览器配置

1、添加设备Fence Devices
在这里插入图片描述
在这里插入图片描述
选择Fence virt(Multicas Mode)多伯模式
在这里插入图片描述
2、给节点添加vmfence
示例:server1
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Domain输入server1的UUID,可以打开虚拟机的硬件管理界面可以看到。
在这里插入图片描述
在这里插入图片描述
server2的fence配置,以server1为例。

4、开启服务

systemctl start fence_virtd.service
systemctl status fence_virtd.service

在这里插入图片描述

5、测试

在server1上:

fence_node server2

在这里插入图片描述
server2重新启动,但是集群及节点没有被破坏
在这里插入图片描述

6、配置web高可用集群

1、添加集群服务

在这里插入图片描述
输入Name,例如webfile,

选中Prioritized、Restricted(只在指定节点跑)、No Failback(资源故障不回切),选中下方的server1和server2的Member并输入优先级,这里server1输入1,server2输入10,就是以server1为主节点,数字越小优先级越高;

2、添加集群资源

在这里插入图片描述

点击Resources,点击Add,选择模式IP Address,输入IP和NETMASK,IP不能被占用,这个IP就是VIP,点击Submit
在这里插入图片描述
点击Resources,点击Add,选择模式Script,输入Name”httpd“,并输入脚本路径”/etc/init.d/httpd“,点击Submit
在这里插入图片描述

3、添加服务组

在这里插入图片描述
在这里插入图片描述
点击ServiceGroups,点击Add,输入一个自定义名称,例如”apache“,选中”Automatically Start This Service“(集群自动开启)和”Run Exclusive“(运行独占),选中”FailoverDomain”下刚才创建的”webfile“,”Recovery Policy”选择”Relocate“,点击下方AddResource,选择之前创建的Resources,因为有两个,所以需要添加两次,完成后点击Submit;
在这里插入图片描述

4、server1、server2下载httpd,并编写默认发布页

server1:
在这里插入图片描述
server2:
在这里插入图片描述

5、启动apache服务组

在这里插入图片描述

6、测试

此时server1和server2都正常,但server1优先级高,所以httpd在server1开启
在这里插入图片描述
在这里插入图片描述
测试1: 将httpd服务切到server2,再模拟server2内核故障
在这里插入图片描述
server2:

echo c > /proc/sysrq-trigger

在这里插入图片描述
在这里插入图片描述
server2重启。
在这里插入图片描述
测试2: 将server1的httpd服务关闭

server1:

/etc/init.d/httpd stop
clustat

在这里插入图片描述
测试3: 将server2的网络关闭,模拟网络故障

/etc/init.d/network stop
clustat

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
关闭网络服务后,fence控制server2的电源,强制关机,web服务切换到server1上,不会影响客户使用,server2重启后,web服务不回切,保证了最少的服务变动,提升用户体验。

猜你喜欢

转载自blog.csdn.net/qq_41830712/article/details/89440416