Red Hat 高可用性附加组件可让您连接到作为集群使用的一组计算机(称之为节点或者成员)。您可使用 Red Hat 高可用性附加组件适应您的集群需要(例如:为 GFS2 文件系统中的共享文件设置集群,或者设置服务故障切换)。
1、红帽企业版 Linux 6.1 中新的和更改的功能
红帽企业版 Linux 6.1 包括以下文档和功能更新及更改:
(1)从红帽企业版 Linux 6.1 发行本开始,红帽高可用性附加组件提供 SNMP 陷阱支持。
(2)从红帽企业版 Linux 6.1 发行本开始,红帽高可用性附加组件支持 ccs 集群配置命令。
(3)已更新使用 Conga 配置和管理红帽高可用性附加组件软件的文档,包括更新的 Conga 页面和功能支
持。
(4)从红帽企业版 Linux 6.1 发行本开始,使用 ricci 需要在您第一次在任意节点中传播更新的集群配
置文件时输入密码。
(5)您现在可为服务指定 Restart-Disable 失败策略,表明该系统应该在其失败的地方尝试重启,但如
果重启服务失败,则会禁用该服务而不是将其移动到该集群的另一台主机中。
(6)您现在可以将独立子树配置为 non-critical,表示如果该资源失败,只禁用那个资源。
2、RHCS(Red Hat Cluster Suite)工作原理:
图中各组件说明:
(1)cman集群管理器
cman是一个基于内核的对称通用集群管理器。它由两部分组成:连接管理器 (cnxman),用于处理成员、消息、投票数、事件通知和过渡;服务管理器(SM),用于处理那些需要通过各种方式进行集群管理的应用及外部系统。 cman是RHCS中最核心的服务,可通过系统中的serivce命令进行启/停操作;DLM、GFS、CLVM及Fence都依赖于cman群集管理 器。
(2)rgmanager资料组管理器
rgmanager(Resource Group Manager)基于cman并使用DLM动态锁管理机制。与cman一样,rgmanager也是RHCS中的一个核心服务,可通过系统中的 serivce命令进行启/停操作;rgmanager管理并为集群中的Service(服务)和Resources(资源)提供Failover错误切 换功能。
(3)Service(服务)
每个服务都被指定存在于一个Failover Domain中,并与多个Resources(资源)关联。每个服务可以理解为实际操作中的一个应用,如Web服务器、Java中间件、数据库、文件共享 系统、邮件系统等。这些应用在运行时不但对应用程序本身有要求(如某个运行指令或多个运行脚本的组合),还要提供对诸如虚拟IP、文件系统等资源的支持。
(4)Failover Domain(错误切换域)
每 个Failover Domain都与两个或两个以上的Node(服务器节点)进行绑定,Failover Domain指定了集群中某个Service运行时的范围,也就是指定此Service将会由哪些服务器提供Failover错误切换功能。每个Node 都允许与多个Failover Domain进行绑定,也就是说每个Node都可以为多个Service服务,因此可以实现"主动/主动(双活动)"方式的集群配置。
(5)Resources(资源)
Resources 指的是组成一个应用所需的各种组件,通常包括:应用程序、虚拟IP、文件系统。资源与Service组合时,往往还会体现出一定的层次关系,例如:通常系 统都要求确认虚拟IP及文件系统都已经正常连接及挂载后,才可以运行某个应用程序,这个顺序一旦调转,就会使应用程序运行出错。
(6)Fence机制
在 RHCS集群运行时,为了避免因出现不可预知的情况而造成的"脑裂"现象(如:心跳线断连,此时两台服务器都无法找到对方,无法向对方发出操作指令,都各 自认为自己是主节点;又或者主服务器系统崩溃,系统能接收到备用服务器的操作指令,但无法返回运行情况的确认信号,导致备用服务器无法获知系统资源的使用 情况),系统要求通过Fence机制来保障系统切换时的I/O使用安全。
Fence主要就是通过服务器或存储本身的硬件管理接 口,又或者是外部电源管理设备,来对服务器或存储发起直接的硬件管理指令,控制服务器或存储链路的开关。因此,Fence机制也被称为"I/O屏障"技 术。当"脑裂"发生时彻底断开问题服务器的所有I/O连接,保证问题服务器不能对集群中的I/O资源(共享的文件系统资源)进行任何操作,严格保证集群环 境中企业核心数据的完整性。
3、RHCS安装过程
1)、
[root@node1 ~]# yum install update
2)、
[root@node1 ~]# yum install -y cman luci ricci rgmanager
3)、编辑hosts文件解析两个节点的主机名
vim /etc/hosts
加入以下两行
192.168.100.11 node1.lampbo.org 192.168.100.12 node2.lampbo.org
保存退出
4)、创建cluster.conf文件 生成集群配置文件
[root@node1 ~]# vim /etc/cluster/cluster.conf
- <?xml version="1.0"?>
- <cluster config_version="5" name="my_cluster">
- <fence_daemon post_fail_delay="0" post_join_delay="3"/>
- <clusternodes>
- <clusternode name="node1.lampbo.org" nodeid="1" votes="1">
- <fence>
- <method name="1">
- <device name="Fence1" nodename="node1.lampbo.org"/>
- </method>
- </fence>
- </clusternode>
- <clusternode name="node2.lampbo.org" nodeid="2" votes="1">
- <fence>
- <method name="1">
- <device name="Fence2" nodename="node2.lampbo.org"/>
- </method>
- </fence>
- </clusternode>
- </clusternodes>
- <cman expected_votes="1" two_node="1"/>
- <fencedevices>
- <fencedevice agent="fence_ilo" ipaddr="192.168.101.15" login="root" name="Fence1" passwd="admin123"/>
- <fencedevice agent="fence_ilo" ipaddr="192.168.101.16" login="root" name="Fence2" passwd="admin123"/>
- </fencedevices>
- <rm>
- <failoverdomains>
- <failoverdomain name="fail-domain" ordered="0" restricted="0">
- <failoverdomainnode name="node1.lampbo.org" priority="1"/>
- <failoverdomainnode name="node2.lampbo.org" priority="2"/>
- </failoverdomain>
- </failoverdomains>
- <resources>
- <script file="/etc/init.d/postgresql-9.1" name="postgresql"/>
- <ip address="192.168.100.99" monitor_link="1"/>
- </resources>
- <service autostart="1" domain="fail-domain" exclusive="0" max_restarts="3" name="XXX" recovery="restart(or, relocate)" restart_expire_time="300">
- <script ref="postgresql"/>
- <ip ref="192.168.100.99"/>
- </service>
- </rm>
- </cluster>
注:在这个例子中fence 代理使用的是HP fence_ilo,还有其他很多的fence agent ,可以参见:https://access.redhat.com/knowledge/articles/28603
5)、启动服务
service luci start service ricci start service cman start service rgmanagment start
6)查看集群状态(clustat)
[root@centos6 ~]# clustat
如果集群的所有节点状态都为online,说明集群创建成功了
至此linux集群就创建好了
说明:
1)、RHEL6.1版本中fence device不再支持hostname参数,可以使用ipaddr 代替,具体使用方法可以参考man fence_ilo
2)、集群的名称不能超过15个字符,也不能为空,最好选择容易记忆的集群名。
3)、如果节点无法加入集群,最好检查下iptables和selinux 的设置
4)、启动集群:service cman start, service rgmanager start
关闭集群:service rgmanager stop, service cman stop
要注意启动和关闭集群的顺序。