RabbitMQ集群负载均衡使用Haproxy的原因

为什么使用Haproxy而不用Nginx?

负载分为四层负载和七层负载。

HAproxy: 是基于四层和七层的转发,是专业的代理服务器

Nginx: 是WEB服务器,缓存服务器,又是反向代理服务器,可以做七层的转发

四层负载和七层负载

四层负载:工作在 OSI 模型的第四层,即传输层(TCP 位于第四层),它是根据 IP 端口进行转发(LVS 支持四层负载)。RabbitMQ 是 TCP 的 5672 端口。

七层负载:工作在第七层,应用层(HTTP 位于第七层)。可以根据请求资源类型分配到后端服务器(Nginx 支持七层负载;HAProxy 支持四层和七层负载)。

为什么说HAproxy是专业的代理服务器?

1、监控指标

nginx只提供7种不同的指标。

活动连接:当前活动客户端连接数,包括等待连接。
接受:接受的客户端连接总数。
handling:已处理连接的总数。通常,参数值与accept 相同,除非已达到某些资源限制(例如,worker_connections限制)。
请求:客户端请求的总数。
读取:nginx正在读取请求头的当前连接数。
写入:nginx将响应写回客户端的当前连接数。
等待:等待请求的当前空闲客户端连接数。

HAProxy提供83种不同的指标。

0. pxname [LFBS]:代理名称
1. svname [LFBS]:服务名称(FRONTEND用于前端,BACKEND用于后端,任何名称用于服务器/侦听器)
2. qcur [..BS]:当前排队的请求。对于后端,这将报告未分配服务器的队列号。
3. qmax [..BS]:qcur的最大值
4. scur [LFBS]:当前会话
5. smax [LFBS]:最大会话
6. slim [LFBS]:配置的会话限制
7. stot [LFBS]:累计数连接
8. bin [LFBS]:字节输入
9. bout [LFBS]:字节输出
 
[...] 
 
32. 类型[LFBS] :( 0 =前端,1 =后端,2 =服务器,3 =套接字/监听器)
33. rate [.FBS]:每秒的会话数超过最后一秒
34. rate_lim [.F ..]:每秒新会话的配置限制
35. rate_max [.FBS]:每秒新会话的最大数量
36. check_status [... S]:上次健康检查的状态,其中一个:
37. check_code [... S]:layer5-7代码,如果可用
38. check_duration [... S]:以ms为单位完成上次健康检查所用的时间
39. hrsp_1xx [.FBS]:带1xx代码的http响应
40. hrsp_2xx [.FBS]:具有2xx代码的http响应
41. hrsp_3xx [.FBS]:具有3xx代码
42. http响应.hrsp_4xx [.FBS]:具有4xx代码的http响应
43. hrsp_5xx [.FBS]:http响应5xx代码
44. hrsp_other [.FBS]:与其他代码的http响应(协议错误)
[...]
2、监控统计界面

Nginx监控统计界面简单
RabbitMQ集群负载均衡使用Haproxy的原因_第1张图片

HAProxy统计页面
RabbitMQ集群负载均衡使用Haproxy的原因_第2张图片

你可能感兴趣的:(消息中间件,#,nginx,java-rabbitmq,rabbitmq,负载均衡)