Linux下的高可用性方案研究
来源: [url]www.ixdba.net [/url] 作者: IXDBA.NET社区    时间:2007-06-20  
  保证持续稳定的系统运行时间变得越来越重要,而传统意义上的小型机系统让普通用户望而却步。用户需要的是更高的可用性以及更低的成本。高可用性 (HA) 技术能自动检测服务器节点和服务进程错误、失效,并且当发生这种情况时能够自动适当地重新配置系统,使得集群中的其他节点能够自动承担这些服务,以实现服务不中断。  

   Cluster 应用可分为三方面: High-Availability(HA)( 高可用性集群 ) Load Balance( 负载均衡集群 ) Scientific( 科学集群 ) 。在集群的这三种基本类型之间,经常会发生混合与交杂。于是,可以发现高可用性集群也可以在其节点之间均衡用户负载,同时仍试图维持高可用性程度。同样,可以从要编入应用程序的集群中找到一个并行群集,它可以在节点之间执行负载均衡。而本文则侧重于介绍基于 Linux HA 解决方案方面的问题  

  基于 LVS HA 方案  Linux 要进入高端市场就必须在这方面有相应的措施,所以许多公司都在这方面加大了研究力度。现在,我们可以使用一些现存的软件去构筑具有高可用性的 LVS 系统。下面列出两种方案,以供参考。
IXDBA.NET技术社区
 
  [方案一] mon+heartbeat+ fake+coda 

  我们可以使用 “mon” “heart beat” “fake” “coda” 四个软件来构筑具有高可用性的 Virtual Server( 虚拟服务器 ) “mon” 是一个大众化的资源管理系统,用来监控网络上的服务器节点和网络服务。
“heartbeat”
实现在两台计算机间通过在串行线上使用 UDP 协议传送 心跳信息 “Fake” 是一个使用 ARP 欺骗的方法来实现 IP 接管。  

  当服务器故障时,处理过程如下: “mon” 进程运行在负载均衡器上,负责监测整个集群的服务器节点和服务进程。在配置文件 “fping.monitor” 中写入要检测服务器节点,然后 “mon” 进程将会隔 t 秒检查一下相应的服务器节点是否还活着。  

  另外相关的服务监视器也要做相应的配置,这样 “mon” 进程将每 m 秒检测一下所有节点的相应服务进程。例如: http.monitor :用于配置监控 http 服务; ftp.monitor :用于配置监控 ftp 服务;以此类推。当配置完成后,某个服务器节点失效或重新生效、服务进程失效或重新生效时都会发送一个通告信息,因此,负载均衡器能够知道服务器节点是否能接受服务。  

  现在,负载均衡器成为了整个系统的单点失效。为了防止这一现象,我们必须安装一个负载均衡器的备份服务器。 “fake” 软件实现当负载均衡器失效时,备份服务器自动接管 IP 地址,并继续服务。而 “heartbeat” 则随时根据负载均衡器的状态自动激活 / 关闭备份服务器上的 “fake” 进程。在负载均衡器和备份服务器上都运行着一个 “heartbeat” 进程,它们通过串行线周期性地发送 “I'm alive ” 消息。如果备份服务器在一个预定时间内接收不到来自负载均衡器的 “I'm alive” 信息时,将自动激活 “fake” 进程接管负载均衡器的 IP 地址,并开始提供负载均衡服务;而当再次收到来自负载均衡器的 “I'm alive ” 消息时,备份服务器将自动将 “fake” 进程关闭,释放出它接管的服务器,负载均衡器重新开始工作。  

  但是,如果负载均衡器在客户正在请求时失效,这时会引起客户请求失败,客户必须重新发出请求信息。  

   “coda” 是一个容错的分布式文件系统,源于 Andrew 文件系统。服务器上的目录能够存储在 “coda” 上,所以文件能够实现高可用性,并且易于管理。  

  [方案二] ldirectord+heartbeat 

   “ldirectord”(Linux Director Daemon) Jacob Rief 编程实现的一个独立进程,以实现对服务和物理服务器的监测,广泛地用于 http https 服务。  
   “ldirectord” 安装简单,能很好地与 “heartbeat” 配合工作。 “ldirectord” 程序包含在 “ipvs” 包中的 “contrib” 目录中。  
 
 以下是 “ldirectord” 的一些优点:  
   “ldirectord” 是专门撰写的 LVS 监测程序。  
  它从 /etc/ha.d/xxx.cf 文件中读取所有关于 IPVS 路由表的配置信息。当 “ldirectord” 运行起来后, IPVS 路由表将会被适当地配置。  
  可以将 Virtual service 配置放在多个配置文件中,所以可以单独修改某一种服务的参数,而不影响其他的服务。 “ldirectord” 能被 “heartbeat” 轻松地管理 ---- 启动、关闭。  
  将 “ldirectord” 放到 /etc/ha.d/resource.d/ 目录下,然后在 /etc/ha.d/haresources 中增加一行:  
   node1 IPaddr::<?XML:NAMESPACE PREFIX = ST1 />10.0.0.3ldirectord::www ldirectord::mail 
   “ldirectord” 能够手动开启、关闭。可以在无备份负载均衡器的 LVS 集群中使用它。  
   Xlinux LATCH HA 方案   正如前面所述,高可用性解决方案 (HA) 是极为重要的,许多厂商为此投入了大量的研究。其中, Xlinux 发行版就提供 LATCH HA 解决方案。

