一、SLB 产生背景
SLB(服务器负载平衡):在多个提供雷同服务的服务器的状况下,负载平衡设施存在虚构服务地址,当大量客户端从内部拜访虚构服务IP地址时,负载平衡设施将这些报文申请依据负载平衡算法,将流量平衡的调配给后盾服务器以均衡各个服务器的负载压力,防止在还有服务器压力较小状况下其余服务达到性能临界点呈现运行迟缓甚至宕机状况,从而进步服务效率和品质。
因而对客户端而言,RS(real server 理论服务器)的IP地址即是负载平衡设施VIP(虚构服务地址IP)地址,真正的RS服务器IP地址对于客户端是不可见的。
二、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 进行报文解析。
三、 反向代理模式
反向代理:一般的代理设施是内网用户通过代理设施出外网进行拜访,而工作在这种模式下的负载平衡设施,则是外网用户通过代理设施拜访内网,因而称之为反向代理。
在反向代理模式下:
当负载平衡设施收到客户端申请后,会记录下此报文( 源IP地址、目标IP地址、协定号、源端口、目标端口,服务类型以及接口索引),将报文目标地址更改为优选后的RS设施的IP地址,目标端口号不变,源地址批改为负载平衡设施上行与对应RS设施接口的IP地址,源端口号随机发送给RS;
当RS收到报文后,会以源为RS接口IP地址,目标IP设施地址回复给负载平衡设施,负载平衡设施将源批改为VIP,目标端口号批改为客户端的源端口号,目标IP批改为Client的源IP回复报文。
查看报文解析后果:
配置实现后,Client 拜访 RS 服务器,返回胜利,整个报文交互过程如下 :
Client和负载平衡设施之间的报文交互过程
RS和负载平衡设施之间报文交互过程
后果剖析
剖析整个报文交互过程:
TCP握手过程:首先Client向负载平衡设施发送TCP SYN报文申请建设连贯,源IP为Client的IP 10.8.21.40,源端口号50894,目标IP为VIP地址172.16.75.84,目标端口号80;
收到申请报文后,负载平衡设施会以源IP为VIP地址172.16.75.84,端口号80,目标IP 10.8.21.40,目标端口号50894回应SYN ACK报文;
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报文建设三次握手;
之后,负载平衡设施再将收到的HTTP报文源IP批改为与RS相连上行接口IP地址172.16.75.83,源端口号为随机端口号,将报文发送给RS;当RS收到报文后,应用源为本地IP 172.16.75.82,目标IP为172.16.75.83进行回复,所以报文间接回复给负载平衡设施;
当负载平衡设施收到RS的回应报文后,将报文的源批改为VIP地址172.16.75.84,目标IP为10.8.21.40发送回 Client,再将目标端口号批改为HTTP申请报文中的源端口号,服务器拜访胜利。
由上述的过程能够看出,在RS端上,client的实在IP地址被负载设施批改成与RS相连接口的IP地址,所以RS无奈记录到Client的拜访记录,为了解决这个问题,能够采纳在HTTP报文头中增加X-Forwarded-For字段,本文不做赘述,能够自行查问。
四、透传模式
当负载平衡设施工作在透传模式中时,RS无奈感知到负载平衡设施的存在,对于Client来说,RS的IP地址就是负载平衡设施的VIP地址。
在这种模式下,当负载平衡设施收到源为 Client 的 IP,目标 IP 为本地 VIP 地址的报文时,会将报文依据负载平衡策略和健康状况发送给最优的 RS 设施上,继而RS设施会收到目标为本地IP,源为Client理论IP的申请报文;
而后RS将会间接回应此申请,报文的目标 IP 地址为 Client 的 IP 地址,当负载平衡设施收到此报文后,将源 IP 地址批改为 VIP 地址,而后将报文发送给 Client。
报文解析后果:
同样在 RS 端和 Client 端抓取交互报文:
Client 和负载平衡设施之间的报文交互过程
RS和负载平衡设施之间的报文交互过程
后果剖析:
TCP握手过程:同反向代理模式交互过程
HTTP报文交互过程:
Client向负载平衡设施的VIP地址172.16.75.84以源IP 10.8.21.40发送HTTP申请,当负载平衡设施收到报文后,与优选后的RS进行TCP三次握手,过程同反向代理模式,而后将收到的HTTP报文,不扭转报文的源IP地址和源/目标端口号,只批改目标IP批改为优选后的RS地址172.16.75.82;
当RS收到源来自IP 10.8.21.40的报文后,回复报文给IP地址10.8.21.40,此时要留神,必须在RS上配置回复报文通过负载平衡设施,负载平衡设施会将源IP批改为VIP地址172.16.75.84,而后转发给Client,否则Client将会收到源IP为172.16.75.82的HTTP报文,服务器拜访失败。
五、 三角模式
在三角模式下,当客户端发送申请到负载设施上时,负载平衡设施会计算出最优RS,而后间接依据MAC地址将报文转发给RS,在RS上配置报文的源IP为VIP地址(个别配置在loopback口上),因而在这种状况下,RS会间接将报文发送给Client,即便回复报文通过负载平衡设施,此设施不做任何解决。因为报文在整个过程中传输路径相似于三角形,因而称之为三角模式。
报文解析后果
别离在Client端和RS端抓包,内容如下:
Client和负载平衡设施之间的报文交互过程
RS 和负载平衡设施之间的报文交互过程
后果剖析
TCP握手过程:
因为采纳了4层SLB,所以在TCP握手过程中与上述的7层SLB有些不同,当Client和RS实现三次握手之后,此时负载平衡设施会间接抉择RS,而后跟RS建设TCP三次握手;
在三角模式环境中,因为RS的Loopback口和负载平衡设施上都存在着VIP地址172.16.75.84,当负载平衡设施通过负载平衡算法抉择出对应的RS后,会依据理论配置的RS的IP地址对应的mac地址,将报文以目标mac为RS,目标IP为VIP的形式建设TCP连贯。
HTTP报文交互过程:
首先Client向负载平衡设施的VIP发送HTTP申请,源为10.8.21.40,当负载平衡设施收到报文后,将报文间接转发给RS,当RS收到源IP为10.8.21.40,目标IP为本地Loopback口IP地址172.16.75.84的报文后,间接将报文回复给10.8.21.40,同样源为IP地址172.16.75.84,由此拜访服务器胜利。
在三角模式中,因为回复报文负载平衡设施不做任何解决,所以非常适合于RS到Client方向流量较大或者连贯数目较多的组网环境。
采纳三角模式时,必须留神RS有路由能够达到Client,并且在RS的Loopback接口上必须有负载平衡设施的VIP地址,否则即便RS设施收到Client的申请报文也会间接抛弃报文,不作回应。
六、总结
因为反向代理模式中在RS侧只能收到源为负载平衡设施IP的报文,因而能够应用防火墙减少安全性,只容许源IP为负载平衡设施的IP地址的报文通过,同时减少X-Forwarded-For字段也能够让RS只容许有此字段的报文进行拜访,因而安全性绝对较高。
_作者:蹦蹦啪
链接:https://www.zhihu.com/questio...