我有几种情况需要在发生故障(服务器挂起或崩溃)时将应用程序从一台服务器迁移到另一台服务器。
在 solaris 上,我们使用 VCS(Veritas Cluster Server)来执行此操作。Linux 有哪些可用选项?
请说明每个项目的设置/维护工作量或成本(如果有)。
-- 添加了更多细节 --
给出复杂程度的概念:
- 发生故障的服务器可能会挂起或崩溃,恕不另行通知,可能仍然是“ping-able”
- 恢复服务器需要在故障转移时启动它的应用程序
- 一旦服务器启动/电源循环失败,它就会变得被动,以免干扰恢复服务器。
这是一个数据收集或计算节点,而不是数据库,因此更简单的解决方案可以工作。
-- 更多细节(对不起) --
共享存储不是一种选择,但没有太多状态(如果有)需要从一台服务器迁移到另一台服务器。我们通过 rsync 使两台服务器保持同步。
非常感谢您迄今为止的所有帖子。
http://linux-ha.org/满足您所有的高可用性需求。就像这首歌说的,生命中最美好的东西都是免费的。
我在 Linux 上使用过各种集群解决方案。我也是配置管理的支持者,所以我会在我的描述中添加一些关于它的内容(即 Chef 或 Puppet)
Veritas 集群服务器 (VCS)。已经有一段时间了,但我们在 RHEL 3.0 上部署了一些 Linux VCS 集群。我希望它在 RHEL 5.0 上可用。您应该熟悉设置它的困难,因为它是熟悉的领域。您可能知道,VCS 很昂贵。有趣的是,VCS 不太适合通过配置管理进行设置。
说到 RHEL,Red Hat Cluster Suite 自从最初发布 RHEL 2.1 以来已经成熟了很多。设置/配置阶段非常简单,文档非常完整且有用,并且像 VCS 一样,您可以从供应商处购买支持。对于商业 HA 产品,RHCS 价格合理。我只会使用配置管理来安装软件包,并通过 Web 界面“手动”维护它们。另外,我听说有些人在非 Red Hat 平台上使用它,尽管我没有直接的经验。
Linux-HA(drbd/heartbeat)也很棒,尽管来自 VCS 的配置可能看起来很简单,但很笨拙。这很容易通过配置管理工具实现自动化。
作为概念验证,我使用 IBM 的 HACMP(他们的 AIX 集群软件)安装了一个 Linux 集群。我不会推荐这个,因为我记得它甚至比 VCS 还要贵。IBM 有安装和维护 HACMP 的特定程序,我不会在这里使用配置管理。
Michael 是正确的,社区现在有点支离破碎,文档有点稀疏。
其实,一切都在那里,只是无法理解。您真正想要的是“Pacemaker Configuration Explained”电子书...(链接到 PDF)。你会想读十几遍,然后尝试实现它,然后再读十几遍,这样你就可以真正理解它了。
目前,最受支持的 Linux 集群服务实现可能是 Novell 的 SLES11 和它的高可用性扩展 (HAE)。它一两个月前才问世,附带一本厚达 200 页的精美手册,描述了如何设置和运行。Novell 在支持各种形式的 Pacemaker 配置方面也表现出色。
除此之外,还有 RHEL5 的实现,它具有相同的包和体面的文档,但我认为它比 SLES 更昂贵。至少,对我们来说。
我现在会避免使用 Heartbeat 并选择 Pacekmaker/OpenAIS,因为它们会在未来得到更好的支持。然而,目前社区的状态是这样的,有一些专家,有几个人在生产中运行它,还有很多人完全一无所知。加入 Pacemaker 邮件列表并关注一个名叫 Andrew Beekhof 的人。
编辑以提供请求的详细信息:
Pacemaker/OpenAIS 在“原始资源”(例如 nfs-server)上使用“监视器”操作来跟踪资源正在做什么。如果示例 NFS 服务器在 X 秒内对集群的其余部分无响应,则集群将执行 STONITH(将其他节点射入头部)操作以关闭主节点,从而将辅助节点提升为活动状态。您可以在配置中决定之后要显示的内容以及要采取的相关操作。那里的实现细节取决于您尝试进行故障转移的服务、某些操作的执行窗口(例如将主节点提升回主节点)以及整个事情尽可能可配置。
Linux HA 社区目前有点分裂。
以前称为 Linux HA 的工具目前是Pacemaker和OpenAIS ,当需要无共享架构时,这些工具通常与DRBD结合运行。
我建议在深入研究之前获得一本关于这个主题的好书,因为这是一个非常全面的领域,并且项目的状态不一定像某些供应商解决方案那样用户友好。
还有一些集群软件供应商提供的 Linux 解决方案,但我不能告诉你太多,因为我自己从未使用过它们。
在 Linux 中,我们使用 heartbeat 和 drbd 实现了集群。心跳检查服务器的状态。DRBD 用于服务器之间的数据同步。我们在一台服务器上运行 oracle 服务,在另一台服务器上运行 apache。当运行 oracle 的服务器发生故障时,heartbeat 会感知到同样的情况并在运行 apache 的服务器上恢复 oracle 服务。反之亦然。一直将此设置用于许多其他目的,并且迄今为止一直可靠。
Red Hat Cluster Suite可以为几乎所有可能的应用程序做你想做的事。结合 GFS 和 Cluster LVM,您可以拥有可靠的共享存储。
维护并不比保持单个盒子运行困难得多。实际上,应用程序迁移使修补各个盒子变得更容易。
RHCS 带有一个 Web 前端 (Luci) 和一个 GTK 前端 (system-config-cluster),使配置和迁移变得可点击。它允许您通过一个基于 Web 的中央管理控制台为每个应用程序配置故障转移域、恢复策略、防护。
考虑到 RHCS 实际上有一个非常可靠的支持选项,我会选择 RHCS。
不知道这会花你多少钱,但我估计它在几千美元的范围内。
UltraMonkey,它部分构建在 Linux-HA 框架之上。我一直认为它是一种负载平衡解决方案,而不是真正的集群,但它可以很好地处理故障转移。
我们使用 Linux 虚拟服务器和 keepalived 来实现高可用性。keepalived 可以在主机本身上执行 VRRP(我相信这依赖于其他服务器的死机),或者您可以将其设置在单独的主机上进行负载平衡,这可以进行服务可用性检查。在第一种情况下可能可以配置服务检查,但我没有检查。如果您可以同时运行两台服务器,则第二种情况特别好,否则您可以手动切换。
我为 TCP 编写了一个基于软件的负载均衡器,它不需要单独的机器。它通过在多播链接级别地址上宣布它并在机器之间进行协商来共享单个 IP 地址,以避免两台机器服务于相同的 TCP 连接。
不利的一面是它不是真正的生产就绪 - 但如果你想在你的测试网络上测试它,我会很高兴。
蓬松的集群在这里
我不一定会检测到“活着但生病”的情况,但我会在成员服务器之间进行负载平衡(如果用户空间进程死亡,其他节点会注意到并删除故障节点)
它不是免费的,但是那些没有时间或专业知识在 Linux 上安装自己的 HA 解决方案的人,答案在 www.rapidscaleclusters.com。几分钟内您就可以启动并运行,易于安装和运行,它也受支持。