成功故障转移后切换回主远程代理
Posted
技术标签:
【中文标题】成功故障转移后切换回主远程代理【英文标题】:Switching back to the primary remote broker after successful failover 【发布时间】:2012-02-07 09:52:42 【问题描述】:我们使用的是 Apache ActiveMQ 5.5。 我们有一个运行在 tcp://0.0.0.0:61616 的代理(我们称之为主代理)。该代理执行存储并将消息转发到远程代理。为此,我们有一个从该代理到两个远程代理的网络连接。我们希望其中一个远程代理充当主代理,另一个充当故障转移。这是我们正在使用的网络连接 URI
static:(failover://(tcp://<b>server1</b>:61617,tcp://<b>server2</b>:61617)?randomize=false)
我们正在使用 spring DefaultMessageListenerContainer 来监听消息
failover://(tcp://<b>server1</b>:61617,tcp://<b>server2</b>:61617)?randomize=false
在正常情况下,当所有代理都启动并运行并向主代理发送消息时,它会被转发到 server1 并被侦听器消费。
如果我们停止 server1 上的代理,则故障转移成功发生,消息被转发到 server2 并被侦听器成功使用。问题是当我们恢复 server1 时,消息继续由主代理转发到 server2。我们的要求是,一旦 server1 启动并运行,主代理应该开始将消息转发到 server1,并且侦听器应该连接回 server1 并使用消息。我们无法将 randomize 更改为 true,因为我们希望一次只有一个 server1 或 server2 处于活动状态。
请告诉我这是否可行以及如何实现。
【问题讨论】:
【参考方案1】:您需要将选项“priorityBackup”设置为 true。您的 URI 将变为:
static:(failover://(tcp://server1:61617,tcp://server2:61617)?randomize=false&priorityBackup=true)
这将使 server1(服务器列表中的第一个)优先备份。当 server1 出现故障时,他将故障转移到 server2,但不断尝试重新连接到 server1。因此,当它再次恢复时,他将切换回 server1。此选项仅在 5.6 版本中可用
完整的细节在这里: http://activemq.apache.org/failover-transport-reference.html
这里还有一个有趣的博客: http://bsnyderblog.blogspot.com/2010/10/new-features-in-activemq-54-automatic.html
【讨论】:
以上是关于成功故障转移后切换回主远程代理的主要内容,如果未能解决你的问题,请参考以下文章
Windows Server2016+SqlServer2016搭建AlwaysOn集群
Windows Server2016+SqlServer2016搭建AlwaysOn集群
Windows Server2016+SqlServer2016搭建AlwaysOn集群