2017-03-13 34 views
3

遷移數據我們的RabbitMQ服務器託管在AWS最近我們接到通知,例如將在維護,將成爲臨時數小時無法使用。 因爲它是生產服務器,所以我們希望避免用戶宕機,並考慮將RabbitMQ遷移到另一臺服務器而不丟失數據的策略。它看起來像有兩種選擇:從RabbitMQ的服務器

  1. 嘗試連接來自不同機器的其他節點並將 數據複製到它們。
  2. 安裝新機器兔子從舊服務器到新複製的Mnesia文件 。打開新的服務器,關閉舊的 一個。例如。可以在AWS上進行圖像快照,以簡化流程。

我沒有找到一種方法來實現(1)沒有清理數據,因此這個選項看起來不可行。 (2)它看起來非常手動和令人毛骨悚然。 有沒有其他的數據遷移策略,或者我在這裏丟失了什麼?

回答

0

我設法建立流動的第一種選擇通過建立RabbitMQ的集羣複製不下來的時間數據。要做到這一點我也跟着manual,但調整了兩件事情,使之成爲我的籌碼工作:在AWS

  1. RabbitMQ的集羣不處理IP地址作爲FQDN短的名稱,以便使集羣機器看對方需要編輯/ etc/hosts文件,並重新安排 「串」 的名字到集羣的機器:

VI/etc/hosts中

文件應該是這樣的:

127.0.0.1 localhost 10.242.86.191 ip-10-242-86-191 ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts

  • 設置你需要如所述here但重要的事實是,通過默認隊列不能被複制到設置複製羣集之後。所以,你需要建立政策一樣,排隊複製:
  • rabbitmqctl set_policy POLICY_NAME「queue_pattern」「{‘HA模式’:‘所有’,‘哈同步模式’:‘自動’ }」 -p your_vhost

    通過-p your_vhost參數沒有在文檔中提到的方式- 要小心,如果你使用任何指定的虛擬主機。

    設置的一切行動跨羣集複製,並通過Mnesia的syncronized隊列,這使我能夠切換第一集羣機器電源,無需停機和維持性後打開,而不丟失數據後。