16.3.4. 使用 live-only 配置有限的高可用性
只使用实时 HA 策略可让您在不丢失信息的情况下在集群中关闭代理。使用只读实时代理时,它会安全停止实时代理,将其消息和事务状态复制到另一个实时代理,然后关闭。然后,客户端可以重新连接到其他代理,以继续发送和接收消息。
仅限实时 HA 策略仅在代理安全停止时处理情形。它无法处理意外的代理失败。
虽然只读 HA 会阻止消息丢失,但可能无法保留消息顺序。如果配置了只读 HA 的代理已停止,其消息将附加到另一代理队列的结尾。
当代理准备缩减时,它会在其客户端断开连接前向客户端发送消息,告知它们已准备好处理其消息。但是,只有在初始代理完成缩减后,客户端才会重新连接到新的代理。这样可确保当客户端重新连接时,任何状态(如队列或事务)都可以在其他代理上可用。客户端重新连接时,常规重新连接设置应用,因此应设置足够高以应对缩减所需的时间。
这个步骤描述了如何在集群中配置每个代理来缩减。完成此步骤后,每当代理被安全停止后,它将将其消息和事务状态复制到集群中的另一个代理中。
步骤
-
打开第一个代理的
<broker-instance-dir>/etc/broker.xml
配置文件。 将代理配置为使用只读 HA 策略。
<configuration> <core> ... <ha-policy> <live-only> </live-only> </ha-policy> ... </core> </configuration>
配置用于缩减代理集群的方法。
指定此代理应该缩减的代理或一组代理。
将缩减为… do this… 集群中的特定代理
指定要缩减的代理连接器。
<live-only> <scale-down> <connectors> <connector-ref>broker1-connector</connector-ref> </connectors> </scale-down> </live-only>
集群中的所有代理
指定 broker 集群的发现组。
<live-only> <scale-down> <discovery-group-ref discovery-group-name="my-discovery-group"/> </scale-down> </live-only>
特定代理组中的代理
指定代理组。
<live-only> <scale-down> <group-name>my-group-name</group-name> </scale-down> </live-only>
- 对集群中的每个剩余的代理重复此步骤。
其他资源
- 有关使用 live-only 缩减集群的代理集群示例,请参阅 缩减示例程序。