有几种情况,当发生故障(服务器挂起或崩溃)时,我需要将应用程序从一台服务器迁移到另一台服务器。
在 Solaris 上,我们使用 VCS(Veritas Cluster Server)来实现这一点。Linux 有哪些可用的选项?
请指出每个设置/维护的工作量或成本(如果有)。
-- 添加了更多详细信息 --
给出复杂程度的概念:
- 发生故障的服务器可能会在没有通知的情况下挂起或崩溃,但可能仍然可以“ping 通”
- 恢复服务器需要在故障转移时启动其应用程序
- 一旦发生故障的服务器启动/电源循环,它就会变得被动,不会干扰恢复服务器。
这是一个数据收集或计算节点,而不是数据库,因此可以采用更简单的解决方案。
-- 更多细节(抱歉)--
共享存储不是一种选择,但不需要将太多状态(如果有的话)从一台服务器迁移到另一台服务器。我们通过 rsync 保持两台服务器同步。
非常感谢您迄今为止的所有帖子。
答案1
http://linux-ha.org/满足您所有的高可用性需求。就像歌里唱的,生活中最好的东西都是免费的。
答案2
我在 Linux 上使用过各种集群解决方案。我也是配置管理的支持者,所以我会在描述中添加一些相关内容(Chef 或 Puppet)
Veritas Cluster Server (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 的特定程序,我不会在这里使用配置管理。
答案3
迈克尔说得对,现在社区有点分裂,而且文档也有点稀疏。
其实,一切都在那里,只是无法理解。你真正想要的是“起搏器配置说明”电子书……(链接至 PDF)。您需要阅读它十几遍,然后尝试实现它,然后再阅读十几遍,这样您才能真正理解它。
目前,Linux 集群服务的最佳支持实现可能是 Novell 的 SLES11 及其高可用性扩展 (HAE)。它刚刚在一两个月前推出,附带了一本厚厚的 200 页手册,介绍了如何设置和运行它。Novell 在以各种形式支持 Pacemaker 配置方面也做得非常出色。
除此之外,还有 RHEL5 的实现,它具有相同的软件包和不错的文档,但我认为它比 SLES 更贵。至少,对我们来说是这样。
我现在会避免使用 Heartbeat,而选择 Pacekmaker/OpenAIS,因为将来它们会得到更好的支持。但是,社区的现状是,只有少数专家,少数人在生产中运行它,还有一大堆人完全不知道。加入 Pacemaker 邮件列表,关注一个叫 Andrew Beekhof 的人。
编辑以提供所要求的详细信息:
Pacemaker/OpenAIS 使用“原始资源”(例如 nfs-server)上的“监控”操作来跟踪资源正在做什么。如果示例 NFS 服务器在 X 秒内对集群的其余部分没有响应,则集群将执行 STONITH(关闭其他节点)操作以关闭主节点,并将辅助节点提升为活动节点。您可以在配置中决定随后要启动的内容以及要采取的相关操作。那里的实施细节取决于您尝试进行故障转移的服务、某些操作的执行窗口(例如将主节点提升回主节点),并且整个过程几乎尽可能可配置。
答案4
使用 Linux,我们通过 heartbeat 和 drbd 实现了集群。Heartbeat 检查服务器的状态。DRBD 用于服务器之间的数据同步。我们在一台服务器上运行 oracle 服务,在另一台服务器上运行 apache。当运行 oracle 的服务器发生故障时,heartbeat 会感知到并恢复运行 apache 的服务器上的 oracle 服务。反之亦然。此设置已用于许多其他目的,至今仍然可靠。