是否有可能在没有 SAN 的情况下创建 3 节点 Windows Server 2008 R2 故障转移群集?
我们的目标是创建一个没有任何单点故障的群集 MSMQ。理想情况下,存储的消息将保留在群集的所有节点上,这样如果任何一个节点脱机,群集可以继续运行并维持仲裁。
或者,是否有其他更好的方法来创建高可用性 MSMQ?
(其他很可能不相关的信息)此集群将充当 NServiceBus“分发器”,并保存我们系统中的所有“待处理”消息。它将成为所有消息流量经过的枢纽。
编辑:澄清一下,我特别感兴趣的是存储在节点本身上复制的 MSMQ 队列。我将使用 FileShare 或节点多数仲裁来处理集群仲裁。
答案1
存储 MSMQ 数据的磁盘需要某种类型的共享磁盘。
SAN 的成本并不是主要问题——而是 SAN 成为单点故障的事实。
SAN 并非真正意义上的单点故障。它们具有冗余控制器、从服务器到 SAN 的冗余路径、从控制器到主轴的冗余路径。如果主轴故障是一个问题,您可以将 LUN 克隆到第二组磁盘以实现最大冗余。如果您有第二个阵列,您甚至可以从一个阵列复制到另一个阵列。
大多数存储阵列的设计正常运行时间为 99.999% 甚至更多。有些设计正常运行时间为 99.9999%,有些甚至能提供更高的正常运行时间。
答案2
不,群集服务/MSDTC 需要共享的块级仲裁卷。
答案3
是的,共享块存储是法定人数的要求。
如果是因为 SAN 的成本而推迟了这一计划,那么您可以使用直接连接存储,例如戴尔MDS 1000。
答案4
MSMQ 使用一个固定的文件位置来存储特定队列管理器的消息和日志文件。当群集 MSMQ 服务故障转移到另一个节点时,文件将从同一共享位置加载到内存中,以便 MSMQ 可以继续工作。无法将 MSMQ 存储目录复制到多个位置,然后让这些位置可供 MSMQ 服务加载文件。所有消息都带有 MSMQ 队列管理器的名称标记,因此文件只能由具有相同队列管理器名称的 MSMQ 服务加载。