反向代理和负载均衡有何区别?
Posted 逸鹏说道
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了反向代理和负载均衡有何区别?相关的知识,希望对你有一定的参考价值。
反向代理,是把一些静态资源存储在服务器上,当用户有请求的时候,就直接返回反向代理服务器上的资源给用户,而如果反向代理服务器上没有的资源,就转发给后面的负载均衡服务器,负载均衡服务器再将请求分发给后端的web服务器。 区别就是:反向代理服务器是需要存储资源的,让用户更快速的接收到资源 负载均衡就是,为了保证后端web服务器的高可用,高并发,是不需要要存储资源,只需要转发用户的请求。
一、SLB产生背景:
二、SLB的三种传输模式:
七层SLB和四层SLB的区别:
四层SLB:配置负载均衡设备上服务类型为tcp/udp,负载均衡设备将只解析到4层,负载均衡设备与client三次握手之后就会和RS建立连接;
七层SLB:配置负载均衡设备服务类型为http/ftp/https等,负载均衡设备将解析报文到7层,在负载均衡设备与client三次握手之后,只有收到对应七层报文,才会跟RS建立连接。
在负载均衡设备中,SLB主要工作在以下的三种传输模式中:
反向代理模式
透传模式
三角模式
根据不同的模式,负载均衡设备的工作方式也不尽相同,但无论在哪种模式下,客户端发起的请求报文总是需要先到达负载均衡设备进行处理,这是负载均衡设备正常工作的前提。模拟网络拓扑环境:
Client:10.8.21.40
负载均衡设备:172.16.75.83
VIP:172.16.75.84
RS1IP:172.16.75.82
RS2IP:172.16.75.85
在整个报文交互过程中,采用Tcpdump和Wireshark分别在RS和Client处抓包,然后使用Wireshark进行报文解析。
三、 反向代理模式:
反向代理:普通的代理设备是内网用户通过代理设备出外网进行访问,而工作在这种模式下的负载均衡设备,则是外网用户通过代理设备访问内网,因此称之为反向代理。
在反向代理模式下:
配置完成后,Client访问RS服务器,返回成功,整个报文交互过程如下 :
Client和负载均衡设备之间的报文交互过程
RS和负载均衡设备之间报文交互过程
分析整个报文交互过程:
TCP握手过程:
Client收到报文后回复ACK报文,TCP三次握手成功。
HTTP报文交互过程:
当负载均衡设备与client完成三次握手后,因为配置的七层SLB,如果收到HTTP请求,就会根据负载均衡算法和服务器健康状态优选出对应的RS(在这次过程中选择的RS设备为172.16.75.82),然后与RS建立TCP连接:
负载均衡设备发送TCP SYN报文请求连接,源IP为负载均衡设备与RS相连接口IP 172.16.75.83,源端口号随机4574,目的IP为RS的IP 172.16.75.82,目的端口号80;
RS收到报文后,以源IP 172.16.75.82,端口号80,目的IP 172.16.75.83,目的端口号4574回复SYN ACK报文,负载均衡设备回复ACK报文建立三次握手;
当RS收到报文后,使用源为本地IP 172.16.75.82,目的IP为172.16.75.83进行回复,所以报文直接回复给负载均衡设备;
四、透传模式:
同样在RS端和Client端抓取交互报文:
Client和负载均衡设备之间的报文交互过程
RS和负载均衡设备之间的报文交互过程
TCP握手过程:
同反向代理模式交互过程
HTTP报文交互过程:
五、 三角模式:
分别在Client端和RS端抓包,内容如下:
Client和负载均衡设备之间的报文交互过程
RS 和负载均衡设备之间的报文交互过程
TCP握手过程:
由于采用了4层SLB,所以在TCP握手过程中与上述的7层SLB有些不同,当Client和RS完成三次握手之后,此时负载均衡设备会直接选择RS,然后跟RS建立TCP三次握手;
HTTP报文交互过程:
在三角模式中,由于回复报文负载均衡设备不做任何处理,所以非常适合于RS到Client方向流量较大或者连接数目较多的组网环境。
六、总结
以上是关于反向代理和负载均衡有何区别?的主要内容,如果未能解决你的问题,请参考以下文章
Nginx反向代理实现负载均衡配置图解
nginx反向代理访问很慢,我做了负载均衡,现在几乎无法访问,有谁能帮我解决一下,万分感谢。
集群和负载均衡的区别 nginx
nginx做反向代理负载均衡 Java怎么获取后端服务器获取用户IP
nginx做反向代理负载均衡 Java怎么获取后端服务器获取用户IP
Nginx代理——正向反向代理,动静分离和负载均衡