前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >RabbitMQ HAProxy负载均衡

RabbitMQ HAProxy负载均衡

作者头像
shysh95
发布2019-07-23 10:52:38
1.6K0
发布2019-07-23 10:52:38
举报
文章被收录于专栏:shysh95shysh95

本文主要讲解如何对RabbitMQ集群中的节点做负载均衡:

  • 客户端负载均衡
  • HAProxy实现负载均衡

在本章开始之前,我们虽然前面已经创建了集群,但是我们在之前连接集群的方式,都是直连集群中的某一个几点,这样被直连的几点将会承受很大的压力,剩余的节点则比较浪费,所谓的负载均衡就是可以将我们的请求按照一定规则打散到集群中的各个节点,这样我们才可能尽可能大的发挥出系统的性能,提高系统的吞吐量。

客户端负载均衡

如果要实现一个完善的负载均衡还是比较困难,主要要实现以下功能:

  • 请求需要按照规则打散到各个集群的节点
  • 节点的宕机需要负载均衡器自我感知并且进行剔除,这样就避免节点都宕掉了还在向宕掉的节点发送请求,导致大量的请求失败
  • 节点的新增其实还好,可以自我感知并上线,也可以手动配置

如果实现将请求打散到各个节点,负载均衡器需要遵循一定的规则,规则主要有以下几种:

  • 轮询:将请求轮流到发送到后端的机器,不关系节点的实际连接数和负载能力
  • 加权轮询:对轮询的优化,考虑每个节点的性能,配置高的机器分配较高的权重,配置低的机器分配较低的权重,并将请求按照权重分配到后端节点
  • 随机法:通过随机算法,在众多节点中随机挑选一个进行请求。随着客户端调用服务端的次数增多,其实际效果越接近轮询。
  • 加权随机法:对随机的优化,根据机器性能分配权重,按照权重访问后端节点
  • 源地址哈希法:根据客户端的IP地址,通过hash函数获取一个数值,用这个数值对后端节点数进行取模,这样在后端节点数保持不变的情况下,同一个客户端访问的 后端节点也是同一个
  • 最小连接数:根据后端节点的连接情况,动态选举一个连接积压最小的节点进行访问,尽可能的提高节点的利用率。

使用HAProxy实现负载均衡

准备一份HAProxy的配置文件

global       maxconn 4096                       #默认最大连接数       log 127.0.0.1 local0                #[err warning info debug]       chroot /usr/local/sbin           #chroot运行的路径       daemon                              #以后台形式运行haproxy       pidfile /var/run/haproxy.pid        #haproxy的pid存放路径,启动进程的用户必须有权限访问此文件defaults       log global                        #应用全局的配置       mode tcp                           #所处理的类别(7层 http;4层tcp;health只返回OK)       maxconn 4096                       #最大连接数       option tcplog                    #日志类别       option dontlognull                  #不记录健康检查的日志信息       retries 3                           #3次连接失败就认为服务不可用,也可以通过后面设置       balance roundrobin                  #默认的负载均衡的方式,轮询方式       timeout connect 5000             #连接超时       timeout client 50000             #客户端超时       timeout server 50000             #服务器超时       timeout check 2000                  #心跳检测超时#############################haproxy监听界面#############################listen monitor        bind 0.0.0.0:5669           #监听端口        mode http        option httplog        stats enable        stats refresh 30s           #统计页面自动刷新时间        stats uri /haproxy?stats    #统计页面url        stats realm Haproxy Manager #统计页面密码框上提示文本        stats auth admin:admin      #统计页面用户名和密码设置        #stats hide-version         #隐藏统计页面上HAProxy的版本信息####################################################################listen rabbitmq_cluster    bind 0.0.0.0:5670    balance roundrobin    server   rabbit003 172.18.0.4:5672 check inter 5s rise 2 fall 3 weight 1    server   rabbit002 172.18.0.3:5672 check inter 5s rise 2 fall 3 weight 1    server   rabbit001 172.18.0.2:5672 check inter 5s rise 2 fall 3 weight 1

简单的讲述一下上面的配置文件,具体的HAProxy等后面写几篇文章讲述,下面主要讲述关于后端服务器的设置

server   rabbit003 172.18.0.4:5672 check inter 5s rise 2 fall 3 weight 1
  • server {name}:定义RabbitMQ服务的内部标识,不是指RabbitMQ的节点名称c
  • ip:port:定义RabbitMQ服务连接的IP地址和端口号
  • check inter {value}:定义每隔多少毫秒检查RabbitMQ服务是否可用
  • rise {value}:定义RabbitMQ服务发生故障后,需要多少次健康检查才能被再次确认可用
  • fall {value}:定义需要经历多少次健康检查失败以后,HAProxy才会停止使用此RabbitMQ服务
  • weight {value}:定义当前RabbitMQ服务的权重
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-04-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员修炼笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 客户端负载均衡
  • 使用HAProxy实现负载均衡
相关产品与服务
负载均衡
负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档