2016-01-04 47 views
162

TL; DR將現有的JNDI HornetQ服務作爲HA的步驟?

使用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 master,HornetQa_slave需要與運行在服務器A上的JNDI進程交互(我假定要複製消息)。由於主機A本身已關閉,運行在E上的HornetQa_slave無法與A上的JNDI對話,因此無法恢復爲主進程。

如果JNDI服務高度可用,從屬HornetQ進程可以按預期的方式恢復爲主服務器。任何人都可以通過簡單的步驟指出文檔或說明我們如何將現有設置轉換爲HA-JNDI?對於它的價值,我已經閱讀了多個sources,但似乎沒有詳細說明如何開始配置HA-JNDI。如果您需要有關我們當前設置的更多信息,請告訴我。

感謝

+7

你的客戶在哪裏運行?它們運行在相同的AS實例上還是來自另一個實例/ JVM,或兩者都運行? – jjhavokk

+2

@jjhavokk他們將在另一個JVM上運行 – gravetii

+3

您是否可以在高可用性模式下啓用HornetQ(主動 - 被動複製)?再加上服務器動態發現,你應該有可靠的回退。參見http://docs.jboss.org/hornetq/2.4.0.Final/docs/user-manual/html/ha.html 和 http://docs.jboss.org/hornetq/2.4.0.Final /docs/user-manual/html/clusters.html – diginoise

回答

0

隨着架構的描述似乎很難給我,因爲你確實需要重新配置從設備爲主,然後你將有一定的停運。

HornetQ HA通過一個實時備份對提供,負載均衡是通過集羣提供的 。

如果您想要HA和負載均衡,那麼您需要將2個 實時備份對集羣在一起。

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

您可以通過主機名引用主而是用一個虛擬IP地址,這樣萬一主人發生故障,您可以重新配置的奴隸大師之一,並啓動虛擬IP,因此您不必重新配置其餘的從站。 (即使在主設備關閉的情況下,爲了保持HA,您希望有2個從設備,以便您可以重新啓動其中一個設備作爲主設備,並且仍然會運行一個)。

實現相同結果的另一種方法是使用特定於主服務器的DNS主機名,如果一臺主機關閉,您可以重新配置爲指向不同的IP。由於DNS被緩存,因此這些條目最好位於'hosts'文件中。

如果每個HA域的3臺主機硬件太多,可以使用虛擬服務器更輕鬆地完成此操作,而無需購買更多硬件。

相關問題