Linux运维RHCS套件——高可用集群搭建

什么是RHCS?

RHCS(Red Hat Cluster Suite)也就是红帽集群套件,RHCS是一个能够提供高可用性、高可靠性、负载均衡、存储共享且经济廉价的集群工具集合,它将集群系统中三大集群架构融合一体,可以给web应用、数据库应用等提供安全、稳定的运行环境,更确切的说,RHCS是一个功能完备的集群应用解决方案,它从应用的前端访问到后端的数据存储都提供了一个行之有效的集群架构实现,通过RHCS提供的这种解决方案,不但能保证前端应用持久、稳定的提供服务,同时也保证了后端数据存储的安全。

RHCS提供的三个核心功能

RHCS提供了集群系统中三种集群构架,分别是高可用性集群、负载均衡集群、存储集群。
实现高可用集群:
高可用集群是RHCS的核心功能。当应用程序出现故障,或者系统硬件、网络出现故障时,应用可以通过RHCS提供的高可用管理组件自动、快速从一个节点切换到另一个节点,节点故障转移功能对客户端来说是透明的,从而保证应用持续、不间断的对外提供服务,这就是RHCS高可用集群实现的功能。
实现负载均衡集群
RHCS通过LVS(Linux Virtual Server)来提供负载均衡集群,而LVS是一个开源的、功能强大的基于IP的负载均衡技术,LVS由负载调度器和服务访问节点组成,通过LVS的负载调度功能,可以将客户端请求平均的分配到各个服务节点,同时,还可以定义多种负载分配策略,当一个请求进来时,集群系统根据调度算法来判断应该将请求分配到哪个服务节点,然后,由分配到的节点响应客户端请求,同时,LVS还提供了服务节点故障转移功能,也就是当某个服务节点不能提供服务时,LVS会自动屏蔽这个故障节点,接着将失败节点从集群中剔除,同时将新来此节点的请求平滑的转移到其它正常节点上来;而当此故障节点恢复正常后,LVS又会自动将此节点加入到集群中去。而这一系列切换动作,对用户来说,都是透明的,通过故障转移功能,保证了服务的不间断、稳定运行。
实现存储集群
RHCS通过GFS文件系统来提供存储集群功能,GFS是Global File System的缩写,它允许多个服务同时去读写一个单一的共享文件系统,存储集群通过将共享数据放到一个共享文件系统中从而消除了在应用程序间同步数据的麻烦,GFS是一个分布式文件系统,它通过锁管理机制,来协调和管理多个服务节点对同一个文件系统的读写操作。
前提:准备三台虚拟机
server1 ip: 172.25.62.1
server2 ip: 172.25.62.2
server3 ip: 172.25.62.3
真实主机ip:172.25.62.250

如何搭建RHCS集群?

1.添加高可用节点

在server1主机:
1.搭建高级yum源

[root@server1 ~]# vim /etc/yum.repos.d/rhel-source.repo
[rhel6.5]
name=rhel
baseurl=http://172.25.62.250/rhel6.5
enabled=1
gpgcheck=0

[LoadBalancer]
name=LoadBalancer
baseurl=http://172.25.62.250/rhel6.5/LoadBalancer
enabled=1
gpgcheck=0

[HighAvailability]
name=HighAvailability
baseurl=http://172.25.62.250/rhel6.5/HighAvailability
enabled=1
gpgcheck=0

[ResilientStorage]
name=ResilientStorage
baseurl=http://172.25.62.250/rhel6.5/ResilientStorage
enabled=1
gpgcheck=0

[ScalableFileSystem]
name=ScalableFileSystem
baseurl=http://172.25.62.250/rhel6.5/ScalableFileSystem
enabled=1
gpgcheck=0
[root@server1 ~]# scp -r /etc/yum.repos.d/rhel-source.repo root@172.25.62.2:/etc/yum.repos.d/

将搭好的yum源发给server2主机
2.安装需要的软件

[root@server1 ~]# yum install luci ricci -y
[root@server1 ~]# /etc/init.d/ricci start
[root@server1 ~]# /etc/init.d/luci start
[root@server1 ~]# chkconfig ricci on
[root@server1 ~]# chkconfig luci on

在这里插入图片描述
安装软件后开启,设置开机自启。

[root@server1 ~]# id ricci

在这里插入图片描述

[root@server1 ~]# passwd ricci

给用户设置密码。
在server1做完这些操作后在server2也做同样的操作。
3.在浏览器输入https://172.25.62.1:8084
在这里插入图片描述
认证之后就会出现这个页面,使用root登陆,密码就是前面修改ricci用户的密码。
在这里插入图片描述登陆后的页面。

[root@server1 ~]# vim /etc/hosts

