14.3.3.2. 配置代理集群以复制高可用性
以下流程描述了如何为 6 broker 集群配置复制高可用性(HA)。在这个拓扑中,六个代理被分成三个实时备份对:三个实时代理各自与专用备份代理配对。
复制要求至少三个实时备份对,以减少(但不消除)网络隔离的风险。
先决条件
您必须有一个带有至少 6 个代理的代理集群。
六个代理配置为三个实时备份对。有关在集群中添加代理的详情请参考 第 14 章 设置代理集群。
流程
将集群中的代理分组到 live-backup 组。
在大多数情况下,实时备份组应该由两个代理组成:实时代理和备份代理。如果您在集群中有六个代理,则需要三个 live-backup 组。
创建第一个由实时代理和一个备份代理组成的实时备份组。
-
打开 live 代理的
<broker_instance_dir>/etc/broker.xml
配置文件。 配置 live 代理,以将复制用于其 HA 策略。
<configuration> <core> ... <ha-policy> <replication> <master> <check-for-live-server>true</check-for-live-server> <group-name>my-group-1</group-name> <vote-on-replication-failure>true</vote-on-replication-failure> ... </master> </replication> </ha-policy> ... </core> </configuration>
check-for-live-server
如果 live 代理失败,此属性控制客户端重启时是否应该失败。
如果您将此属性设置为
true
,当 live 代理在以前的故障切换后重启时,它会搜索集群中具有相同节点 ID 的另一个代理。如果 live 代理找到具有相同节点 ID 的另一个代理,这表示在 live 代理失败时备份代理成功启动。在这种情况下,live 代理将其数据与备份代理同步。然后,实时代理会请求备份代理关闭。如果为备份代理配置了故障恢复,如下所示,它会关闭。然后,实时代理恢复其活跃角色,客户端重新与其连接。警告如果您没有在 live 代理
上将 check-for-live-server
设置为true
,在以前的故障转移后重启 live 代理时可能会遇到重复的消息处理。特别是,如果您重启了这个属性设置为false
的 live 代理,实时代理不会与其备份代理同步数据。在这种情况下,实时代理可能会处理备份代理已经处理的信息,从而导致重复。group-name
- 此 live-backup 组的名称。要形成实时备份组,则必须使用相同的组名称配置 live 和 backup 代理。
vote-on-replication-failure
此属性控制在出现中断的复制连接时,实时代理是否启动名为实时投票 的仲裁投票。
实时投票是实时代理确定其或其合作伙伴是否是中断复制连接的原因的一种方式。根据投票的结果,实时代理会保持运行或关闭。
重要要成功仲裁票数,集群的大小必须允许实现大多数结果。因此,在使用复制 HA 策略时,您的集群 应至少具有三个 实时备份代理对。
您在集群中配置的代理对越多,集群总体容错能力越高。例如,假设您有三个实时备份代理对。如果您丢失了与完整 live-backup 对的连接,剩余的两个实时备份对将不再达到仲裁票数。这种情形意味着,任何后续复制中断都可能导致 live 代理关闭,并阻止其备份代理启动。通过使用五个代理对配置集群,集群至少可能会出现两个故障,同时仍然确保任何仲裁投票产生大多数结果。
为 live 代理配置任何其他 HA 属性。
这些附加 HA 属性具有适合大多数常见用例的默认值。因此,当您不想默认行为时,您只需要配置这些属性。如需更多信息,请参阅 附录 F, 复制高可用性配置元素。
-
打开备份代理的
<broker_instance_dir>/etc/broker.xml
配置文件。 配置备份(即从)代理,以将复制用于其 HA 策略。
<configuration> <core> ... <ha-policy> <replication> <slave> <allow-failback>true</allow-failback> <restart-backup>true</restart-backup> <group-name>my-group-1</group-name> <vote-on-replication-failure>true</vote-on-replication-failure> ... </slave> </replication> </ha-policy> ... </core> </configuration>
allow-failback
如果发生故障转移,并且备份代理接管了 live 代理,则此属性会控制备份代理在重启并重新连接到集群时是否应该恢复到原始 live 代理。
注意故障恢复适用于实时备份对(一个实时代理与单个备份代理对)。如果 live 代理配置了多个备份,则不会发生故障恢复。如果发生故障转移事件,备份代理将变为实时,下一次备份将变为备份。当原始 live 代理恢复在线时,它将无法启动故障恢复,因为现已在线的代理已存在备份。
restart-backup
-
此属性控制备份代理在恢复到 live 代理后是否可以自动重启。此属性的默认值为
true
。 group-name
- 此备份应连接到的 live 代理的组名称。备份代理仅连接到共享相同组名的实时代理。
vote-on-replication-failure
此属性控制在出现中断的复制连接时,实时代理是否启动名为实时投票 的仲裁投票。已激活的备份代理被视为实时代理,并可启动现场投票。
实时投票是实时代理确定其或其合作伙伴是否是中断复制连接的原因的一种方式。根据投票的结果,实时代理会保持运行或关闭。
(可选)配置备份代理启动的仲裁票数的属性。
<configuration> <core> ... <ha-policy> <replication> <slave> ... <vote-retries>12</vote-retries> <vote-retry-wait>5000</vote-retry-wait> ... </slave> </replication> </ha-policy> ... </core> </configuration>
vote-retries
- 此属性控制备份代理重试仲裁投票的次数,以便获得允许备份代理启动的主要结果。
vote-retry-wait
- 此属性控制备份代理在每次重试仲裁投票之间等待的时长,以毫秒为单位。
为备份代理配置任何其他 HA 属性。
这些附加 HA 属性具有适合大多数常见用例的默认值。因此,当您不想默认行为时,您只需要配置这些属性。如需更多信息,请参阅 附录 F, 复制高可用性配置元素。
-
打开 live 代理的
为群集中每个额外的 live-backup 组重复步骤 2。
如果群集中有六个代理,请重复此过程两次;每个剩余的 live-backup 组一次。
其它资源
- 有关在 HA 中使用复制的代理集群 示例,请参阅 HA 示例程序。
- 如需有关节点 ID 的更多信息,请参阅 了解节点 ID。