16.3.3.2. 为复制高可用性配置代理集群
以下流程描述了如何为 6broker 集群配置复制高可用性(HA)。在这个拓扑中,六个代理被分成三个实时备份对:三个实时代理各自与专用备份代理配对。
复制要求至少三个实时备份对减少(但不消除)网络隔离风险。
先决条件
您必须有至少六个代理的代理集群。
六个代理配置为三个实时备份对。有关在集群中添加代理的详情,请参考 第 16 章 设置代理集群。
步骤
将集群中的代理分组到 live-backup 组中。
在大多数情况下,live-backup 组应该由两个代理组成:live 代理和一个备份代理。如果您的集群中有 6 个代理,则需要三个 live-backup 组。
创建由一个实时代理和一个备份代理组成的第一个 live-backup 组。
-
打开 live broker 的
<broker-instance-dir>/etc/broker.xml
配置文件。 配置实时代理,将复制用于其 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 代理,则 live 代理不会将数据与备份代理同步。在这种情况下,live 代理可能会处理与备份代理已经处理相同的信息,从而导致重复。group-name
- 此 live-backup 组的名称。要形成 live-backup 组,必须使用相同的组名称配置 live-backup 代理。
vote-on-replication-failure
此属性控制实时代理在中断的复制连接时是否启动仲裁 投票,称为实时投票。
实机投票是一种实时代理方法,决定其或其合作伙伴是中断的复制连接的原因。根据投票的结果,实时代理保持运行或关闭。
重要要成功进行仲裁数,集群的大小必须允许实现大多数结果。因此,在使用复制 HA 策略时,集群应该 至少有三个 live-backup 代理对。
您在集群中配置的代理对越多,增加集群的整体容错性越大。例如,假设您有三个 live-backup 代理对。如果丢失与完整 live-backup 对的连接,剩余的两个 live-backup 对不再会获得多数结果是仲裁投票。这种情形意味着任何后续复制中断都可能导致实时代理关闭,并防止其备份代理启动。通过使用方法配置集群,例如五个代理对,集群可能会遇到至少两个故障,同时仍可确保任何仲裁投票中的大多数结果。
为 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-backup 对(一个与单一备份代理配合使用的实时代理)。如果 live 代理配置了多个备份,则不会发生故障恢复。相反,如果发生故障转移事件,备份代理将变为实时状态,下一个备份将成为备份。当原始实时代理重新上线时,它将无法启动失败,因为现在实时的代理已经有备份。
restart-backup
-
此属性控制在备份代理失败后是否自动重启备份代理。这个属性的默认值为
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 broker 的
对集群中的每个 live-backup 组重复步骤 2。
如果集群中有六个代理,请多次重复这个过程 ; 每个剩余的 live-backup 组都一次。
其他资源
- 有关在 HA 中使用复制的代理集群示例,请参阅 HA 示例程序。
- 有关节点 ID 的更多信息,请参阅了解节点 ID。