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

2022-08-31 06:46:55

TL;DR

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

加长版:

因此,我们有一个HornetQ JMS设置和JNDI。我们有5台服务器,它们运行HornetQ JMS主实例,每个服务器都有JNDI服务。在这 5 台服务器上,我们还有一个辅助实例,用于其他 HornetQ 主实例。

举个例子:

Server A - HornetQa_primary, JNDI, HornetQb_secondary
Server B - HornetQb_primary, JNDI, HornetQc_secondary
Server C - HornetQc_primary, JNDI, HornetQd_secondary
Server D - HornetQd_primary, JNDI, HornetQe_secondary
Server E - HornetQe_primary, JNDI, HornetQa_secondary

这些HornetQ服务器中的每一个都可以作为我们各种后端需求的中间件,这意味着5台服务器,5个HornetQ主实例,5个HornetQ辅助实例和5个JNDI服务器。然而,此设置的问题在于,如果服务器主机(不仅仅是进程,主机本身)说A出现故障,理想情况下,该服务应该回退到在服务器E上运行的HornetQ,该服务器托管A的HornetQ辅助服务器。但是,要恢复为 HornetQ 主节点,HornetQa_secondary需要与服务器 A 上运行的 JNDI 进程通信(我假设要复制消息)。由于主机 A 本身已关闭,因此在 E 上运行的HornetQa_secondary无法与 A 上的 JNDI 通信,因此无法恢复为主进程。

如果 JNDI 服务具有高可用性,则辅助 HornetQ 进程可以按预期恢复为主进程。任何人都可以指出文档或以简单的步骤说明如何将现有设置转换为HA-JNDI?就其价值而言,我已经阅读了多个来源,但它似乎没有详细说明如何开始配置HA-JNDI。如果您需要有关我们当前设置的更多信息,请告诉我。


答案 1

使用所描述的架构,这对我来说似乎很困难,因为确实您需要将从站重新配置为主站,然后您将遇到一定的中断。

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

如果同时需要 HA 和负载平衡,则需要将 2 个活动备份对群集在一起。

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

您可以不是通过主机名而是使用虚拟IP地址来引用主服务器,以便在主服务器关闭的情况下,您可以将其中一个从属服务器重新配置为主服务器,并启动虚拟IP,这样您就不必重新配置其余的从属服务器。(为了在主站关闭时保留 HA,您需要有 2 个从属服务器,以便您可以将其中一个作为主服务器重新启动,并且仍然运行一个)。

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

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


答案 2

推荐