将现有JNDI HornetQ服务作为HA的步骤?

gra*_*tii 177 java jboss jndi hornetq

TL; DR

使用HornetQ设置配置HA-JNDI服务的步骤是什么?我相信文档有点分散.我在这里阅读了文档,但似乎没有详细说明.

更长的版本:

所以我们有一个HornetQ JMS设置和JNDI.我们已经说了5台服务器,每台服务器运行带有JNDI服务的HornetQ JMS主实例.在这5台服务器中的每台服务器上,我们还有一台运行其他HornetQ主机的从机.

为了显示:

Server A - HornetQa_master, JNDI, HornetQb_slave
Server B - HornetQb_master, JNDI, HornetQc_slave
Server C - HornetQc_master, JNDI, HornetQd_slave
Server D - HornetQd_master, JNDI, HornetQe_slave
Server E - HornetQe_master, JNDI, HornetQa_slave
Run Code Online (Sandbox Code Playgroud)

这些HornetQ服务器中的每一个都充当我们各种后端需求的中间件,因此这意味着5个服务器,5个HornetQ主实例,5个HornetQ从属实例和5个JNDI服务器.然而,这个设置的问题是,如果服务器主机(不仅仅是进程,主机本身),说A发生故障,理想情况下服务应该回退到运行在服务器E上的HornetQ,后者托管A的HornetQ从站.但是,要继续作为HornetQ master,HornetQa_slave需要与在服务器A上运行的JNDI进程通信(我假设要复制消息).由于主机A本身已关闭,因此在E上运行的HornetQa_slave无法与A上的JNDI通信,因此无法作为主进程恢复.

如果JNDI服务高度可用,则从属HornetQ进程可以按预期恢复为主服务器.任何人都可以指向文档或简单说明我们如何将现有设置转换为HA-JNDI?对于它的价值,我已经阅读了多个来源,但它似乎没有详细说明如何配置HA-JNDI.如果您需要有关我们当前设置的更多信息,请与我们联系.

谢谢

Jos*_*rez 1

根据所描述的架构,这对我来说似乎很困难,因为实际上您需要将从站重新配置为主站,然后您将出现一定的中断。

HornetQ HA 通过实时备份对提供,并通过集群提供负载平衡。

如果您需要 HA 和负载平衡,那么您将需要 2 个实时备份对聚集在一起。

来源: https: //developer.jboss.org/thread/254232

您可以不通过主机名而是使用虚拟 IP 地址来引用主服务器,这样万一主服务器出现故障,您可以将其中一个从服务器重新配置为主服务器,并启动虚拟 IP,这样您就不必重新配置其余的从服务器奴隶的。(为了即使在主服务器关闭时也能保持高可用性,您需要有 2 个从服务器,这样您就可以将其中一个作为主服务器重新启动,并且仍然有一个正在运行)。

实现相同结果的另一种方法是使用特定于主服务器的 DNS 主机名,您可以将其重新配置为在一台主机关闭时指向不同的 IP。由于 DNS 已被缓存,因此该条目最好位于“hosts”文件中。

如果每个 HA 域 3 台主机的硬件太多,您可以使用虚拟服务器更轻松地完成此任务,而无需购买更多硬件。