
# 设置队列负载均衡
#### 方案概述
在RabbitMQ集群上，由于扩容节点、删除队列等原因，会导致队列在各个节点分布不均衡，从而造成部分节点压力过大，无法更有效地利用集群。
这时候需要手动设置节点间队列的负载均衡，提升集群的利用率。设置队列负载均衡的方法如下：
- [删除队列重建]
- [通过Policy修改master节点方式]
 
 #### 删除队列重建
1. [登录RabbitMQ WebUI页面](https://support.huaweicloud.com/usermanual-rabbitmq/rabbitmq-ug-180801003.html)。
2. 在"Overview"页签中，单击"Download broker definitions"，导出元数据。 
   ![](https://support.huaweicloud.com/bestpractice-rabbitmq/zh-cn_image_0000001593722361.png "点击放大")
   
   
3. 停止生产，等待数据消费完，然后删除原有队列。 
   1. 在"Overview"页签中，确认数据是否已消费完。 ![](https://support.huaweicloud.com/bestpractice-rabbitmq/zh-cn_image_0000001538561005.png "点击放大")
      可消费消息数（Ready）和未确认的消息数（Unacked）都为0时，说明消费完成。
      
   
   2. 等数据消费完后，删除原有队列。
      1. 在"Queues"页签，单击需要删除的队列名称，进入队列详情页面。 ![](https://support.huaweicloud.com/bestpractice-rabbitmq/zh-cn_image_0000001261519620.png "点击放大")
         
      
      2. 单击"Delete Queue"，删除队列。 ![](https://support.huaweicloud.com/bestpractice-rabbitmq/zh-cn_image_0000001261199848.png "点击放大")
         
       
   
   
   
   
4. 在"Overview"页签中，上传已导出的元数据。 
   1. 在"Overview"页签中，单击"选择文件"，选择已导出的元数据。
   
   2. 单击"Upload broker definitions"，上传元数据。 ![](https://support.huaweicloud.com/bestpractice-rabbitmq/zh-cn_image_0000001488121410.png "点击放大")
      上传成功后，显示如下信息。
      ![](https://support.huaweicloud.com/bestpractice-rabbitmq/zh-cn_image_0000001538801853.png "点击放大")
      实例会自动将队列均衡创建在各个节点上，在"Queues"页签中查看队列分布详情。
      
   
   
   
   
 
 #### 通过Policy修改master节点方式
1. [登录RabbitMQ WebUI页面](https://support.huaweicloud.com/usermanual-rabbitmq/rabbitmq-ug-180801003.html)。
2. 在"Admin \> Policies"页面中，新增一条策略。
   
   ![](https://support.huaweicloud.com/bestpractice-rabbitmq/zh-cn_image_0000001320495569.png "点击放大")
   - Name：填写策略名称。
   
   - Pattern：队列匹配模式，填写队列名称，会匹配前缀同名的队列。
   
   - Apply to：选择"Queues"。
   
   - Priority：策略优先级，数字越大，优先级越高。
   
   - Definition：镜像定义。填写"ha-mode"和"ha-params"参数。其中"ha-mode"设置为"nodes"，"ha-params"设置为队列希望迁移到的目的节点名称。
   
   
   
   
3. 单击"Add policy"。 
   ![](https://support.huaweicloud.com/bestpractice-rabbitmq/public_sys-resources/note_3.0-zh-cn.png)
   - 队列数据同步需要很长时间，为防止消息丢失，在队列数据完成同步前，原先的master节点依然生效。
   
   - 待队列切换完成后，可删除[2]中新增的策略。
    
   
   
 
