分类: LINUX
2009-05-05 13:23:04
本文所参考的资源: 史应生《红帽集群高可用性配置管理和维护之最强版》、《基于红帽RHEL5U2 GFS2+ISCSI+XEN+Cluster 的高可性解决方案-最新技术版》 鸟哥Linux 私房菜: 网友分享区的 《 MySQL on RHCS 》 RedHat doc: 《 Cluster_Suite_Overview5.2 》、《 Cluster_Administration5.2 》 感谢以上IT Pro的无私奉献,没有你们,我想我不可能体验到RHCS ! 简介: 不间断的无故障的业务运行环境是每一个企业IT系统部署要求的重中之重。任何一个发生在关键服务上的停顿故障都会导致直接和间接的企业经济损失以及客户的满意度下降。虽然Linux操作系统已经提供高度的容错能力,但是关键业务系统仍旧需要成熟的技术来实现服务的高可用性,尽可能减少和缩短服务停顿的次数和时间。传统的通过冗余和复制硬件设备的解决方式既昂贵且局限性大,用户只能通过这样的方式解决企业中最关键的业务应用对于可用性的要求。 因此很多企业内部的重要应用由于缺乏高性价比的方案而失去保护,面临着灾难后的长时间恢复和数据的丢失。 同样的情况下,当企业的IT部门需要对关键应用所处软硬件环境进行调整,或仅仅是作系统维护的时候,这种计划内的停机也会造成应用重新上线前的长时间服务停止以及潜在的数据丢失。 计算机集群作为一种技术近两年也越来越受到大家的关注,这也是因为海量信息的不断厂商要求计算机提升自己的性能,在不能有效的更换硬件设备的情况下,就要通过网络手段,将多台服务器通过高速的局域网连接,实现统一管理,分布式运算,提高整体系统的性能。 商业的 Unix 市场中,高可用性 ( High Availability ) 是销售Unix 服务器解决方案的关键。事实上每个 Unix 供货商都有他们自己的高可用性软件解决方案,例如IBM 的高可用性丛集软件解决方案,就是 AIX 上的HACMP ( High Availability Cluster Multi-Processing ) 。其它主要的 Unix 供货商像 HP,Sun,DEC 和其它的供货商有许多类似的软件解决方案可用。High Availability 是现今销售Unix 给许多企业的关键。特别对于需要web-based 和其它必须一整年,每周七天,每天 24 小时可用的服务器。至于新窜起的网格运算市场而言更是如此。 Red Hat 公司在2007年发布Red Hat Enterprise Linux 5 时,就将原本是作为独立软件发售的用于构建企业级集群的集群套件redhat cluster suite(RHCS,红帽集群套件)集成到了操作系统中一同发布,将RHCS集成到系统中,这意味着将是RHEL产品在集群功能方面的提升。而且RHCS的安装与管理也将会变得更容易掌握。 红帽的企业集群解决方案(RHCS)是全球领先的高可用性解决方案,专为红帽企业Linux量身定做,是全球企业Linux厂商中唯一提供原生集群解决方案的厂商。RHCS集群经过红帽公司全球研发团队以及广大开发者社区的多年打造,已经成为企业级Linux平台上顶尖的高可用解决方案。 红帽RHCS集群采用了业界成熟的技术和主流国际标准,遵循高度安全和可靠的苛刻要求,被广泛的部署在电信,金融,政府,军队,制造,医疗,商贸,教育等各行业。 通过长年于主流硬件制造商及软件制造商的研发协作与合作,红帽RHCS集群已经在几乎所有主流硬件平台上运行,并且高度支持主流的数据库及中间件应用,针对绝大多数网站/网络所必须的应用服务也提供了完整的支持。 红帽RHCS集群方案已经预置了对主要网络和数据库服务的支持,用户可通过红帽全球专家服务(GlobalProfessional Service)完成对特殊服务和应用的集群定制部署。 以上花了如此一大篇的篇幅介绍集群技术与Red Hat Cluster Suite ,那么集群究竟是怎么一回事?那么Red Hat Cluster Suite 又凭什么能够成为Linux 平台上顶尖的高可用解决方案呢?下面就以这两个问题展开讨论: 一、什么是集群? 一个集群是由两台或更多台计算机(也可以称为节能或成员)同时工作来执行一个任务。群集一般可以分为存储、高可用群集、高性能群集、负载均衡群集四大类。下面分别对这四类集群进行简单说明,以及介绍在红帽群集套件是通过哪一部分功能来实现这一系列功能。 存储集群在一个集群中为服务提供一个一致的文件系统映像,允许服务同时去读写一个单一的共享文件系统。存储集群通过将数据放到一个共享文件系统中从而消除了在应用程序间拷贝数据的麻烦,并提供一个单一的备份和故障恢复点。Red Hat Cluster Suite通过Red Hat GFS提供一个存储集群。 Red Hat Cluster Suit高可用性集群通过消除单一故障点和节点故障转移功能(当一个集群节点失败后将服务转移到其他节点上)来提供高可用性。节点故障转移功能对客户端是透明的,当节点失败后客户端并不会看到节点之间的服务转移。Red Hat Cluster Suite通过高可用性服务管理组件来提供一个高可用性集群。 负载均衡集群将服务请求调度到集群中的多个节点上。负载均衡是一个低成本、高可用性的集群,因为你可以根据负载情况灵活的添加和删除节点。在负载均衡集群中当一个节点失败后,调度器会发现这个失败并停止向此节点发送请求。节点的失败对于客户端是透明的。Red Hat Cluster Suite 通过LVS(Linux Virtual Server)来提供负载均衡集群。 高性能集群在节点上执行并行计算。高性能集群允许应用程序并行计算从而提高应用程序性能。 NOTE:红帽群集套件暂不支持高性能群集的应用。 二、什么是 RHCS ? RHCS即 RedHat Cluster Suite ,中文意思即红帽集群套件。红帽集群套件(RedHat Cluter Suite, RHCS)是一套综合的软件组件,可以通过在部署时采用不同的配置,以满足你的对高可用性,负载均衡,可扩展性,文件共享和节约成本的需要。 对于需要最大正常运行时间的应用来说,带有红帽集群套件(Red Hat Cluster Suite)的红帽企业 Linux 集群是最佳的选择。红帽集群套件专为红帽企业 Linux 量身设计,它提供有如下两种不同类型的集群: 1、应用/服务故障切换-通过创建n个节点的服务器集群来实现关键应用和服务的故障切换 2、IP 负载均衡-对一群服务器上收到的 IP 网络请求进行负载均衡 利用红帽集群套件,可以以高可用性配置来部署应用,从而使其总是处于运行状态-这赋予了企业向外扩展(scale-out)Linux 部署的能力。对于网络文件系统(NFS)、Samba 和Apache 等大量应用的开源应用来说,红帽集群套件提供了一个随时可用的全面故障切换解决方案。而对于其它大多数应用来说,客户可以使用红帽集群套件提供的模板来创建自定义的故障切换脚本。如果需要,还可以采用红帽专业服务(Red Hat Professional Services),由专业人员提供量身定制的红帽集群套件部署服务。 技术要点 : 1、最多支持128个节点(红帽企业Linux 3 和红帽企业Linux 4 支持 16 个节点)。 2、可同时为多个应用提供高可用性。 3、NFS/CIFS 故障切换:支持 Unix 和 Windows 环境下使用的高可用性文件。 4、完全共享的存储子系统:所有集群成员都可以访问同一个存储子系统。 5、综合数据完整性:使用最新的 I/O 屏障(barrier)技术,如可编程的嵌入式和外部电源开关装置(power switches)。 6、服务故障切换:红帽集群套件可以确保及时发现硬件停止运行或故障的发生并自动恢复系统,同时,它还可以通过监控应用来确保应用的正确运行并在其发生故障时进行自动重启。 红帽集群套件可与 x86、AMD64/EM64T 和 Itanium 计算机上运行的红帽企业 Linux AS 和红帽企业 Linux ES 共同使用。像所有红帽解决方案一样,它也是以年度订阅的方式通过红帽网络提供 。 三、RHCS有哪几部分组成? 通过前面的介绍,大家知道RHCS是一套综合的软件组件包,那么RHCS是由哪几部分组成的呢?RHCS主要有下面部分组成: 集群架构—提供一个基本功能使节点作为集群工作在一起:配置文件管理,成员关系管理,锁管理和栅设备。 高可用性服务管理--提供节点失败转移服务,当一个节点失败后将服务转移到另一个节点上。 集群管理工具—通过配置和管理工具来配置和管理Red Hat集群。 Linux Virtual Server (LVS)—LVS提供一个基于IP的负载均衡功能,通过LVS可以将客户请求均匀的分配到集群节点上。 你可以通过下面的组件补充Red Hat集群: Red Hat GFS (Global File System)--GFS为Red Hat Cluster Suite提供一个集群文件系统,CFS允许多个节点在块级别上共享存储。 Red Hat Cluster Suit * Cluster Logical Volume Manager (CLVM)--提供逻辑卷管理集群存储。 * Global Network Block Device (GNBD)--GFS的一个补充组件用于将存储在块级别导出到以太网上。 在上面介绍了如此多的与集群、RHCS相关的内容,现在就言归真传了,讲一些真正实用的,与本文密切相关的内容,如读者对其他相关的内容感兴趣,可以自己去找找。因为本文主要是针对于如何使用RHCS构建一个高可用的集群环境,故本文只会针对于RHCS中的高可用集群相关的内容进行介绍,其他的内容就不作介绍啦(如果介绍下去,我想那不是一两篇文档的事啦)。 首先,先来熟悉一下本文需要掌握的与RHCS相关的知识点: 1、集群节点(Cluster Node) 集群节点也称为集群成员,说白了就是一台运行着的服务器。 2、故障切换域 (Failover domain) 故障切换域是多个群集节点的一个子集,用来执行特定的群集服务。 Note:故障切换域是不需要操作的。 为了维护数据的完整性,一个群集服务可以在同一个时间里只运行在一个群集节点上。在一个故障切换域里可以指定个容错优先级。特定的故障切换优先级包含分配一个故障切换优先级别到故障切换域里的每一个节点。故障切换优先级别用来决定故障转移次序-----决定哪一个节点上运行的群集服务应该进行故障切换。如果没有指定故障切换优先级,一个群集服务可以故障切换到故障切换域里的任何节点上。同样,如果你要限制一个群集服务只是运行在与它自己相关联的故障切换域的一个指定的节点上,你也可以对它进行指定(当同一个无限制的故障切换域相关联的时候,在一个故障切换域里没有任何成员是可用的事件中,群集服务可以在任何节点启动)。 在上图中,故障切换域1(Failover Domain 1)是配置在它自己的域里进行可限制的故障切换的,因为,群集服务X只能在节点A与节点B之间进行故障切换。故障切换2(Failover Domain 2)同样也是配置在它们自己的域里进行可限制的故障切换。另外,它还进行了故障切换优先级的配置。在故障切换域2中的优先级配置中,节点C的故障转移优先级别是1,节点B的优先级别是2,节点D的优先级别是3。如果节点C出现故障,群集服务Y将故障切换到节点B,如果不能故障切换到节点B,那么将尝试故障切换到节点D。故障切换3(Failover Domain 3)是配置成没有优先级和限制性的。如果节点上的群集服务Z运行出错的话,群集服务Z尝试故障切换到故障切换域3里的任意一个节点上。如果这些节点都是不可用的,群集服务Z将故障切换到集群中的任何一个节点。 上图显示的是一个高可用的群集的实例,在这个实例中一个WEB服务器命名为“Content-Webserver”,它运行集群节点B上,并且集群节点B是在一个故障切换域里,在这个故障切换域里包含节点A、B、D。另外,故障转移域是配置具有一个故障转移优先级的,这个故障转移的顺序是:B-D-A。并且故障转移只能在这个故障转移域的节点内进行。群集服务包含如下集群资源: IP Address resource-------IP Address 10.10.10.201 一个应用程序资源命名为“httpd-content”-----一个WEB服务器应用程序的初始脚本“/etc/init.d/httpd(指定的httpd)” 一个文件系统资源-------- RedHat GFS 命名为“gfs-content-webserver” 客户端访问群集服务是通过 IP 地址10.10.10.201。WEB 服务器应用程序 httpd-content 开始互动操作。httpd-content 应用程序使用 gfs-content-webserver 文件系统。如果节点B出错,content-webserver群集服务将故障切换到节点D,如果节点D是不可用的或者同样也出错,服务将故障切换到节点A。故障转移将会造成不会显示任何错误信息给客户端。群集服务将通过一个相同的IP地址可以从另一个集群节点上实现可访问,因为它是故障切换前的。 故障切换域是可以在一个发生故障的节点中,用来选择子组成员有资格来运行群集服务。故障切换域的特性可以在域创建或域创建之后的时候指定,他们是: 无限制的(尽管一个成员子集是首选的,群集服务分配到这个域任何可用的成员上运行) 受限制的(限制成员运行一个指定的群集服务,如果在一个受限制的故障切换域里没有任何一个成员是可以的,服务将不能启动) 无序的(运行群集服务的成员是从可用的故障切换域成员中选择的,而不是通过优先权排序) 有序的(在一个故障切换域中指定一个首选成员序列表) 默认,故障切换域是无限制和无序列的。 在群集具有几个成员时,使用一个受限制的故障切换域可以最小化设置群集来运行一群集服务(如 httpd,)的工作量。这就需要你在所有运行群集服务的成员上设置配置相等性,而不是建立在整个集群运行群集服务。在受限制的故障切换域里必须设置唯一的成员与群集服务相关联。 3、资源(Resource) 有许多集群资源类型是可以配置的,以下的三个资源类型将用来定义提供一个高可用的WEB服务功能。 脚本(Script) IP address File system 3.1脚本(Script) 脚本资源基本上是参考一个脚本的执行,这个脚本可以是预先存在的或出于一个指定目标撰写的。 3.2IP address 这个资源地址可以用于任何需要资源地址的群集服务,在同一个群集服务相关联后,如果认为它是必需的,可以通过一个群集成员重新设置,或者通过一个GUI接口(luci)或命令行。如果任何群集成员提供的服务变得不可用(如硬件或软件错误,网络/连通性错误),服务IP将自动迁移到一个有资格的成员上。通常,一部分地址是为不同的群集服务所保留的。 必须定义一个地址给WEB服务用来发布HTML内容。 4、服务(Service) 在这里,这个服务(Service)与我们平时所接触到的 /etc/init.d/httpd 等应用程序是不同的。在RHCS高可用性集群中,服务(Service)实际上指的是一系列资源(Resource)的集合。为什么这么说呢?大家想一想,在一个WEB服务器应用的集群中,如果集群中的主WEB服务器宕机啦,另一台备用的服务器开始接管WWW服务,只需要启动 /etc/init.d/httpd 就行了吗?在一个高可用性集群中,这样是不行的,备份服务器需要全部接管主WEB服务器所有与集群相关的资源,包括集群使用的IP地址、网页文件存放的目录(存放在 sharedisk 上)等,在备份服务器接管主服务器的资源时,首先接管IP地址,之后是网页文件存放目录(Sharedisk),最后才是启动 /etc/init.d/httpd start 命令。 5、Fence Device 通过栅设备可以从集群共享存储中断开一个节点。栅设备从共享存储切断I/O以保证数据的完整性。当CMAN确定一个节点失败后,它在集群结构中通告这个失败的节点,fenced进程将失败的节点隔离,以保证失败节点不破坏共享数据。Fenced运行在每个节点上。 Red Hat Cluster Suite提供下面集中隔离方式: * 电源栅设备 * 光线通道栅设备 * GNBD栅 * 其他栅设备 栅设备实例 当A上的栅进程发现D节点失效时,它通过栅代理通知电源控制器将D节点隔离。 电源栅设备实例 当A上的栅进程发现D节点失效时,它通过栅代理通知光纤通道交换设备将D节点隔离 光纤通道交换栅设备实例 那么为什么RHCS需要使用 Fencing device 呢?在现实生活中,服务器有时都会出现负载过重,尤其是像数据库服务器,在服务器负载过重时,负载过重会使到服务器完全处理不过来手上的工作,甚至连 Heartbeat 也无法传递,但此时服务器实际上并没有宕机,在经过一段时间后,负载没有那么重啦,服务器又重新开始正常工作,Heartbeat 也可以正常传递啦。这里面就有一个问题啦,在RHCS的机制里,主服务器与备用服务器是通过 Heartbeat 来进行集群信息传递的,在一个规定的时间里,备份服务器都会通过 Heartbeat 与主服务器取得联系,以确定主服务器是否是工作正常。当备用服务器发现与主服务器的 Heartbeat 不通时,没有产生响应时,备用服务器就会判断主服务器已经宕机啦,那么备用服务器就会开始接管主服务器上的集群服务。但是正如上面所描述的,如果主服务器是由于负载过重,而无法响应备用服务器的 Heartbeat ,但过了一段时间主服务器又开始恢复工作啦,集群服务中包含有File System资源,这时就有可能会造成两台服务器同时挂载文件系统,就会造成文件系统数据不一致,严重的情况可能会损坏整个文件系统。 RHCS为了避免这种情况,就使用了 Fencing Device 。当RHCS发现主服务器的Heartbeat 不通时,第一件事不是先接管 Service ,而是利用 Fencing Device 将主服务器重开机(poweroff),然后备用服务器再开始接管Service ,这样就不会发生两台服务器同时挂载文件系统资源的情况啦。 6、Conga Conga 是一个综合的软件组件集,用来提供红帽集群和存储的集中控制和配置管理。Conga 主要提供以下功能: (1)用于管理红帽集群和存储的WEB图形化接口 (2)集群数据和支持包的自动部署 (3)易于整合现有的集群 (4)不需要重新验证 (5)集群状态和日记的集成 (6)细粒度用户权限控制 在Conga 里主要的组件是 luci 和 ricci ,它们都是单独安装的。luci 是一个服务器(server)组件,它运行在一台计算机上,通过 ricci 可以同多个集群和计算机联系。ricci 是一个代理(agent)组件,运行在每一台通过 Conga进行管理的计算机上。 第二,再来介绍一下本次所使用到的技术: 1、共享存储使用了基于ISCSI的IP-SAN技术。iSCSI集SCSI、以太网和TCP/IP等技术于一身,支持iSCSI技术的服务器和存储设备能够直接连接到现有的IP交换机和路由器上,具有低廉、开放、大容量、传输速度高、安全等诸多优点,最适合需要在网络上存储和传输大量数据的应用环境,比如广电视频制作和媒资系统,视频监控系统,IPTV系统,数据备份系统,以及许多的对IOPS和带宽性能要求不是还很高的数据库存储系统、大容量文件存储系统。 2、基于Cenos5.2 的RHCS高可用集群的实现,真正避免单点故障,保证服务的不间断运行 。CentOS(Community ENTerprise Operating System)是Linux发行版之一,它是来自于Red Hat Enterprise Linux依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定性的服务器以CentOS替代商业版的Red Hat Enterprise Linux使用。两者的不同,在于CentOS并不包含封闭源代码软件。本次所有服务器上运行的操作系统都为 CentOS 5.2 最后,我们来首先一下本次试验的环境: 3、本次环境的网络拓扑: 4、各个服务器IP的地址规划 服务器主机名 IP地址 承担的角色 Iscsitarget.cqh.com 192.16898.240 IscsiTarget Server ,luci server Rs-01.cqh.com 192.168.98.231 Iscsi ininiator,ricci agent ,Cluster node Rs-02.cqh.com 192.168.98.232 Iscsi ininiator,ricci agent ,Cluster node 系统安装: 语言选择:简体中文 键盘布局:U.S.English 硬盘分区: 服务器主机名 IP地址 硬盘分区(8G) Iscsitarget.cqh.com 192.16898.240 /dev/sda1 /boot 100M /dev/sda2 /swap 512M /dev/sda3 / 5G /dev/sda5 500M /dev/sda6 500M /dev/sda7 500M Rs-01.cqh.com 192.168.98.231 /dev/sda1 /boot 100M /dev/sda2 /swap 512M /dev/sda3 / 7.4G Rs-02.cqh.com 192.168.98.232 /dev/sda1 /boot 100M /dev/sda2 /swap 512M /dev/sda3 / 7.4G 注:iscsitarget.cqh.com 中的 /dev/sda5、/dev/sda6、/dev/sda7 用于 iscsi 共享使用,可以暂不用划分分区,系统安装完成后,再进行分区。 主机名与网络设置:按IP地址与主机名规划表进行设置 时区:Asia/ShangHai Root password: 包安装选择:clustering、 storage clustering,开发工具包全选、服务器中选择 web 服务器与windows文件服务器 系统安装完成后,进入系统,使用ntsysv 命令,设置开机自启动项,将以下启动项禁用: NetworkManager NetworkManagerDispatcher Acpid Apmd Atd Auditd Avahi-daemon Avah-dnsconfd Bluetooth Cpuspeed Cups Gpm Hidd Ip6tables Iptables Irqbalance Isdn Lvm2-monitor Mcstrans Mdmonitor Netfs Nfslock Pcscd Readahead_early Restorecond Rpcgssd Rpcidmapd Sendmail Smartd Xend Xendomains Xfs Yum-updatesd 禁用 SELINUX [root @iscsitarget root]# vi /etc/selinux/conifg # This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - SELinux is fully disabled. 将 SELINUX=enforcing 改成 SELINUX=disabled # SELINUXTYPE= type of policy in use. Possible values are: # targeted - Only targeted network daemons are protected. # strict - Full SELinux protection. SELINUXTYPE=targeted [ 本帖最后由 liheng 于 2009-4-30 18:29 编辑 ] |
您对本贴的看法: |
__________________________________ 子曾经曰过:君子敏于行而讷于言 |
| | |
精灵 CU编号: 536814 注册:2007-3-14 最后登录: 2009-05-05 帖子: 精华: 状态:...离线... [] [] [Blog] |
|
精灵 CU编号: 536814 注册:2007-3-14 最后登录: 2009-05-05 帖子: 精华: 状态:...离线... [] [] [Blog] |
|
精灵 CU编号: 536814 注册:2007-3-14 最后登录: 2009-05-05 帖子: 精华: 状态:...离线... [] [] [Blog] |
|
精灵 CU编号: 536814 注册:2007-3-14 最后登录: 2009-05-05 帖子: 精华: 状态:...离线... [] [] [Blog] |
|
精灵 CU编号: 536814 注册:2007-3-14 最后登录: 2009-05-05 帖子: 精华: 状态:...离线... [] [] [Blog] |
|
精灵 CU编号: 536814 注册:2007-3-14 最后登录: 2009-05-05 帖子: 精华: 状态:...离线... [] [] [Blog] |
|