负载均衡相关

HaProxy 的四层与七层的区别
 
1. HaProxy 在四层的工作原理
在四层负载设备中,把 Client 发送的报文目标地址(原来是负载均衡的设备IP地址),根据均衡设备设置的 web 服务器的规则选择对应的 web服务器 IP 地址,这样 client 就可以直接跟服务器简历 TCP 链接并发送数据。
我们其实可以把 HaProxy 在四层的工作分为两个阶段:
第一阶段:client 发送 http 请求报文到 haproxy,haproxy由于工作在第四层,因此通过拆包可以查看到 TCP/IP 包头信息,haproxy 根据定义的规则将 client 请求的目标地址修改为后端的 web 服务器的 IP 地址,与此同时还将源地址修改为 haproxy 的 IP 地址并转发给后端的 web 服务器。
第二阶段:后端的 web 服务器响应的结果封装成响应报文发送给 haproxy 服务器后,haproxy 再将报文的源地址修改为 haproxy 的 IP 地址,目标地址修改为 client 的 IP 地址 并转发给 client。
 
2. HaProxy 在七层的工作原理
七层负载均衡器起了一个代理服务器的作用,服务器建立一次 TCP 链接要三次握手,而 client 要访问 webserver 要先与七层设备进行三次握手后建立 TCP 链接,把要访问的斑纹信息发送给七层负载均衡;然后七层负载均衡再根据设置的均衡规则选择待定的 webserver,然后通过三次握手与此台 webserver 建立 TCP链接,然后webserver 把需要的数据发送给七层负载均衡设备,负载均衡设备再把数据发送给 client;所以,七层负载均衡设备起到了服务代理器的作用。
我们其实可以把 haproxy 在七层的工作流程分为四个过程:
第一阶段:client 发送合同谈判请求报文到 haproxy,haproxy 接收到 client 的http请求报文后,会查看 client的请求报文,根据 http 请求报文的信息在结合 haproxy 自身定义的规则判断出 client 要访问后端的 web 服务器;
第二阶段:haproxy 根据 client的请求报文判断要访问的后端的 web 服务器后,会代替客户端重新发起 http 请求;
第三阶段:后端的 web 服务器接收到 haproxy 的 http 请求报文后,如果访问的资源存在且权限允许的话会将 haproxy 请求的资源封装成响应报文并发送给 haproxy 服务器。
第四阶段:haproxy 接收到 web 服务器的响应报文后,haproxy 将后端 web 服务器返回的结果封装成响应报文并发送给client。
 
3. HaProxy 的四层与七层的区别

 

如上图所示,haproxy 的四层与七层的主要区别就在于是否重新发起了 http 请求,如果重新发起了 http 请求说明工作在第七层,若没有重新发起 http 请求说明 haproxy 工作在第四层。
这也就是为什么 haproxy 在反向代理 MySQL、Redis、RDP 等服务时需要特别指定 mode 为TCP模式的主要原因,因为工作在第七层会重新发起 http 请求,而重新发起的 http 请求 MySQL、Redis、RDP等服务压根就不认识,因为这些服务都有着自己默认端协议。
posted @ 2022-11-10 15:47  茄子777  阅读(32)  评论(0)    收藏  举报