如何解决通过队列联合和 HA 复制策略实现 Artemis 负载平衡
我想搭建一个ActiveMQ Artemis系统,可以和另一个跨地域的服务器通信,同时进行负载均衡和高可用。
因此,我有两个虚拟机(172.16.212.32 和 172.16.212.33)。每个虚拟机都有两个复制服务器以实现高可用性,我在每个服务器中都设置了联合以实现负载平衡。 我知道federation可以设置ha选项,但是我觉得replication server在本地会起到更好的failover效果。
下面有设置。
VM (172.16.212.32) 中的主 (172.16.212.20) :
<connectors>
<connector name="netty-connector">tcp://172.16.212.20:61616</connector>
<connector name="master-connector33">tcp://172.16.212.22:61616</connector>
<connector name="slave-connector33">tcp://172.16.212.23:61616</connector>
</connectors>
<broadcast-groups>
<broadcast-group name="bg-group32">
<group-address>231.7.7.7</group-address>
<group-port>9876</group-port>
<broadcast-period>5000</broadcast-period>
<connector-ref>netty-connector</connector-ref>
</broadcast-group>
</broadcast-groups>
<discovery-groups>
<discovery-group name="dg-group32">
<group-address>231.7.7.7</group-address>
<group-port>9876</group-port>
<refresh-timeout>10000</refresh-timeout>
</discovery-group>
</discovery-groups>
<cluster-user>root</cluster-user>
<cluster-password>syscom#1</cluster-password>
<cluster-connections>
<cluster-connection name="cluster32">
<connector-ref>netty-connector</connector-ref>
<message-load-balancing>ON_DEMAND</message-load-balancing>
<max-hops>1</max-hops>
<discovery-group-ref discovery-group-name="dg-group32"/>
</cluster-connection>
</cluster-connections>
<ha-policy>
<replication>
<master>
<check-for-live-server>true</check-for-live-server>
</master>
</replication>
</ha-policy>
<federations>
<federation name="master-federation32">
<upstream name="master-upstream33">
<circuit-breaker-timeout>1000</circuit-breaker-timeout>
<static-connectors>
<connector-ref>master-connector33</connector-ref>
</static-connectors>
<policy ref="policySetA"/>
</upstream>
<upstream name="slave-upstream33">
<circuit-breaker-timeout>1000</circuit-breaker-timeout>
<static-connectors>
<connector-ref>slave-connector33</connector-ref>
</static-connectors>
<policy ref="policySetA"/>
</upstream>
<policy-set name="policySetA">
<policy ref="queue-federation" />
</policy-set>
<queue-policy name="queue-federation" >
<include queue-match="#" address-match="#" />
</queue-policy>
</federation>
</federations>
VM (172.16.212.32) 中的从 (172.16.212.21):
<connectors>
<connector name="netty-connector">tcp://172.16.212.21:61616</connector>
<connector name="master-connector33">tcp://172.16.212.22:61616</connector>
<connector name="slave-connector33">tcp://172.16.212.23:61616</connector>
</connectors>
<broadcast-groups>
<broadcast-group name="bg-group32">
<group-address>231.7.7.7</group-address>
<group-port>9876</group-port>
<broadcast-period>5000</broadcast-period>
<connector-ref>netty-connector</connector-ref>
</broadcast-group>
</broadcast-groups>
<discovery-groups>
<discovery-group name="dg-group32">
<group-address>231.7.7.7</group-address>
<group-port>9876</group-port>
<refresh-timeout>10000</refresh-timeout>
</discovery-group>
</discovery-groups>
<cluster-user>root</cluster-user>
<cluster-password>syscom#1</cluster-password>
<cluster-connections>
<cluster-connection name="cluster32">
<connector-ref>netty-connector</connector-ref>
<message-load-balancing>ON_DEMAND</message-load-balancing>
<max-hops>1</max-hops>
<discovery-group-ref discovery-group-name="dg-group32"/>
</cluster-connection>
</cluster-connections>
<ha-policy>
<replication>
<slave>
<allow-failback>true</allow-failback>
</slave>
</replication>
</ha-policy>
<federations>
<federation name="slave-federation32">
<upstream name="master-upstream33" priority-adjustment="0">
<circuit-breaker-timeout>1000</circuit-breaker-timeout>
<static-connectors>
<connector-ref>master-connector33</connector-ref>
</static-connectors>
<policy ref="policySetA"/>
</upstream>
<upstream name="slave-upstream33" priority-adjustment="0">
<circuit-breaker-timeout>1000</circuit-breaker-timeout>
<static-connectors>
<connector-ref>slave-connector33</connector-ref>
</static-connectors>
<policy ref="policySetA"/>
</upstream>
<policy-set name="policySetA">
<policy ref="queue-federation" />
</policy-set>
<queue-policy name="queue-federation" >
<include queue-match="#" address-match="#" />
</queue-policy>
</federation>
</federations>
172.16.212.22 和 172.16.212.23 分别是 VM 172.16.212.33 中的主从服务器。
这样设置后,不同VM中的主服务器可以相互通信,从服务器宣布备份成功。但是负载均衡不起作用。
联邦加ha复制策略的想法行不通? 如果您对我有任何建议,我将不胜感激。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。