1。SLB产生的背景SLB(serverloadbalancing):在多台服务器提供相同服务的情况下,负载均衡设备有一个虚拟的服务地址。当大量客户端从外部访问虚拟服务IP地址时,负载均衡设备根据负载均衡算法将这些报文请求均衡的分发到后台服务器,以均衡各服务器的负载压力,避免其他服务器压力小的时候服务。达到性能临界点时出现运行缓慢甚至停机,从而提高服务效率和质量。因此,对于客户端来说,RS(realserver)的IP地址就是负载均衡设备的VIP(virtualserviceaddressIP)地址,RSserver的真实IP地址对客户端是不可见的。2、SLB的三种传输模式七层SLB和四层SLB的区别:四层SLB:在负载均衡设备上配置服务类型为tcp/udp,负载均衡设备只会解析到四层,并且负载均衡设备和client会进行3次握手后,与RS建立连接;七层SLB:配置负载均衡设备的服务类型为http/ftp/https等,负载均衡设备将报文解析到七层。负载均衡设备与客户端三次握手后,只直到接收到相应的七层消息后,才会建立与RS的接收A连接。在负载均衡设备中,SLB主要工作在以下三种传输模式:反向代理模式透明传输模式三角模式根据模式的不同,负载均衡设备的工作方式不同,但无论是哪种模式,由其发起的请求报文客户端总是需要到达负载均衡设备进行处理,这是负载均衡设备正常工作的前提。模拟网络拓扑环境:Client:10.8.21.40负载均衡设备:172.16.75.83VIP:172.16.75.84RS1IP:172.16.75.82RS2IP:172.16.75.85在整个报文交互过程中,在RS和Client分别使用Tcpdump和Wireshark抓取数据包,然后使用Wireshark分析数据包。3、反向代理模式反向代理:普通代理设备允许内网用户通过代理设备访问外网,而工作在这种模式下的负载均衡设备允许外网用户通过代理设备访问内网。因此,它被称为反向代理。在反向代理模式下:当负载均衡设备收到客户端请求时,会记录数据包(源IP地址、目的IP地址、协议号、源端口、目的端口、服务类型、接口索引),以及目的地址报文的IP地址改为优化后的RS设备的IP地址,目的端口号不变,源地址改为负载均衡设备与对应RS设备接口的IP地址,源端口号随机发送给RS;当RS收到报文后,源会是RS接口IP地址,目的IP设备地址会回复给负载均衡设备。负载均衡设备会将源端改为VIP,目的端口号改为客户端的源端口号,目的IP为客户端的源端。IP回复消息。查看报文分析结果:配置完成后,Client访问RS服务器,返回成功。整个消息交互过程如下:Client与负载均衡设备的消息交互过程RS与负载均衡设备的消息交互过程分析分析整个消息交互过程:TCP握手过程:首先,Client向负载均衡设备发送TCPSYN报文,请求建立连接。源IP为Client的IP10.8.21.40,源端口号为50894,目的IP为VIP地址172.16.75.84。目的端口号为80;负载均衡设备收到请求报文后,会回复SYNACK报文,源IP为VIP地址172.16.75.84,端口号80,目的IP10.8.21.40,目的端口号50894;消息后回复ACK消息,TCP三次握手成功。HTTP报文交互过程:负载均衡设备和客户端完成三次握手后,由于配置了七层SLB,如果收到HTTP请求,会根据负载均衡算法和服务器的健康状态(在此过程中选择的RS设备为172.16.75.82),然后与RS建立TCP连接:负载均衡设备发送TCPSYN报文请求连接,源IP为IP172.16。负载均衡设备与RS连接接口的75.83,源端口号随机4574,目的IP为RS的IP172.16.75.82,目的端口号为80;RS收到报文后回复SYNACK报文,源IP172.16.75.82,端口号80,目的IP172.16.75.83,目的端口号4574,payloadbalancer设备回复ACK报文建立三次握手;之后,负载均衡器将接收到的HTTP报文的源IP修改为连接RS的下行接口IP地址172.16.75.83,源端口号为随机端口号,将报文发送给ToRS;RS收到报文后,使用源IP172.16.75.82和目的IP172.16.75.83回复,所以报文直接回复负载均衡设备;当负载均衡设备收到RS的响应报文后,最后将报文的来源改为VIP地址172.16.75.84,发回给目的IP为10.8.21.40的客户端,然后将目的端口号改为HTTP请求报文中的源端口号,服务器访问成功。从以上过程可以看出,在RS侧,客户端的真实IP地址被负载设备修改为与RS相连接口的IP地址,因此RS无法记录客户端的访问记录客户。要解决这个问题,可以使用HTTP消息头中加入X-Forwarded-For字段,本文不做介绍,可以自行查询。4.透传模式当负载均衡设备工作在透传模式时,RS无法感知到负载均衡设备的存在。对于Client,RS的IP地址就是负载均衡设备的VIP地址。在这种模式下,当负载均衡设备收到一条源为ClientIP、目的IP为本地VIP地址的报文时,会根据负载均衡策略和健康状态将报文发送给最优的RS设备,然后将RSdevice会收到目的地为本地IP,来源为Client实际IP的请求报文;那么RS会直接响应请求,报文的目的IP地址为Client的IP地址。当负载均衡设备收到这条消息后,将源IP地址修改为VIP地址,然后将数据包发送给Client。消息分析结果:RS端和Client端也抓取交互消息:Client与负载均衡设备的消息交互过程分析RS与负载均衡设备的消息交互过程:TCP握手过程:同反向代理模式交互流程HTTP报文交互流程:Client向源IP为10.8.21.40的负载均衡设备的VIP地址172.16.75.84发送HTTP请求。负载均衡设备收到报文后,进行TCP优化的RS三次握手,过程与反向代理模式相同,然后收到的HTTP报文不改变源IP地址和源/目的端口报文编号,只修改目的IP为首选RS地址172.16.75.82;当RS收到来自IP10.8.21.40的报文后,会回复报文到IP地址10.8.21.40。这时需要注意的是,RS上必须配置回复报文经过负载均衡设备,负载均衡设备会修改源IP。VIP地址为172.16.75.84,然后转发给客户端,否则客户端会收到源IP为172.16.75.82的HTTP报文,服务器访问失败。5、三角模式三角模式下,当客户端向负载设备发送请求时,负载均衡设备会计算出最优的RS,然后根据MAC地址直接将报文转发给RS,并配置源IPRS上消息的是VIP地址(一般配置在loopback端口),所以这种情况下,RS会直接把消息发给Client,即使回复消息经过了负载均衡设备,设备也会不做任何处理。由于整个过程中的报文传输路径类似于一个三角形,所以称为三角形模式。分别在Client端和RS端抓包分析结果,内容如下:Client与负载均衡设备的报文交互过程RS与负载均衡设备的报文交互过程结果分析deviceTCP握手过程:4层SLB,所以TCP握手过程与上述7层SLB有些不同。client与RS完成三次握手后,负载均衡设备会直接选择RS,然后与RS建立TCP三次握手;在三角模式环境75.84中,RS的Loopback端口和负载均衡设备上都存在VIP地址172.16.75.84。负载均衡设备通过负载均衡算法选择出对应的RS后,会使用实际配置的RS的IP地址对应的mac地址。建立TCP连接,目的mac为RS,目的IP为VIP。HTTP报文交互流程:首先Client向负载均衡设备的VIP发送HTTP请求,来源为10.8.21.40。负载均衡设备收到消息后,直接将消息转发给RS。RS收到源IP时是10.8.21.40,目的IP是本地环回端口IP地址为172.16.75.84的报文后,直接回复10.8.21.40,源也是IP地址172.16.75.84,从而成功访问服务器。在三角模式下,由于回复包负载均衡器不做任何处理,因此非常适合RS到Client方向流量大或连接数多的组网环境。使用三角模式时,必须注意RS有到达Client的路由,RS的Loopback接口必须有负载均衡设备的VIP地址。否则即使RS设备收到了Client的请求报文,也会直接丢弃该报文而不进行响应。.6、小结由于反向??代理模式下RS端只能接收源IP为负载均衡设备IP地址的报文,因此可以通过防火墙来增加安全性,只允许源IP为负载IP地址的报文通过平衡装置通过。同时,增加X-Forwarded-For字段也可以让RS只允许带有该字段的数据包访问,所以安全性比较高。
