前言
公司的RabbitMQ集群要升級最新穩定版本,升級方案:新搭建一套集群,將數據遷移到新的集群,應用連接到新的集群。
因為系統可以接受短暫停機時間,所以采用Shovel插件將舊集群的數據遷移到新集群。經過分析,需要遷移的數據主要有兩種:
- 隊列中積壓的消息;
- 延遲隊列的消息;
安裝插件
-
啟動插件
在新集群中的每一台服務器上,執行以下命令啟動shovel插件:
rabbitmq-plugins enable rabbitmq_shovel
rabbitmq-plugins enable rabbitmq_shovel_management
-
驗證插件
進入管理界面的Admin頁簽下面,檢查是否有如下2個菜單,如有說明啟動成功。
配置
以下操作,通過rabbitMQ的管理界面進行操作。
-
創建exchange&queue(舊集群)
1、創建交換器exchange:
Name:shovel_demo_exchange
Arguments:x-delayed-type:direct
2、 創建隊列queue:
Name:shovel_demo_queue
3、綁定路由bind:
To queue:shovel_demo_queue
Routing Key:shovel_demo_queue_routingKey
如上圖所示,輸入剛才創建的shovel_demo_exchange,按回車過濾查詢,然后點擊列表中的名稱鏈接,進入下圖的詳細界面:
-
創建exchange&queue(新集群)
創建方法及名稱跟舊集群一模一樣,全部名稱和配置都要一樣。
-
舊集群中發送消息
1、進入發送界面:
2、輸入信息發送:
3、發送完成提示:
4、重復上面的操作,再發送2條消息,總共有3條消息。
5、查看積壓的消息:
遷移數據
-
新集群創建shovel連接
1、打開新集群的管理界面,進入Admin頁簽,點擊Shovel Management菜單,按以下方式增加一個shovel:
queue:shovel_demo_queue URI格式:amqp://user:password@server-name/my-vhost Source URI:amqp://zat:zat123@10.0.101.5/zat #舊集群URI,IP要改 Destination URI:amqp://zat:zat123@10.0.104.5/zat #U集群URI,IP要改
2、新增成功界面:
3、檢查狀態是否正常:
注:shovel是針對queue(隊列)來操作的,有多少個隊列要遷移數據,就要創建多少個對應的shovel。
驗證
shovel創建好后,如果檢查狀態正常的話,它會自動進行遷移數據。現在我們來檢查舊集群shovel_demo_queue隊列的數據是否移到到新集群中。
1、在新集群中通過以下界面查看:
2、在舊集群中通過以下界面查看:
引用:
- https://www.rabbitmq.com/shovel.html
- https://www.rabbitmq.com/shovel-dynamic.html