#yyds干货盘点#Nginx/HAProxy负载均衡原理及应用场景

网友投稿 2028 2022-09-20

#yyds干货盘点#Nginx/HAProxy负载均衡原理及应用场景

#yyds干货盘点#Nginx/HAProxy负载均衡原理及应用场景

Nginx/HAProxy的四层负载均衡

访问原理

四层负载均衡Nginx/HAProxy数据包走向原理

①客户端请求数据包报文的源地址是CIP,访问目标地址是DIP+IP端口。

②负载均衡和后端服务器发起新的TCP三次握手,建立新的TCP连接。报文的源地址是DIP,目标地址是RIP。

③报文发送到后端服务器后,服务器响应该请求,并将响应数据包报文返还给负载均衡。

④然后负载均衡将此数据包报文的响应内容进行重新打包并返回给客户端。

Nginx/HAProxy四层三次握手数据包走向

客户端在向负载均衡进行TCP三次握手后,负载均衡会马上发起新的TCP连接,即为“二次连接”。

应用场景

对MySQL、LDAP、Redis、Memcache等四层应用做负载均衡。对七层HTTP的Web类应用做负载均衡,如Tomcat、PHP。对七层Nginx、HAProxy的负载均衡做负载均衡。

Nginx/HAProxy的七层负载均衡

访问原理

七层负载均衡Nginx/HAProxy数据包走向原理

①客户端请求数据包报文的源地址是CIP,访问目标地址是DIP+IP端口+URL。

②负载均衡和后端服务器发起新的TCP三次握手,建立新的TCP连接。报文的源地址是DIP,目标地址是RIP,并且还有客户端请求的目标URL。

③报文发送到后端服务器后,服务器响应该请求,并将响应数据包报文返还给负载均衡。

④然后负载均衡将此数据包报文的响应内容进行重新打包并返回给客户端。

Nginx/HAProxy七层三次握手数据包走向

Nginx/HAProxy七层的二次连接,在客户端和负载均衡进行TCP三次握手后,还需要等客户端Pushdata传输数据,之后负载均衡和后端服务器才会建立新的TCP三次握手。

应用场景

七层作用在HTTP应用层,所以七层的负载均衡只能跟Tomcat、PHP等Web服务做负载均衡。可以根据请求的域名来做转发。比如请求者访问A域名,转发到后端A服务器;请求访问B域名,转发到后端B服务器。可以根据请求的URL来做转发。比如请求者访问的URL包含A目录,就转发到A服务器;请求访问的URL包含B目录,就转发到B服务器。可以根据请求的浏览器类型来做转发。比如请求者使用的浏览器类型是Chrome,就转发到A服务器;请求者使用的浏览器类型是Firefox,就转发到B服务器。

云端负载均衡选择

在云端实践中,对负载均衡的选择肯定优先采用云厂商提供的SLB或者主流硬件负载均衡厂商在云中提供的软负载均衡产品(性能会更出色功能更丰富)。

在具体实际应用中,若对七层有Rewrite的需求,或者对四层有更多调度算法等的需求,这时候SLB的功能暂时达不到要求,可能需要在ECS上搭建Nginx/HAProxy四层/七层负载均衡。

但在云端实践中,SLB的四层/七层基本上满足日常80%的需求。所以云端负载均衡的选型,基本上也就是云端负载均衡SLB的选型。

在TCP类服务中,对于负载均衡,我们只能选择四层负载均衡。在HTTP类的Web服务中,既能选择四层也能选择七层。这事实上,在80%的企业级HTTP负载均衡应用中,只有单纯转发的功能,没有对虚拟主机的转发需求。所以这里优先选四层因为四层在性能方面更加强悍,在应用入口采用四层负载均衡进行分流是标准且成熟的企业级架构。如果需要前端SLB挂证书SSL,也就是HTTPS,那么只能选择七层负载均衡。若有高流量高并发的场景还是建议前端采用四层负载均衡,证书放在后端ECS中的Nginx进行配置,这样可以保证性能。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:【WCF Restful】Post传参示范(wcf猫协会)
下一篇:Docker-可视化管理工具总结-推荐使用Portainer
相关文章

 发表评论

暂时没有评论,来抢沙发吧~