16.3.3. 配置复制高可用性
您可以使用复制高可用性(HA)策略在代理集群中实施 HA。使用复制时,持久数据会在实时和备份代理之间同步。如果实时代理遇到失败,则会将消息数据同步到备份代理中,并接管失败的实时代理。
如果您没有共享文件系统,应使用 replication 作为共享存储的替代选择。但是,复制可能会导致网络隔离,实时代理及其备份同时存在。
复制要求 至少三个实时备份对 减少(但不消除)网络隔离风险。至少使用三个 live-backup 代理对可让集群使用 仲裁投票 以避免有两个实时代理。
以下部分解释了仲裁如何实现工作,以及如何为至少具有三个实时备份对的代理集群配置复制 HA。
由于实时和备份代理必须通过网络同步其消息传递数据,因此复制会增加性能开销。此同步过程会阻止日志操作,但不会阻止客户端。您可以配置日志操作在数据同步时可以阻止的最大时间。
16.3.3.1. 关于仲裁投票
如果实时代理及其备份遇到中断的复制连接,您可以配置名为 仲裁投票 的过程,以减少网络隔离(或"脑裂")问题。在网络隔离期间,实时代理及其备份可以同时处于活动状态。
下表描述了 AMQ Broker 使用两种仲裁投票。
vote 类型 | 描述 | initiator | 所需的配置 | 参与者 | 基于投票结果的操作 |
---|---|---|---|---|---|
备份投票 | 如果备份代理丢失了与 live 代理的复制连接,备份代理会根据投票的结果决定是否开始。 | 备份代理 | 无。当备份代理丢失与复制合作伙伴的连接时,会自动进行备份投票。 但是,您可以通过为这些参数指定自定义值来控制备份投票的属性:
| 集群中的其他实时代理 | 当备份代理从集群中的其他实时代理接收大多数(即 仲裁)投票时启动,表示其复制合作伙伴不再可用。 |
实时投票 | 如果实时代理丢失与复制合作伙伴的连接,实时代理决定根据此投票继续运行。 | 实时代理 |
当实时代理丢失与复制合作伙伴和 | 集群中的其他实时代理 | 如果实时代理 没有从集群中 的其他实时代理收到大部分投票,这表示其集群连接仍处于活动状态。 |
下面列出了一些重要事项,需要记录您的代理集群的配置如何影响仲裁投票的行为。
- 要成功进行仲裁数,集群的大小必须允许实现大多数结果。因此,在使用复制 HA 策略时,集群应该 至少有三个 live-backup 代理对。
- 您添加到集群中的更 live-backup 代理对越多,您增加了集群的整体容错能力。例如,假设您有三个实时备份对:如果丢失了完整的 live-backup 对,剩余的两个 live-backup 对便无法达到多数结果,则后续的仲裁投票。这种情形表示,集群中的任何进一步复制中断都可能导致实时代理关闭,并防止其备份代理启动。通过使用方法配置集群,例如五个代理对,集群可能会遇到至少两个故障,同时仍可确保任何仲裁投票中的大多数结果。
- 如果您有意 减少 集群中 live-backup 代理对的数量,则之前为多数投票建立的阈值不会自动减少。在此期间,丢失的复制连接触发的任何仲裁投票都无法成功,从而使您的集群更容易受到网络隔离的影响。要使集群重新计算仲裁投票中的大多数阈值,请先关闭您从集群中移除的 live-backup 对。然后,重启集群中的剩余的 live-backup 对。当所有剩余的代理都已重启时,集群会重新计算仲裁票数阈值。