知识卡片

连接均衡与队列均衡是两回事

专业/工作 · 596.b

内容

客户端与RabbitMQ集群建立TCP连接时,只会挑选其中一个节点连接,而不是同时连所有节点——如果没有额外的连接层负载均衡,所有客户端很可能集中连到同一个节点,造成这个节点网络负载畸高、其余节点闲置。这与集群内部”队列的master角色是否均匀分布在各节点”(决定处理负载是否均衡)是两个独立的问题:前者由客户端连接时挑选哪个节点决定,通常靠HAProxy、Keepalived、LVS或客户端自身的负载均衡算法解决;后者由队列声明时master分布策略决定(失衡案例见[[镜像队列重启会导致master悄悄漂移集中]])。发散:解决”负载不均”这个笼统的问题时,先要分清不均衡具体发生在哪一层(连接层还是处理层),因为两层各自的均衡手段互不相通,混为一谈容易在排查时找错方向。

参考来源

《RabbitMQ实战指南》第11章《RabbitMQ扩展》