负载均衡的三种传输模式
在说之前我们先了解下什么说负载均衡,以下是我在百度文科上找到的解释。
负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
负载均衡(Load Balance)其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。
谁实话对于Java出生的我来说感觉有点宽泛了;我所接触的负载均衡有 硬件层的F5 软件层如nginx ;
三种传输模式有方向代理模式,透视模式,和 三角模式
反向代理模式
当负载均衡设备收到客户端请求后,会记录下此报文( 源IP地址、目的IP地址、协议号、源端口、目的端口,服务类型以及接口索引),将报文目的地址更改为优选后的RS设备的IP地址,目的端口号不变,源地址修改为负载均衡设备下行与对应RS设备接口的IP地址,源端口号随机发送给RS;当RS收到报文后,会以源为RS接口IP地址,目的IP设备地址回复给负载均衡设备,负载均衡设备将源修改为VIP,目的端口号修改为客户端的源端口号,目的IP修改为Client的源IP回复报文。
总结:即SLB(负载均衡服务器)和RS(实际服务器)都会使用本身的IP来替换请求里面的client(客户端)IP
透视模式
总结:即SLB(负载均衡服务器)不会使用自身的IP来替换client(客户端)IP,所以RS拿到的IP是客户端的真实IP,RS返回给SLB之后,SLB会使用自身IP来替换RS的IP,所以客户端拿到的IP并不是RS的真实IP,而是负载均衡的IP
在三角模式下,当客户端发送请求到负载设备上时,负载均衡设备会计算出最优RS,然后直接根据MAC地址将报文转发给RS,在RS上配置报文的源IP为VIP地址(一般配置在loopback口上),因此在这种情况下,RS会直接将报文发送给Client,即使回复报文经过负载均衡设备,此设备不做任何处理。由于报文在整个过程中传输途径类似于三角形,因此称之为三角模式。
注意:在三角模式环境中,由于RS的Loopback口和负载均衡设备上存在着相同的VIP地址(个人理解:因为A服务器发送给B,B服务器又转给C,C直接回复A,A是不会认的,所以要C和B一样,A才会认),当负载均衡设备经过负载均衡算法选择出对应的RS后,会根据实际配置的RS的IP地址对应的mac地址,将报文以目的mac为RS,目的IP为VIP的方式建立TCP连接。
总结:与透传模式类似,不同的是RS返回的时候不经过SLB(即使经过SLB也不做任何处理),而是直接返回给Client.所以通讯过程类似于一个三角形。
总结
由于反向代理模式中在RS侧只能收到源为负载均衡设备IP的报文,因此可以使用防火墙增加安全性,只允许源IP为负载均衡设备的IP地址的报文通过,同时增加X-Forwarded-For字段也可以让RS只允许有此字段的报文进行访问,因此安全性相对较高。