下面我们就一起看看 LATCH HA 方案。
 
LATCH HA
解决方案的最典型的系统结构:两台主机 A B 共享一个磁盘阵列, A 为工作机, B 为备份机。它们之间用一根心跳线来连接,这称为 心跳检测 ,主要通过一条 RS232 检测链路来完成。 LATCH HA 也采用了用 Ping 来验证系统宕机的方法。安装在主机上的 HA 软件通过心跳线来实时监测对方的运行状态,一旦正在工作的主机 A 因为各种硬件故障导致系统发生故障,主机 B 立即投入工作。
   LATCH HA 实现了 高可靠性共享存储 架构。该架构由两个或三个冗余服务器、一个共享冗余磁盘阵列、一个可选 DBMS LATCH HA 系统软件构成。在 LATCH HA 的保护下,企业的计算机系统能够提供不间断的信息服务,避免由于硬件故障或日常维护所带来的宕机,因而能够保障最佳的可靠性及最大程度地减少宕机时间。
 
  方案应用  

   LATCH HA 能够应用在各种集中式、客户机 / 服务器模式或 OLTP 系统中。同时其与市场上各种主流的数据库系统与 OLTP 软件 ( 如: Oracle SYBASE Informix Tuxedo) 也都保持兼容。 LATCH HA 同时提供了各种应用程序接口。因此,客户能够在其私有软件中集成各种功能来保证系统的高可靠性。
 
   LATCH HA /HS2000  在线待机模式

  在这种模式下,一个服务器作为主服务器。正常情况下其承当所有的服务。另外一台服务器作为待机服务器 ( 正常情况下除了监控主服务器的状态,不进行其他的操作 ) 。一旦主服务器宕机,待机服务器就接手工作,成为新的主服务器。客户仍然可以拥有同样的服务器 IP 地址、 NFS 、数据、数据库及其他 …… 这种应用模式近似于上面介绍的典型应用模式 ( 两台服务器实际上是在完成同一个功能应用 ) ,安装在主机上的 HA 软件通过心跳线来实时监测对方的运行状态,一旦正在工作的主机 A 因为各种硬件故障,如电源失效、主要部件失效或者启动盘失效等导致系统发生故障 , 主机 B 立即投入工作。
 
   LATCH HA /DA2000 双机就绪模式  

  在这种模式下,两个主机都作为主服务器,共享自己的磁盘阵列,各自承当一部分服务。例如:服务器 A 在执行应用 A,  服务器 B 在执行应用 B,  两个主机在正常情况下各自独立运行自己的应用逻辑,两个主机同时又都作为对方的待机服务器,通过心跳线监控对方的状态。一旦某一服务器宕机,另一台服务器就承担所有的服务,为所有的客户服务。一旦服务器 A 发生故障,服务器 B 马上接管服务器 A 上原来的应用;或者服务器 B 发生故障,服务器 A 马上接管服务器 B 上原来的应用,这是一种互为冗余的模式。  
  很明显,一旦某一服务器宕机,另一台服务器的工作负担就比较重,于是就有了三主机模式。  

   LATCH HA /HC2000  三主机模式  

  这种应用模式是最高端的 HA 应用模式,它既保证了系统的设备冗余,避免系统宕机,而且又能保证在一旦宕机的情况下有足够的系统资源可供使用。  
  在这种模式中,待机服务器 C 同时监控主服务器 A B 的状态。一旦服务器 A B 宕机,服务器 C 将承担其服务,为客户服务。这种系统结构既保证了系统的安全运行,又保证了系统资源。  

   Linux HA 的解决方案当然不限于上述两种,但其核心思想是一致的,即提供不间断的服务。近年来随着 Linux 操作系统不断走向成熟,功能不断增强,特别是其遵循 GPL 和标准化的 PVM MPI 消息传递机制的特性和在普通 PC 机上越来越好的高性能网络的支持,所有这些为基于 Linux 的集群系统的发展提供了坚实的技术基础,在把技术转化为具体的应用过程中,高端的 HA 应用以其稳定可靠的性能和与 Unix 相比价格上的优势而脱颖而出。随着基于 Intel 平台的服务器业已成为关键性业务和应用的主流服务器, Linux HA 集群技术的应用亦将日益广泛。  
 
<?XML:NAMESPACE PREFIX = V /><?xml:namespace prefix = o />[ 相关贴图 ]

 


   HA 实际上是两台 ( 更多 ) 计算机通过一定方式互相监听,实现热备份。当其中 Primary server 出现问题时, Standby server 能够自动立即接替工作,使用户感觉不到停机。在 Primary server 恢复正常之后, Standby server 又会把工作还给 Primary server.