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