2016-03-25 58 views
0

我們有兩個AWS主機在集羣中運行RabbitMQ實現。我們需要升級硬件,因此我們開發了一個廚師食譜來產生更換服務器。我們寧可不要用手重新Clone RabbitMQ管理員用戶等在替換服務器上

一件事是管理員用戶,隊列等

什麼是讓從舊主機的東西到新的最好的方法是什麼?我相信這是/var/lib/rabbitmq/mnesia目錄中的所有內容。

將文件從一臺主機複製到另一臺是明智的嗎?

有沒有一個程序化的手段來做到這一點?

它可以編入我們的廚師食譜?

回答

0

如果您在新硬件上創建新的rabbitmq節點,您將獲得該新節點中的所有用戶。這是很容易嘗試:

  1. 運行搬運工容器的RabbitMQ(具有管理插件) 的圖像,並創建一個用戶
  2. 運行另一個容器並在該節點添加到第一個
  3. 的 簇在第一個殺的RabbitMQ或刪除 泊塢窗的容器,你會看到,你仍然有新 創建的用戶二號(不過現在掌握)節點

我寫的因爲以這種方式創建集羣的速度更快,但是如果您已經擁有集羣,則可以將其用於測試,如果您願意的話。

對於隊列和交流,我不想引用幾乎一切都在RabbitMQ的文檔頁面發現的high availability,但我只想說,你必須要注意以下幾點:

  • 獨家隊列因爲一旦客戶端連接消失了,他們都走了
  • 隊列鏡像(如果您有任何設置,如果沒有這將是明智的考慮吧,如果連沒有必要)

我會做逐漸遷移,等待t他排隊清空,然後殺死舊硬件上的節點。它可能在一個大爆炸時尚,但似乎更危險。如果你有一個正在運行的系統,比設置隊列鏡像,並嘗試找到適當的時刻做手動同步 - 但要小心,這對經紀人的表現有很大的影響。

此外,還有這個shovel plugin(我要指出的是,我沒有使用它,甚至探索它),但是這可能是另一種方式,因爲去(報價表的鏈接):

本質,鏟子是一個簡單的泵。每個鏟:

連接到源代理和目的地代理,消耗從隊列 消息,重新發布的每個消息到目的地 經紀人(使用,默認情況下,原來的交換名稱和 routing_key)。

相關問題