TL; DR

使用HornetQ设置配置HA-JNDI服务的步骤是什么?我相信文档有些分散。我已经阅读了here文档,但似乎没有详细说明。

较长版本:

因此,我们有了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

这些HornetQ服务器均充当满足各种后端需求的中间件,因此意味着5个服务器,5个HornetQ主实例,5个HornetQ从属实例和5个JNDI服务器。但是,此设置的问题在于,如果服务器主机(而不是进程,主机本身)发生故障(例如A),则理想情况下,服务应回退到运行服务器E上的HornetQ,该服务器承载A的HornetQ从属服务器。但是,要恢复为HornetQ主服务器,HornetQa_slave需要与服务器A上运行的JNDI进程进行对话(我想复制消息)。由于主机A本身已关闭,因此在E上运行的HornetQa_slave无法与A上的JNDI进行通信,因此无法作为主进程恢复。

如果JNDI服务高度可用,则从属HornetQ进程可以按预期恢复为主进程。任何人都可以友善地指向文档或以简单的步骤说明如何将现有设置转换为HA-JNDI?值得一读的是,我已经阅读了多个sources,但是它似乎并未详细说明如何配置HA-JNDI。如果您需要有关我们当前设置的更多信息,请告诉我。

最佳答案

有了所描述的体系结构,对我来说似乎很困难,因为确实需要将从属服务器重新配置为主服务器,然后您将发生一定的停机。



您可以不是通过主机名而是通过使用虚拟IP地址来引用主服务器,这样,如果主服务器关闭,您可以将其中一个从服务器重新配置为主服务器,然后启动虚拟ip,这样就不必重新配置其余的奴隶。 (要在主机关闭时仍保持HA,您希望拥有2个从机,以便可以将其中一个作为主机重新启动,并且仍然有一个正在运行)。

获得相同结果的另一种方法是使用特定于主机的DNS主机名,如果一个主机关闭,则可以将其重新配置为指向其他IP。由于缓存了DNS,因此最好将这些条目保存在“主机”文件中。

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

10-01 15:16