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.
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.
转载于:https://blog.51cto.com/comtv/139726