简介:
RHCS即 RedHat Cluster Suite ,中文意思即红帽集群套件。
集群是指一组相互独立的计算机,利用高速通信网络组成的一个较大的计算机服务系统,每个集群节点都是运行各自服务的独立服务器,这些服务器之间可以彼此通信,协同向用户提供应用程序,系统资源和数据,并以单一系统的模式加以管理。
红帽集群套件(RedHat Cluter Suite, RHCS)是一套综合的软件组件,可以通过在部署时采用不同的配置,以满足用户对高可用性,负载均衡,可扩展性,文件存储共享和节约成本的需要。
RHCS是一个功能完备的集群应用解决方案,它从应用的前端访问到后端的数据存储都提供了一个行之有效的集群架构实现,通过RHCS提供的这种解决方案,不但能保证前端应用持久、稳定的提供服务,同时也保证了后端数据存储的安全。
RHCS提供了集群系统中三种集群构架,分别是高可用性集群、负载均衡集群、存储集群。
RHCS提供的三个核心功能:
高可用集群: 是RHCS的核心功能。当应用程序出现故障,或者系统硬件、网络出现故障时,应用可以通过RHCS提供的高可用性服务管理组件自动、快速从一个节点切换到另一个节点,节点故障转移功能对客户端来说是透明的,从而保证应用持续、不间断的对外提供服务,这就是RHCS高可用集群实现的功能。
负载均衡集群: RHCS通过LVS来提供负载均衡集群,而LVS是一个开源的、功能强大的基于IP的负载均衡技术,LVS由负载调度器和服务访问节点组成,通过LVS的负载调度功能,可以将客户端请求平均的分配到各个服务节点,同时,还可以定义多种负载分配策略,当一个请求进来时,集群系统根据调度算法来判断应该将请求分配到哪个服务节点,然后,由分配到的节点响应客户端请求,同时,LVS还提供了服务节点故障转移功能,也就是当某个服务节点不能提供服务时,LVS会自动屏蔽这个故障节点,接着将失败节点从集群中剔除,同时将新来此节点的请求平滑的转移到其它正常节点上来;而当此故障节点恢复正常后,LVS又会自动将此节点加入到集群中去。而这一系列切换动作,对用户来说,都是透明的,通过故障转移功能,保证了服务的不间断、稳定运行。
存储集群: RHCS通过GFS文件系统来提供存储集群功能,GFS是Global File System的缩写,它允许多个服务同时去读写一个单一的共享文件系统,存储集群通过将共享数据放到一个共享文件系统中从而消除了在应用程序间同步数据的麻烦,GFS是一个分布式文件系统,它通过锁管理机制,来协调和管理多个服务节点对同一个文件系统的读写操作。
特点:
1、最多支持128个节点(红帽企业Linux 3 和红帽企业Linux 4 支持 16 个节点)。
2、可同时为多个应用提供高可用性。
3、NFS/CIFS 故障切换:支持 Unix 和 Windows 环境下使用的高可用性文件。
4、完全共享的存储子系统:所有集群成员都可以访问同一个存储子系统。
5、综合数据完整性:使用最新的 I/O 屏障(barrier)技术,如可编程的嵌入式和外部电源开关装置(power switches)。
6、服务故障切换:红帽集群套件可以确保及时发现硬件停止运行或故障的发生并自动恢复系统,同时,它还可以通过监控应用来确保应用的正确运行并在其发生故障时进行自。
集群相关术语:
1.节点(node)
运行集群进程的一个独立主机,称为节点,节点是HA的核心组成部分,每个节点上运行着操作系统和集群软件服务,在集群中,节点有主次之分,分别称为主节点和备用/备份节点,每个节点拥有唯一的主机名,并且拥有属于自己的一组资源,例如,磁盘、文件系统、网络地址和应用服务等。主节点上一般运行着一个或多个应用服务。而备用节点一般处于监控状态。
2.资源(resource)
资源是一个节点可以控制的实体,并且当节点发生故障时,这些资源能够被其它节点接管
3.事件(event)
也就是集群中可能发生的事情,例如节点系统故障、网络连通故障、网卡故障、应用程序故障等。这些事件都会导致节点的资源发生转移,HA的测试也是基于这些事件来进行的。
4.动作(action)
事件发生时HA的响应方式,动作是由shell脚步控制的,例如,当某个节点发生故障后,备份节点将通过事先设定好的执行脚本进行服务的关闭或启动。进而接管故障节点的资源。
5.集群中luci的作用:
luci是用来配置和管理集群,监听在8084上。
6.集群中ricci的作用:
ricci是安装在每个后端的每个节点上的,luci管理集群上的各个节点就是通过和节点上的ricci进行通信,ricci监听在11111上。
7.集群中fence的作用:
当意外原因导致主机异常或者宕机时,备机会首先调用FENCE设备,然后通过FENCE设备将异常主机重启或者从网络隔离,当FENCE操作成功执行后,返回信息给备机,备机在接到FENCE成功的信息后,开始接管主机的服务和资源。这样通过FENCE设备,将异常节点占据的资源进行了释放,保证了资源和服务始终运行在一个节点上。并且有效的阻止了“脑裂"的发生。
RHCS环境的搭建
实验环境
主机 | ip |
---|---|
server1(下载ricci,luci为了提供Conga配置用户界面,作主节点 ) | 172.25.5.1 |
server2(下载ricci,作副节点 ) | 172.25.5.2 |
server3(作iscci共享存储) | 172.25.5.3 |
foundation5(作fence) | 172.25.5.250 |
rhel6.5 selinux disabled iptables stop
注意:
从红帽企业版 Linux 6.1 开始,在任意节点中使用 ricci 推广更新的集群配置时要求输入密码。所以在前面两台主机安装完成ricci后需要修改ricci用户的密码,这个是后面节点设置的密码,并且要作时间同步;然后启动安装的服务
一、给server1和server2配置高可用yum源
添加解析vim /etc/hosts(server1和server2都做)
[HighAvailability] ##高可用
name=HighAvailability
baseurl=http://172.25.5.250/rhel6.5/HighAvailability
gpgcheck=1
[LoadBalancer] ##负载平衡
name=LoadBalancer
baseurl=http://172.25.5.250/rhel6.5/LoadBalancer
gpgcheck=1
[ResilientStorage] ##存储
name=ResilientStorage
baseurl=http://172.25.5.250/rhel6.5/ResilientStorage
gpgcheck=1
[ScalableFileSystem] ##系统文件
name=ScalableFileSystem
baseurl=http://172.25.5.250/rhel6.5/ScalableFileSystem
gpgcheck=1
二、下载相关软件包
server1:
ricci(图形里的集群管理)
luci(图形界面)
修改ricci用户密码
开启ricci和luci
并设置开机自启
[root@server1 ~]# yum install ricci luci -y 下载ricci和luci作为主节点
[root@server1 ~]# passwd ricci 修改ricci用户密码
Changing password for user ricci.
New password:
BAD PASSWORD: it is based on a dictionary word
BAD PASSWORD: is too simple
Retype new password:
passwd: all authentication tokens updated successfully.
[root@server1 ~]# /etc/init.d/ricci start 开启ricci服务
[root@server1 ~]# /etc/init.d/luci start 开启luci服务
[root@server1 ~]# chkconfig ricci on 开机自启动服务
[root@server1 ~]# chkconfig luci on
[root@server1 ~]# netstat -tnlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:8084 0.0.0.0:* LISTEN 1287/python
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 873/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 951/master
tcp 0 0 :::22 :::* LISTEN 873/sshd
tcp 0 0 ::1:25 :::* LISTEN 951/master
tcp 0 0 :::11111 :::* LISTEN 1206/ricci
[root@server1 ~]# cat /etc/hosts 看本地解析是否存在副节点的解析
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.25.5.1 server1
172.25.5.2 server2
172.25.5.3 server3
172.25.5.4 server4
172.25.5.5 server5
172.25.5.6 server6
server2:
[root@server2 ~]# yum install ricci -y ##下载ricci作为副节点
[root@server2 ~]# passwd ricci
Changing password for user ricci.
New password:
BAD PASSWORD: it is based on a dictionary word
BAD PASSWORD: is too simple
Retype new password:
passwd: all authentication tokens updated successfully.
[root@server2 ~]# /etc/init.d/ricci start
[root@server2 ~]# chkconfig ricci on
[root@server2 ~]# cat /etc/hosts ##同样看是否有主节点的解析
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.25.5.1 server1
172.25.5.2 server2
172.25.5.3 server3
172.25.5.4 server4
172.25.5.5 server5
172.25.5.6 server6
三、创建集群
1.在浏览器中输入https://172.25.5.1:8084
(因为是加密访问,需要添加证书)
在网页浏览器的地址栏中输入 cman 服务器的 URL luci服务器的URL语法为https://172.25.5.1:luci_server_port。luci_server_port 的默认值为 8084
首次访问 luci 时,网页浏览器会根据显示的自我签名 SSL 证书( luci 服务器的证书)给出具体提示。确认一个或者多个对话框后,网页显示器会显示 luci 登录页面。
2.登陆进入后点击管理集群开始添加集群(注:登陆帐号和密码是server1中的系统用户和密码,普通用户需要经过超级用户的审核才能登陆,所以一般选择超级用户登陆)
虽然所有可以在托管 luci 的系统中认证的用户都可以登录 luci,但从红帽企业版 Linux 6.2 开始,只有运行 luci 的系统中的 root 可以访问所有 luci 组件,除非管理员(root 用户或者有管理员权限的用 户)为那个用户设置权限。
3.点击集群管理(Manager Clusters),然后点击create出现以下页面,创建一个集群westos_ha
1.两个节点使用相同的密码
2.两个节点server1和server2,密码为ricci用户密码
3.下载所用的包
4.加入节点后重启
5.是否激活集群存储
然后点击(CreateCluster),进入等待页面,此时server1和server2会重启,然后在重新连接server1和server2
节点添加成功如下:
此时,在两个主机中的任一个上执行clustat,或者cat /etc/cluster/cluster.conf ,都可以查看到集群的信息
注意:
1、在「集群名称」 文本框中输入集群名称。集群名称不能超过 15 个字符。
如果集群中的每个节点都有同样的 ricci 密码,您可以选择「在所有节点中使用相同的密 码 」,这样就可在添加的节点中自动填写「密 码 」字段。
2、在「 节 点名称」栏中输入集群中节点的名称,并在「密 码 」 栏中为该节点输入 ricci 密码。
3、如果要在 ricci 代理中使用不同的端口,而不是默认的 11111 端口,可以更改那个参数。
4、如果不想要在创建集群时升级已经在节点中安装的集群软件软件包,请选择「使用本地安装的软 件包」 选项。如果要升级所有集群软件软件包,请选择「下 载软 件包」 选项
5、添加完成后会发现一直在等待状态,这时查看服务器,会发现server1已经重启,这时只需要启动后再开启服务就成功添加节点了。
如果缺少任意基本集群组件(cm an、rgm anager、m odcluster 及其所有相依性软件 包),无论是选择「使用本地安装的 软 件包」 ,还是「下 载软 件包」 选项,都会安装它 们。如果没有安装它们,则创建节点会失败
此时,在两个主机中的任一个上执行clustat,或者cat /etc/cluster/cluster.conf ,都可以查看到集群的信息
4.配置故障切换fence
RHCS的一个很重要概念:Failover Domain故障转移域,更准确地说应该是服务故障转移域(一个服务包括多个资源如VIP FileSystem…)当定义一个节点故障后,此节点上的资源能够转移的目标节点,进而限制了资源转移的范围
FENCE设备是RHCS集群中必不可少的一个组成部分,通过FENCE设备可以避免因出现不可预知的情况而造成的“脑裂”现象,FENCE设备的出现,就是为了解决类似这些问题,Fence设备主要就是通过服务器或存储本身的硬件管理接口,或者外部电源管理设备,来对服务器或存储直接发出硬件管理指令, 将服务器重启或关机,或者与网络断开连接。
FENCE的工作原理:
当意外原因导致主机异常或者宕机时,备机会首先调用FENCE设备,然后通过FENCE设备将异常主机重启或者从网络隔离,当FENCE操作成功执行后,返回信息给备机,备机在接到FENCE成功的信息后,开始接管主机的服务和资源。这样通过FENCE设备,将异常节点占据的资源进行了释放,保证了资源和服务始终运行在一个节点上。
向集群添加fence
1.在主机上安装fence
这里作为fence的是我们的主机,172.25.5.250
安装软件:
yum search fence-virtd
yum install fence-virtd.x86_64 fence-virtd-libvirt.x86_64 fence-virtd-multicast.x86_64 -y
fence-virtd-multicast、fence-virtd、fence-virtd-libvirt;
2.编辑fence的配置文件
fence_virtd -c ##编写新的fence信息
安装fence
选择工作模式”multicast”,
地址”225.0.0.12”,
端口”1229”,
family”ipv4”,
网络interface”br0”,
Backend module “libvirt”;
3.如果没有密钥目录,自己建立一个,并截取密钥
mkdir /etc/cluster
cd /etc/cluster/
dd if=/dev/urandom of=/etc/cluster/fence_xvm.key bs=128 count=1
ls ##生成密钥fence_xvm.key
执行命令:dd if=/dev/urandom of=/etc/cluster/fence_xvm.key bs=128 count=1
生成128位的key,可以file查看这个key类型是数据(data)。
4.将修改好的密钥文件发送给节点server1和server2,保证server1和server2利用的是同一个密钥。将key发送到套件集群服务器(server1,server4)的/etc/cluster目录下
scp fence_xvm.key root@172.25.5.1:/etc/cluster/
scp fence_xvm.key root@172.25.5.2:/etc/cluster/
完成后可以通过文件 /etc/fence_virt.conf 查看fence的信息;
5.重新启动fence_virtd.server服务
[root@foundation5 cluster]# systemctl start fence_virtd.service
[root@foundation5 cluster]# systemctl status fence_virtd.service
Active: active (running)
5.给主机上添加fence设备
在luci(https://172.25.5.1:8084)上的配置:
1.登陆luci选择集群,点击Fence Devices;
2.点击Add,选择模式为”Fence virt (Multicast Mode)”,输入一个自动以的Fence名称,点击Submit;
注:此时查看server1的集群信息文件/etc/cluster/cluster.conf,会发现vmfence
3.点击Nodes,选择server1,点击界面下的”Add Fence Method”,输入一个自定义的server1的Fence名称,例如fence1;
点击Add Fence Instance,选择之前设置好的vmfence,输入Domain(虚拟服务器的UUID)
UUID可以在虚拟机的管理截面看到
//重新查看/etc/cluster/cluster.conf文件,配置已经更改
4.在另一个server2上做同样操作,名称fence2,Domain为server2的;
测试:
在server1输入
fence_node server2
可以让server2跳电,即直接断掉电源,
使server2断电重启则为成功
四、高可用服务配置()
1.添加故障转移域
将sever1和server2添加在域中,即server1或server2出现故障时,切换到正常的那一个上,集群打开后,服务落在优先级高的节点上。(数字越小优先级越高)
2.添加服务中所要用到的资源(以httpd高可用为例)
添加IP Address(集群对外VIP) ,点击Submit提交
切换主机之间的时间
再点击Resources,点击Add,选择模式Script,添加启动httpd服务的脚本
3.向集群中添加上一步添加的资源(IP Address 和script)
第一步是创建一个资源组(服务中要用到资源的集合)apache
接着将资源添加进去
IP Address
Script
在server1 和server2上安装httpd服务,并编写默认测试页面内容
yum install httpd -y
cd /var/www/html
vim index.html
cat index.html
/etc/init.d/httpd start
(2)server2上配置同理
刷新页面,显示httpd服务运行在server2上(优先级高)
clustat ##查看集群
并且在server2上可以看到添加上的VIP
ip addr
测试:
(1)在物理机访问两台节点
curl 172.25.5.1
server1
curl 172.25.5.2
server2
(2)在物理机访问VIP——>server2
curl 172.25.5.100
server2
(3)测试高可用
在server2中,输入echo c> /proc/sysrq-trigger ,手动宕掉服务器
再次访问VIP,会发现访问切换到server1上,等server2重启成功之后,则又会切换到server2
注意:
一般在企业中,需要勾选 No Failback (故障不会切) 、
即当server2挂掉后,服务自动转到server1上,并且VIP也会自动飘过来,即使server2重启成功了,服务也不会再转回去
当关掉server2上的httpd,服务会自动转移到server1上
删除 Fence 设备
注意:
无法删除使用中的 fence 设备。要删除某个节点目前正在使用的 fence 设备,请首先为使用该设备的所有节点更新节点 fence 配置,然后删除该设备。
要删除 fence 设备,请按照以下步骤执行:
在「 Fence 设备 」 配置页面中选择 fence 设备左侧的复选框选择要删除的设备
点击 删 除 并等待配置更新。此时会出现一条信息说明已经删除了该设备。 当更新配置后,显示中不再会出现删除的 fence 设备。**