4.在server1,server2上做其他主机的本地解析
在这里插入图片描述
5.创建集群,并将server1和server2加入集群
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
将server1,server2节点添加集群成功。
在serer1上查看添加的节点。

[root@server1 ~]# cat /etc/cluster/cluster.conf 
[root@server1 ~]# clusta

在这里插入图片描述在这里插入图片描述
这样,基本的配置就搭建就完成了。

2.添加fence设备

首先我们要了解一下什么是fence
在这里插入图片描述
每个节点之间互相发送探测包进行判断节点的存活性。一般会有专门的线路进行探测,这条线路称为“心跳线”(上图直接使用eth0线路作为心跳线)。假设node1的心跳线出问题,则node2和node3会认为node1出问题,然后就会把资源调度在node2或者node3上运行,但node1会认为自己没问题不让node2或者node3抢占资源,此时就出现了脑裂(split brain)。
此时如果在整个环境里有一种设备直接把node1断电,则可以避免脑裂的发生,这种设备叫做fence或者stonith(Shoot The Other Node In The Head爆头哥)。
1.在真实主机下载相关软件,制作钥匙

[root@foundation62 ~]# yum search fence

在这里插入图片描述
查找需要的软件。

[root@foundation62 ~]# yum install -y fence-virtd.x86_64 \
> fence-virtd-multicast.x86_64 \
> fence-virtd-libvirt.x86_64

安装fence需要的软件。

[root@foundation62 ~]# mkdir /etc/cluster
[root@foundation62 ~]# cd /etc/cluster/
[root@foundation62 cluster]# fence_virtd -c
[root@foundation62 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

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

制作钥匙。
如果此方法没有生成钥匙,则可以手动制作。

[root@foundation62 cluster]# dd if=/dev/urandom of=/etc/cluster/fence_xvm.key bs=128 count=1

在这里插入图片描述

2.将生成的钥匙发给server1,server2两台虚拟机

[root@foundation62 cluster]# scp fence_xvm.key root@172.25.62.1:/etc/cluster/
[root@foundation62 cluster]# scp fence_xvm.key root@172.25.62.2:/etc/cluster/

3.在浏览器进行配置
在这里插入图片描述
点击Fence Devices
在这里插入图片描述
添加设备,选择Fence virt(Multicast Mode)模式,名字可以自定义。
在这里插入图片描述
设备添加完成。
给fence设备添加节点,点击server1。
在这里插入图片描述
选择Add Fence Method,把节点添加入Fence设备。
在这里插入图片描述
名字可以随便起。
在这里插入图片描述
之后点击Add Fence instance。
因为之后要用到server1的uuid,所以这里我们先查一下server1的uuid。
在这里插入图片描述
在虚拟化工具中查看。
在这里插入图片描述
在Domain中输入server1的uuid,点击Submit。
在这里插入图片描述
这样,第一个节点就添加成功了,节点server2的添加也是一样的。
4.在真实主机开启服务

[root@foundation62 cluster]# systemctl start fence_virtd.service 

测试:

[root@server1 ~]# fence_node server2

在这里插入图片描述
此时,server2将会重启,这样,我们的fence就配置完成了。

3.配置web高可用集群

1.配置集群服务

点击Failover Domains进行配置。
在这里插入图片描述
Name可以自定义,下面的1和10表示优先级,优先级越高,值越低,也就是说server1的优先级高于server2,server1是主节点。
2.添加资源
在这里插入图片描述点击点击点击Resources,点击add进行添加。
在这里插入图片描述
添加ip和netmask,这里的ip是vip,不能被占用。
在这里插入图片描述
添加服务启动脚本,写上服务的名称和服务启动脚本的存放的位置。
3.添加组
点击Service Groups,点击add
在这里插入图片描述
填写服务的名称,选中Automatically Start This Service,设定集群自动启动。RunExclusive,运行独占。之后选中之前设定好啊的webfie。
在这里插入图片描述
将前面设置的资源添加入组。
4.server1,server2下载htpd服务,并编写测试页
server1:
在这里插入图片描述
server2:
在这里插入图片描述
5.启动apache服务组
在这里插入图片描述选中apache,点击start。
此时,server1的httpd服务正常开启了。
在这里插入图片描述
因为server1的优先级比serer2的优先级高,所以服务在serer1运行。
在这里插入图片描述
使用设置的vip
测试:
手动将httpd服务迁移到serer2上。
在这里插入图片描述
在这里插入图片描述
此时httpd服务在,在server2上运行了。
在server2上模拟内核故障。

[root@server2 ~]# echo c > /proc/sysrq-trigger

在这里插入图片描述
在这里插入图片描述
此时,服务重新自动迁移到serer1上了,当server2可以正长工作之后,服务也不会回切到server2,而是在serer1上继续工作,避免了服务的频繁变动。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值