七层代理与四层负载区别

zllbirdonland 2020-01-11

layer4与layer7

七层代理与四层负载区别

四层:IP+PORT转发
七层:协议+内容交换

四层负载

在四层负载设备中,把client发送的报文目标地址(原来是负载均衡设备的IP地址),根据均衡设备设置的选择web服务器的规则选择对应的web服务器IP地址,这样client就可以直接跟此服务器建立TCP连接并发送数据。

七层代理

七层负载均衡服务器起了一个反向代理服务器的作用,服务器建立一次TCP连接要三次握手,而client要访问webserver要先与七层负载设备进行三次握手后建立TCP连接,把要访问的报文信息发送给七层负载均衡;然后七层负载均衡再根据设置的均衡规则选择特定的webserver,然后通过三次握手与此台webserver建立TCP连接,然后webserver把需要的数据发送给七层负载均衡设备,负载均衡设备再把数据发送给client;所以,七层负载均衡设备起到了代理服务器的作用。

七层代理与四层负载区别

七层:会将请求报文拆开至应用层,分析用户请求的资源,然后haproxy会代替用户请求后端服务器的资源;后端服务器把资源返还给haproxy,haproxy会对资源再次 
      进行封装,然后返还给客户端;七层代理是由haproxy进行处理的,并且需要建立两次TCP连接,一次是客户端,一次是后端的服务器。
四层:会把请求报文拆开至传输层,根据请求的服务器的IP加端口号进行转发;四层代理是由后端服务器进行处理,包括报文的封装都是后端服务器进行封装;四层代  
      理相当于是一个路由器。

七层与四层的请求过程

当用户访问一个网站的域名时,DNS会把域名解析成公网IP,并且会把用户的报文进行封装,因为是跨网络,会把报文的目标地址指为要访问网站的公网IP,源地址为客户端的IP地址,路由器先会对用户请求的IP做与运算,发现不在同一个网段,所以会把报文进行转发,指定路由器的下一跳的地址,请求的过程中会经过多个路由器,最终到达网站的IP(企业防火墙上的公网IP);最终目标的IP地址就为网站的公网IP,访问到防火墙上的公网IP后,会把报文再次转发,源地址就为企业的内网地址,目标地址就为haproxy所对应的IP地址,然后会基于haproxy是四层负载还是七层负载来决定;如果是四层负载,则haproxy会根据调度算法,把用户的请求调度到一台后端的webserver上,报文的源地址就为haproxy的地址,目标地址为webserver的地址(修改源地址和目标地址是为了回复报文准确的返还给haproxy,防止发送给别的服务器);如果haproxy是七层负载,则haproxy会再次通过TCP三次握手,与后端的webserver建立连接,而不是作为转发。

oxy四层负载的区别

LVS:LVS的DR模式,做四层负载时,是不能做端口映射的;因为LVS的DR模式,报文传递过程中,是不会修改用户的源地址和目标地址的(LVS的RD模式是通过一次次的修改mac地址来实现的),用户请求的是80端口,并且回复报文是不会经过LVS的,所以无法把端口映射回80端口;webserver指定的网关是企业内部交换机的网关,而不是LVS的地址,所以不经过LVS,就无法把端口再映射回80端口;回复报文源地址的端口如果不是80端口,报文是不会被接收的;但LVS的压力也因此少了一半,所以LVS的四层负载性能优于haproxy。

haproxy:haproxy的四层负载,回复报文也是要经过haproxy的,所以支持端口映射,但是haproxy的压力也将变大,所以haproxy的四层负载能力低于LVS;haproxy
         为了保证数据报文准确的返还,不会乱发给其他服务器,会修改报文的源地址为haproxy的地址,目标地址为webserver的地址;LVS的nat模式是不会修改用户
         请求的源地址的,因为后端webserver的网关指定的是LVS的地址,并且在LVS上配置了IPVS规则。

小提示:当访问一个网站时,假设加载一个页面需要发送500个请求,这500个请求会根据haproxy的调度算法,分别调度到不同的后端服务器上,而不是把500个请求都
       调度到一台服务器上。

相关推荐