用于灾难恢复的镜像与 HA 数据复制

Mirror vs. HA Data Replication for disaster recovery

我正在查看 ActiveMQ Artemis 中用于在我们丢失整个数据中心时进行数据恢复的选项。我们有两个数据中心,一个在东海岸,一个在西海岸。

我从文档和论坛中找到了四个选项:

基于磁盘的方法:

  1. 站点之间基于块的数据目录复制,运行 一个站点上的 Artemis(使用协议 A 的 Ciphy 或 DRBD)。在发生灾难(或故障转移测试)时,停止死站点上的 Artemis,并在活站点上启动它。

  2. 同样的事情,但是两个 Artemis 服务器都处于活动状态,使用 ha-policy 表示主服务器,使用 shared store.

    表示从服务器

网络复制:

  1. 与数字 2 类似,但在 Artemis 中启用了 data replication,因此 Artemis 会处理复制。

  2. Mirror broker connections.

我们的 IT 团队使用/熟悉 MySQL 复制、NFS 和 rsync 用于我们的其他服务。我们目前正在处理 JMS,其中 JBoss 4 服务器复制到 MySQL。

我阅读文档后的反应是,高可用性数据复制是可行的方法,但我没有看到其中的权衡。唯一提到DR和cross site的就是mirror broker connection,但是表面上看好像是同一个东西的更难管理的版本?

我们的限制是我们需要实时集群的高性能(每秒几千条消息的数量级,都是小的) 我们可以承受在紧急故障转移中丢失消息(最好尽可能少)。我们不应该在受控的故障转移中丢失消息。

我们不希望站点 A 中的客户端连接到站点 B 中的 Artemis - 我们将在发生故障转移时启用站点 B 上的客户端。

首先要注意的是,通过 ha-policy 配置的高可用性功能(共享存储和复制 - 选项 #2 和 #3)设计用于 local 具有高速、低延迟网络连接的数据中心。它不是专为灾难恢复而设计的。

对于您来说,基于网络的数据复制的具体问题是复制是同步的,这意味着它很有可能会对性能产生负面影响,因为每条持久消息都必须从一个数据中心发送到另一个数据中心。此外,如果复制代理失败,那么客户端将自动故障转移到另一个数据中心的备份。

使用基于块存储的解决方案(例如 Ceph 或 DRDB)是可行的,但它确实是一个不受 ActiveMQ Artemis 控制的独立事物。

mirror broker connection 的设计考虑了灾难恢复用例。它是 异步的 因此几乎不会对复制的性能产生影响,如果镜像代理失败,客户端将不会自动故障转移到镜像。