7
7

本周花了不少时间研究HA集群,在忘记以前赶紧记录下来。 顺便鄙视一下redhatEL,不厚道, 搞了个yum但又不能用。

维持最长的系统正常运行时间对随需应变计算的成功来说越来越重要。不幸的是,很多现成即用(off-the-shelf)的高可用性(high availability,HA)解决方案 价格昂贵,而且需要专门的硬件。

本文介绍的是HA 服务的廉价替代方案--Heartbeat + DRBD + Linux实现一个双节点的高可用集群。假设该HA集群上提供的服务为apache和mysql. 当主节点出现故障时,自动的通过备份节点继续提供服务。

高可用性的概念
高可用性 是在系统、组件或者应用程序发生故障时快速恢复基本服务的系统管理策略。其目的是最大程度地减少服务中断,而不是容错。用来解决关键商务操作的系统执行故障的最常见解决方案是,使用另一个系统来等待并接管出故障的系统的负载,使商务操作继续进行下去。

HA集群构架

HA可以由两台数据同步的linux节点结成, 两个节点通过冗余的私有的物理连接进行数据同步和节点状态监视。

软件组件

  • Heartbeat

名为 High-Availability Linux 的开源项目的目标是,通过社区开发努力提供一个提升 Linux 可靠性(reliability)、 可用性(availability)和可服务性(serviceability)(RAS)的群集解决方案。Linux-HA 项目得到了广泛的应用,是很多有 趣的高可用性解决方案的重要组成部分。

heartbeat 是可以从 Linux-HA 项目 Web 站点公开获得的软件包之一。它提供了所有 HA 系统所需要的基本功能,比如 启动和停止资源、监测群集中系统的可用性、在群集中的节点间转移共享 IP 地址的所有者等。它通过串行线、以太网接口 或者同时使用二者来监测特定服务(或多个服务)的健康状况。当前版本支持两节点配置,使用专门的 heartbeat“pings”来检查 服务的状态和可用性。

  • DRBD

DRBD 是由LINUX内核模块和相关脚本而构成,用以构建高可用性的集群。其实现方式是通过网络来镜像整个设备。您可以把它看作是一种网络RAID. DRBD 负责接收数据,把数据写到本地磁盘,然后发送给另一个主机。另一个主机再将数据存到自己的磁盘中。

  • Linux 什么 ! 不知道是什么东东? 赶快去做几个俯卧撑吧。

硬件

两台普通x86架构的PC机,双网卡,交叉网线。 如果只是为了测试评估,可以使用虚拟机模拟。

待续。。。。。

1
7

MYSQL High Availability 高可用解决方案对比. http://dev.mysql.com/doc/refman/5.1/en/ha-overview.html

Requirements

MySQL Replication

MySQL Replication + Heartbeat

MySQL Heartbeat + DRBD

MySQL Cluster

Availability

Automated IP failover

No

Yes

Yes

No

Automated database failover

No

No

Yes

Yes

Typical failover time

User/script-dependent

Varies

< 30 seconds

< 3 seconds

Automatic resynchronization of data

No

No

Yes

Yes

Geographic redundancy support

Yes

Yes

Yes, when combined with MySQL Replication

Yes, when combined with MySQL Replication

Scalability

Built-in load balancing

No

No

No

Yes

Supports Read-intensive applications

Yes

Yes

Yes, when combined with MySQL Replication

Yes

Supports Write-intensive applications

No

No

Yes

Yes

Maximum number of nodes per group

One master, multiple slaves

One master, multiple slaves

One active (primary), one passive (secondary) node

255

Maximum number of slaves

Unlimited (reads only)

Unlimited (reads only)

One (failover only)

Unlimited (reads only)