一、適用情境
本方案適用於 自建 RabbitMQ 遷移至 阿里雲訊息佇列 RabbitMQ 情境。
遷移類型適用於:中繼資料遷移。
二、阿里雲訊息佇列 RabbitMQ 對比自建 RabbitMQ 的優勢
對比項 | 阿里雲 RabbitMQ | 自建 RabbitMQ |
叢集TPS上限 | 無上限。雲訊息佇列 RabbitMQ 版採用叢集分布式部署,無主架構,能夠橫向擴容、縮容叢集規模。 | 有上限。受機器效能限制,擴容依賴升級機器硬體規格,且有上限。 |
單個Queue的TPS上限 | 無上限。雲訊息佇列 RabbitMQ 版支援單隊列的橫向擴充,效能上無並發限制,容量無上限。 | 有上限,單隊列效能上限為單節點上限。 |
串連數 | 無上限。雲訊息佇列 RabbitMQ 版執行個體能承載的串連數可隨叢集規模擴大而增加,不受串連數增加的影響。 | 有上限。受機器效能限制,單機的串連數有上限,且無法擴容。 |
定時訊息 | 秒級精確度、高效能、開箱即用。 | 使用複雜。 |
服務可用性和資料可靠性 |
| 通過鏡像隊列或仲裁隊列實現,容易出現腦裂問題。 |
訊息堆積能力 | 在海量訊息堆積的情況下,始終保持高效能,不影響叢集的正常服務。 | 大量訊息堆積容易引起記憶體問題,可能導致服務宕機。 |
彈效能力 |
| 單機容量就是叢集並發容量的上限,擴容需要通過升配機器規格或拆分叢集實現。 |
巡檢系統 | 自動探索並修複死結、宕機等問題。 | 無。 |
三、遷移相關工具介紹
1、阿里雲訊息佇列 RabbitMQ 控制台遷移工具
阿里雲訊息佇列 RabbitMQ 控制台遷移工具,將開源 RabbitMQ 匯出的中繼資料檔案,通過建立遷移任務形式,匯入到已建立好的阿里雲訊息佇列 RabbitMQ 執行個體中。支援 ALL、VHost 兩種匯入模式,最終實現建立對應的 Vhost、Queue、Exchange、Binding。
遷移工具只支援中繼資料遷移,不支援訊息資料移轉。
四、遷移方案
1、遷移整體流程
執行個體建立:在阿里雲建立對應的規格的雲訊息佇列 RabbitMQ 執行個體。
資料移轉:
中繼資料遷移:通過使用阿里雲 RabbitMQ 控制台遷移工具,進行中繼資料遷移
資料校正:
中繼資料校正:通過檢查遷移前後 vhost 的條數、Queue 的條數來校正中繼資料的一致性。
2、資料移轉方案
2.1、使用阿里雲 RabbitMQ 控制台遷移工具進行中繼資料遷移
遷移原理:
遷移中繼資料是指將開源 RabbitMQ 叢集的中繼資料匯出,並將其匯入到阿里雲雲訊息佇列 RabbitMQ 版執行個體。雲訊息佇列 RabbitMQ 版會根據成功匯入的中繼資料在目標雲訊息佇列 RabbitMQ 版執行個體中建立對應的Vhost、Queue、Exchange、Binding,實現RabbitMQ叢集中繼資料遷移上雲。
前置條件:
自建源端需開啟 RabbitMQ 外掛程式。
建立作為中繼資料遷移目標的雲訊息佇列 RabbitMQ 版執行個體和 Vhost。
風險及注意項:
由於RabbitMQ和雲訊息佇列 RabbitMQ 版在許可權管控機制等方面存在差異,rabbit_version、users、permissions、parameters、global_parameters和policies中繼資料不支援匯入雲訊息佇列 RabbitMQ 版執行個體,在匯入時會被自動忽略。
3、資料校正方案
3.1 中繼資料校正:
通過檢查遷移前後 vhost 的條數、Queue 的條數來校正中繼資料的一致性。
五、實施遷移過程
1、使用阿里雲 RabbitMQ 控制台遷移工具進行中繼資料遷移
1.1 匯出開源 RabbitMQ 中繼資料
在瀏覽器中開啟開源 RabbitMQ 控制台。開源 RabbitMQ 控制台地址:http://{RabbitMQ IP地址}:1567;
在登入頁面的Username文字框輸入您的使用者名稱,在Password文字框輸入您的密碼,然後單擊Login。
在 Overview 頁簽下方,單擊 Export definitions,從Virtual host列表選擇All或者指定的Vhost名稱,然後單擊Download broker definitions。Virtual host列表參數說明如下:
All:表示匯出全部Vhost中繼資料。
Vhost名稱:表示匯出指定Vhost中繼資料。
將下載的中繼資料檔案儲存至本地。
1.2 將中繼資料匯入雲訊息佇列 RabbitMQ 版
登入雲訊息佇列 RabbitMQ 版控制台,在左側導覽列,單擊遷移上雲。
在遷移上雲頁面頂部功能表列選擇地區,然後在頁面左上方單擊建立任務。
在建立工作面板,設定相關參數,單擊確定
參數 | 描述 | 樣本值 |
執行個體 | 中繼資料要遷移到的目標執行個體名稱。 | amqp-cn-7mz2cjgk**** |
匯入模式 |
| Vhost |
Vhost | 遷移中繼資料至 雲訊息佇列 RabbitMQ 版執行個體指定的Vhost。 匯入模式選擇Vhost時,顯示該參數。 | test-vhost**** |
中繼資料 | 需要遷移的中繼資料檔案。單擊選擇檔案,選擇本地的中繼資料檔案後,單擊開啟。 說明 中繼資料檔案的大小不超過20 MB。 | rabbit_mq-amqp-load-test011122063**** |
通過建立任務遷移的中繼資料,支援查看中繼資料的詳細資料和任務執行失敗時的失敗原因。
查看匯入成功的中繼資料資訊
在遷移上雲頁面,目標任務所在行目標執行個體列,單擊執行個體名稱。
在左側導覽列,單擊Vhost 列表,目標Vhost所在行操作列,單擊詳情,查看Vhost詳細資料。更多資訊,請參見Vhost管理。
查看執行失敗的任務詳情
在遷移上雲頁面,目標任務所在行操作列,單擊詳情。您也可以在遷移上雲頁面,目標執行個體所在行同步中繼資料數量列,單擊同步數量。
在遷移詳情頁面,單擊Vhost、Exchange、Queue、Binding對應的頁簽,查看失敗原因。
六、資料校正過程
中繼資料校正:
進入 RabbitMQ 控制台,查看通過檢查遷移前後 vhost 的條數、Queue 的條數,對比源 RabbitMQ 控制台中繼資料,來校正中繼資料的一致性。
七、遷移注意事項
由於自建 RabbitMQ和雲訊息佇列 RabbitMQ 版在許可權管控機制等方面存在差異,rabbit_version、users、permissions、parameters、global_parameters和policies中繼資料不支援匯入雲訊息佇列 RabbitMQ 版執行個體,在匯入時會被自動忽略。
自建 RabbitMQ 的 Queue 名稱、Exchange 名稱、Bindings 等等支援特殊字元,雲上執行個體不支援包含特殊字元,如空格、$、#、%等。
雲上執行個體不支援外掛程式,從自建RabbitMQ遷移上雲需評估已安裝外掛程式能力,是否通過其他方案代替。其中自建 RabbitMQ 通過外掛程式支援延遲訊息,雲上執行個體通過延遲訊息來支援(非外掛程式方式提供)。
自建 RabbitMQ 預設訊息最大延遲是30分鐘(到期後刪除),雲上執行個體預設是5分鐘(根據規格不同時間也不同,遷移前確保線下最大延遲與雲上延遲保持一致。
雲上執行個體支援失敗或逾時後重新投遞訊息,需要關註上雲後是否會觸發重複投遞,避免因重複投遞導致訊息激增。
雲上執行個體的使用者密碼只支援根據 AK/SK 重建,無法定義為使用者已有的使用者密碼。