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是一个分布式文件系统,它通过锁管理机制,来协调和管理多个服务节点对同一个文件系统的读写操作。
RA(resource agent)类型:
1.LSB 位于/etc/rc.d/init.d/* 的所有脚本
2.Ocf open clester frame开发式集群框架
3.Legency
4.stonitsh设备专用的
Ocf的provider:linbit heartbeat pacemaker
CRM:heartbeat v1--haresource
heartbeat v2--crm
heartbeat v3--pacemaker(pacemaker也可以与corosync结合)
集群的基础架构:
1. heartbeat
2. corosync
3. keepalived
4. Cman(cluster manager)
RHCS:Cman + Rgmanager
gfs2(global file system 2):集群文件系统,可以让多个节点同时使用同一个文件系统,当一个节点使用时会借助DLM机制通过lock_dlm进行加锁,并通知给其他节点持有的锁信息
DLM(distributed lock manager):分布式锁管理器,是运行在各个节点上的一个守护进程,通过tcp/ip 协议进行通信,且一旦发现某个节点故障,会借助HA集群的功能将此节点Fence掉
ocfs2(oracle file system 2):Oracle开发的一个集群文件系统,但I/O性能不如gfs
gls(google file system):google开发的一个应用在海量数据处理中的分布式文件系统,注意分布式文件系统与集群文件系统不是一回事
clvm(cluster logical volume manager):集群逻辑卷,是集群式的LVM,可以调整存储分区的大小,借助HA功能将某一个节点对LVM的操作通知给其他节点
要想启用clvm只需要编辑/etc/
RHCS(RedHat Cluster Suite)红帽集群套件
关于cman在红帽4上是一个独立运行的组件,而到了红帽5由于发现OpenAIS可以提供更好的集群性能,便只保留了cman的quroum投票系统,让cman在底层依赖于OpenAIS(作为OpenAIS的插件)来工作,但是其集群配置文件依然是/etc/cluster/cluster.conf(cman的配置文件),而不是/etc/openais/openais.conf(OpenAIS的配置文件),此时cman占据主导,而到了红帽6时由于corosync从OpenAIS独立出来,cman开始依赖于corosync工作,而到了corosync2.3.0即needle版本后由于corosync出现了更好的quroum投票系统votequorum,至此Cman正式退出江湖,从此cman也不再占主导,其配置都整合到了/etc/corosync/corosync.conf文件中,再也没有了/etc/cluster/cluster.conf文件
关于OpenAIS的详细介绍请看http://blog.sina.com.cn/s/blog_b44508710102vkxd.html
这是Cman在红帽4上的工作流程,可以看到大多数组件包括Cman,DLM等都工作在内核空间中,使用起来比较复杂
其中的ccs(cluster configuration system)集群文件配置系统,使cman在每个节点都会运行一个ccsd进程,这样一旦在某个节点对cman的配置文件进行了修改,ccsd进程会立马发现并通过信息传输层(massager layer)以多播的形式同步给每个节点,所以Cman的配置文件随便在哪个节点都可以修改,而且不用手动去复制
这是Cman在红帽5上的工作流程,可以看到大多数组件包括Cman(作为了aisexec的插件)其中aisexec是OpenAIS的核心,lock_controld等都工作在用户空间
这是Cman在红帽6上的工作流程,可以看到依赖的不是OpenAIS而是corosync,其资源管理借助rgmanager,没有了ccsd,而rgmanager自己可以同步配置文件,而lock_dlm完全与DLM_controle结合
RHCS的一个很重要概念:Failover Domain故障转移域,更准确地说应该是服务故障转移域(一个服务包括多个资源如VIP FileSystem...)key当i定义一个节点故障后,此节点上的资源能够转移的目标节点,进而限制了资源转移的范围
如图
x服务运行在节点B,可以定义故障时指向向A节点转移
Y服务运行在节点C,可以定义故障向B和D节点转移
Z服务运行在节点D,可以定义故障向C和E节点转移
而且还可以定义转移节点的优先次序,如C节点故障可以先向B转移,如果B也故障在向D转移
也可以定义服务故障后先重新启动服务,如果还不行再进行节点转移
1、集群管理器CMAN
Cluster Manager,简称CMAN,是一个分布式集群管理工具,它运行在集群的各个节点上,为RHCS提供集群管理任务。CMAN用于管理集群成员、传递节点间心跳信息。它通过监控每个节点的运行状态来了解节点成员之间的关系,当集群中某个节点出现故障,节点成员关系将发生改变,CMAN及时将这种改变通知底层,进而做出相应的调整。cman之上有ccs和fencs两个组件。
2、资源组管理器rgmanager
通过定义的集群资源,来管理这些资源,被管理的资源包括故障切换域的定义、资源(如 IP 地址)和服务。它也定义了群集服务和群集服务的故障切换行为。
3、集群配置文件管理CCS
其默认配置文件为/etc/cluster/cluster.conf,运行于集群中各节点,当某一节点的配置信息发生改变时,使同一集群内的其他节点的配置文件发生相应变化。
4、保护设备Fencs
当 CMAN 决定某个节点已经发生故障,它将告知其他群集基础结构组件。在收到通知后,fenced 将保护(fence)故障节点。其他群集基础结构组件将决定采取什么行动,也就是说,它们执行任何必需的恢复。例如,当 DLM 和 GFS 被告知节点故障时,将暂停活动,直到它们检测到 fenced 已经完成对故障节点的保护。当确认故障节点已经被保护时,DLM 和 GFS 会执行恢复。DLM 释放对失败节点的锁定;GFS 恢复故障节点的日志。GNBD也是Fencs的一个组件。
5、分布式锁管理器DLM
分布式锁管理器管理集群中挂载使用GFS的节点来同步它们对共享资源的访问,它运行于每一个集群节点,是集群中所有节点共享锁文件。CLVM使用锁管理器来同步对LVM卷和卷组(也对共享存储)的更新。
6、集群文件系统GFS
GFS 是允许集群内所有节点可同时访问某个共享的块设备的集群文件系统。GFS 是一个原生(native)文件系统,它直接和 Linux 内核文件系统接口的 VFS 层进行通信。GFS 使用分布式元数据和多个日志来优化群集操作。要维护文件系统的完整性,GFS 使用一个锁管理器来协调 I/O。当节点修改了 GFS 文件系统上的数据,这个改动马上为使用这个文件系统的其他群集节点可见。同时,GFS使整个群集只需安装一次应用程序或补丁,并可使集群内多个节点的服务对数据可以并行读/写操作。
7、集群配置管理工具Conga
Conga是为RHCS集群和存储提供集中配置和管理的软件组件集合,Conga里的主要组件是luci和ricci,它们都是可单独安装的。luci是一个服务器组件,它运行在一台机器上并通过ricci与多个群集和机器通信。ricci是运行在Conga管理的每台机器(群集成员或独立的机器)上的代理。
Conga在CentOS 7上ricci被更换为pcsd。