搭建基于Linux具有高可用性的集群环境 ZT
BOoRFGOnZ
|
1#
BOoRFGOnZ 发表于 2008-01-25 16:27
搭建基于Linux具有高可用性的集群环境 ZT
搭建基于Linux具有高可用性的集群环境
反馈:史应生shiyingsheng@yahoo.com.cn 文章下载地址:http://blogimg.chinaunix.net/blog/upfile2/071113164433.pdf 高可用性是企业级服务器集群的一个重要元素,可以帮助在服务器宕机的情况下减小服务的"downtime". 本文章从技术的角度,讲述了目前主流的Linux发行版(Red Hat和Novell)的高可用产品的构架和特性。 适合读者: 中/高级的Linux 系统管理员 企业IT部门的决策者 方案构架师 对高可用有兴趣的所有人 一.高可用概念: 高可用集群软件通常要包括几个通用的特性。至少要提供: 1.一种机制来定义哪些系统可以被用作集群节点 2.哪些服务或者应用可以在节点间作失效切换(fail-over) 3.节点间内部相互通信的方式 4.当失效的节点控制相同的集群资源的情况下,防止资源的冲突 5.防止集群裂脑(split-brain)发生 6.Fence机制或者更加复杂的I/O fence机制 7.提供集群合作管理的机制 8.提供监控工具 9.预先定义的应用和服务的监控脚本 二.Heartbeat和SUSE Linux Enterprise Server Heartbeat来自于High-Availability项目 (www.linux-ha.org)。SLES9和SLES10所带的版本不同,SLES9包含的版本是Heartbeat1.x, 它允许创建2个节点的集群,提供基本的高可用性failover服务。SLES10包含的版本是Heartbeat2.x.它允许创建多个节点的集群,提供增强的特性 2.1) Heartbeat 1.x的特性 Heartbeat1.x允许集群节点和资源通过/etc/ha.d目录下面的两个文件来配置 ha.cf:定义集群节点,失效检测和切换时间间隔,集群时间日志机制和节点Fence方法 haresources: 定义集群资源组,每一行定义可以一起进行失效切换的一个默认的节点和一组资源,资源包括IP地址,文件系统,服务或者应用 2.2) Heartbeat 2.0的特性 Heartbeat 2.0 即支持基于Heartbeat1.x 的配置(仅限于2个节点)又支持模块结构的配置方法-集群资源管理器(Cluster Rescource Manager-CRM). CRM模型可以支持最多16个节点,这个模型使用基于XML的集群信息(Cluster Information Base-CIB)配置。CIB文件(/var/lib/heartbeat/crm/cib.xml)会在各个节点间自动复制,它定义了下面的对象和动作: *集群节点 *集群资源,包括属性,优先级,组和依赖性 *日志,监控,仲裁和fence标准 *当服务失败或者其中设定的标准满足时,需要执行的动作 图一 图一显示了Heartbeat2.0结构的关键元素。Consensus Cluster Membership服务使用选举机制允许集群节点决定指定的协调器(Designated Cooridnator-DC),它来帮助建立仲裁,管理集群节点成员关系和资源分配。DC维护集群的状态和管理策略。其他的节点必须转发状态改变请求到DC处理。Heartbeat服务检查节点和连接状态来决定失效是否发生,集群事件日志服务(ha-logd)提供集群套件中所有服务的日志功能。 为了控制集群资源,本地资源管理器(Local Resource Manager-LRM)启动,停止和监控资源代理。LRM守护进程(lrmd)负责和DC的集群时间通信。节点的fence代理是一种特殊的资源,由node-fencing进程stonithd控制。stonith的意思是"Shoot the Other Node in the Head",主要是使出现问题的节点从集群环境中脱离。fence设备包括串行或者基于网络的电源切换设备或者远程管理硬件。 当节点不能正常通信时,fence防止不同子集的节点运行相同的资源。这种情况叫做裂脑。裂脑通过使用应用设计,节点fencing或者资源指定的fencing来避免。 CRM守护进程(crmd)管理CIB,它允许对节点和资源的行为的高级限制和依赖。集群策略引擎(pengine)解释和实施这些限制和依赖。集群转移引擎(tengine)管理CRM的状态和在出现失效事件时协调在另一个节点上进程的重新启动和资源转移。 2.3)配置工具 Heartbeat2.0.5,包含在SLES10中,引入了GUI工具用于集群的管理和监控。它包括监控脚本样本来协助通用Linux服务和应用的配置,包括基于xinetd的服务,Apache服务,IBM DB2数据库,IBM WebSphere应用服务器。许多其他的应用,例如NFS,Samba也可以进行配置。Heartbeeat2.0 遵循Open Cluster Framework (OCF)资源代理应用编程接口,允许使用通用的LSB初始化脚本和集群相关的OCF资源初始化脚本。 每个版本的Heartbeat也可以配置为结合Linux Virtual Server功能的用于IP负载均衡的功能。这取决于被配置的服务和资源的需求, 共享存储,是否使用集群文件系统的并发访问机制等等,与Oracle的OCFS的结合会在Heartbeat的下一个版本中集成。 在SLES10中包含在Heartbeat2.0.5中的GUI工具简化了配置。同时,Novell也计划使用Heartbeat2.0的核心服务作为将来Novell Cluster Services(NCS)软件的基础。NCS是独立license的,包括了预先定义的资源类型,GUI配置工具和监控工具。 三.Red Hat Cluster Suite (RHCS) 和 Red Hat Enterprise Linux 4 RHCS专门为Red Hat Enterprise Linux设计包含了下面两个不同类型的集群 应用和服务切换:创建关键应用和服务的多节点服务器的集群环境 IP 负载均衡:对于进来的IP网络请求在一群服务器组中做负载均衡 图二 集群的主要元素包括Cluster Manager (CMAN),Cluster Configuration System (CCS) 和 Resource Group Manger (rgmanager).图二显示了在任何指定的时间运行在一个节点上的不同的服务和守护进程的关系CCS提供访问位于每一个节点的单一集群配置文件/etc/cluster/cluster.conf.配置文件包括版本号,它在集群任何时候改变时都会更新。ccsd运行在每一个节点上。当ccsd启动后,它找到节点间最新版本的配置文件。 CMAN用于管理集群成员,消息和通知。CMAN包括一套内核补丁和一个用户空间程序 (cman_tool). cman_tool用于使一个节点加入或者离开集群。改变集群的投票期望值。CMAN依赖于CCS. 组资源管理器进程(clurgmgrd)处理管理员指定的集群服务(也称之为资源),包括管理员的请求比如服务启动,服务禁止,服务重新加载和服务重启动。它也处理在服务失效时,服务的重新启动和服务重定向。 3.1 配置工具 RHCS支持16个节点的集群。GUI的配置工具是system-config-cluster.集群配置包括:资源信息,节点信息,fencing设备信息和失效域信息。这些信息以XML的格式存储在每个节点的/etc/cluster/cluster.conf文件中。这些资源在一个服务下被组织成资源组。 失效域是集群成员的子集。失效域有一下的特性: 无限制 — 允许你指定要优选的成员子集,但是被分派到这个域的服务可以在任何可用的成员上运行。 有限制 — 允许你限制能够运行某个特定服务的成员。如果在限制的失效转移域中没有一个可用的成员,服务就无法被启动(手工启动或被群集软件启动)。 无序 — 当服务被分派给一个无序的失效转移域,运行服务的成员就会从失效转移域成员中不按优先顺序被选择。 有序 — 允许你在失效转移域成员中指定一个优选顺序。在列表最前面的是最优先的,跟着是次一级的,依此类推。 按照默认设置,失效转移域是无限制和无序的。 CCS 支持集群信息的在线改变,而且会自动同步到其他的节点。 3.2 失效切换能力 类似于STONITH,fence设备是一个节点在它重新启动它的服务前可以power cycle另一个节点。 Fence设备可以在一个没有响应的节点恢复后,防止数据冲突。如果CMAN检测到一个节点失败, 失败的节点会从集群中删除。如果不使用fence设备,那么一个失效的节点可能会导致集群服务在多余一个节点运行,从而造成数据冲突甚至是系统崩溃。 四.针对这两个厂家的商业高可用性解决方案如何选择: 表1 对Red Hat 和 Novell 高可用软件的作了技术比较。
表一 个人认为: 对于费用敏感的企业Heartbeat是个不错的选择,它在Novell的发行版中提供。 对于想寻求易用的企业可以选在RHCS和它的GUI功能。RHCS和RHEL是独立的产品 |