各位老铁们,大家好,今天由我来为大家分享负载均衡与反向代理:彻底解析区别及应用,以及的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!
一、SLB 产生背景
SLB(服务器负载均衡):在多台服务器提供相同服务的情况下,负载均衡设备有一个虚拟服务地址。当大量客户端从外部访问虚拟服务IP地址时,负载均衡设备会根据负载均衡算法,将流量均匀分配到后端服务器,以平衡各服务器的负载压力,从而避免在服务器压力较小的情况下,其他服务达到性能临界点时运行缓慢甚至宕机,从而提高服务效率。和质量。
因此,对于客户端来说,RS(真实服务器)的IP地址就是负载均衡设备的VIP(虚拟服务地址IP)地址。真实的RS服务器IP地址对客户端来说是不可见的。
[[342503]]
二、SLB 的三种传输模式
七层SLB和四层SLB的区别:
四层SLB:负载均衡设备上的服务类型配置为tcp/udp。负载均衡设备只会解析到第4层。负载均衡设备与客户端三次握手后才会与RS建立连接;
七层负载均衡:配置负载均衡设备的服务类型为http/ftp/https等,负载均衡设备会将报文解析到七层。负载均衡设备与客户端三次握手后,只收到对应的七层报文。与RS 建立连接。
在负载均衡设备中,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进行报文分析。
三、 反向代理模式
反向代理:普通代理设备允许内网用户通过代理设备访问外网,而工作在该模式下的负载均衡设备则允许外网用户通过代理设备访问内网,所以称为反向代理。
反向代理模式下:
当负载均衡设备收到客户端请求时,会记录该报文(源IP地址、目的IP地址、协议号、源端口、目的端口、服务类型和接口索引),并将该报文的目的地址更改为首选之一。 RS设备的IP地址和目的端口号保持不变。将源地址修改为负载均衡设备下游接口和对应RS设备的IP地址。源端口号随机发送给RS;
RS收到消息后,会回复负载均衡设备,源为RS接口IP地址,目的IP设备地址。负载均衡设备将源更改为VIP,目的端口号更改为客户端的源端口号,目的IP。客户端源IP的回复消息。
查看消息解析结果:
配置完成后,Client访问RS服务器并返回成功。整个消息交互流程如下:
客户端与负载均衡设备的消息交互过程
RS与负载均衡设备之间的消息交互过程
结果分析
分析整个消息交互流程:
TCP握手过程:首先,Client向负载均衡设备发送TCP SYN报文,请求建立连接。源IP为Client的IP 10.8.21.40,源端口号为50894,目的IP为VIP地址172.16.75.84,目的端口号为80;
负载均衡设备收到请求报文后,会响应SYN ACK报文,源IP为VIP地址172.16.75.84,端口号为80,目的IP为10.8.21.40,目的端口号为50894;
Client收到消息后回复ACK消息,TCP三次握手成功。
HTTP报文交互流程:
负载均衡设备与客户端完成三向握手后,由于配置了七层负载均衡,如果收到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收到报文后回复SYN ACK报文,源IP为172.16.75.82,端口号为80,目的IP为172.16.75.83,目的端口号为4574。负载均衡设备回复ACK报文,建立三路握手;
之后,负载均衡设备将收到的HTTP报文的源IP更改为与RS连接的下行接口的IP地址172.16.75.83,源端口号为随机端口号,并将报文发送至RS RS; RS收到消息后,以源IP为本地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来说,RS的IP地址就是负载均衡设备的VIP地址。
该模式下,当负载均衡设备收到源IP为Client、目的IP为本地VIP地址的报文时,会根据负载均衡策略和健康状况将报文发送到最优的RS设备,然后RS设备会收到一条请求消息,目的地址是本地IP,源地址是Client的实际IP;
然后RS会直接响应这个请求。消息的目的IP地址是客户端的IP地址。负载均衡设备收到该消息后,将源IP地址更改为VIP地址,然后将该消息发送给Client。
消息解析结果:
同时捕获RS端和Client端的交互消息:
客户端与负载均衡设备的消息交互过程
RS与负载均衡设备之间的消息交互过程
结果分析:
TCP握手过程:与反向代理模式的交互过程
HTTP报文交互流程:
客户端向负载均衡设备的VIP 地址172.16.75.84 发送HTTP 请求,源IP 10.8.21.40。当负载均衡设备收到消息后,与优化后的RS进行TCP三向握手。流程与反向代理模式相同,然后对于收到的HTTP报文,报文的源IP地址和源/目的端口号不变,只是将目的IP修改为优化后的RS地址172.16.75.82 ;
五、 三角模式
消息解析结果
分别在Client端和RS端抓包,内容如下:
客户端与负载均衡设备的消息交互过程
RS与负载均衡设备之间的消息交互过程
结果分析
TCP握手过程:
由于采用4层SLB,TCP握手过程与上述7层SLB有些不同。 Client与RS完成三方握手后,负载均衡设备会直接选择RS,然后与RS建立TCP三方握手;
在三角模式环境下,由于RS和负载均衡设备的环回端口上都存在VIP地址172.16.75.84,因此当负载均衡设备通过负载均衡算法选择对应的RS时,就会对应到该IP地址实际配置的RS。报文的mac地址用于建立TCP连接,目的mac为RS,目的IP为VIP。
HTTP报文交互流程:
在三角模式下,由于负载均衡设备不对回复报文进行任何处理,因此非常适合RS到Client方向流量较大或连接数较多的组网环境。
使用三角模式时,必须注意RS有到达Client的路由,并且RS的Loopback接口必须有负载均衡设备的VIP地址。否则,即使RS设备收到了Client的请求报文,也会直接丢弃该报文而不进行响应。
六、总结
由于反向代理模式下,RS端只能接收源IP为负载均衡设备IP地址的报文,因此可以使用防火墙增加安全性,只允许源IP为负载均衡设备IP地址的报文通过负载均衡装置通过。同时,增加X-Forwarded-For字段也可以让RS只允许访问带有该字段的数据包,因此安全性比较高。
OK,关于负载均衡与反向代理:彻底解析区别及应用和的内容到此结束了,希望对大家有所帮助。
本文采摘于网络,不代表本站立场,转载联系作者并注明出处:https://www.iotsj.com//kuaixun/7708.html
用户评论
这个标题听起来挺专业的,终于可以弄明白这些高深莫测的技术了!
有20位网友表示赞同!
一直觉得负载均衡和反向代理很类似,这篇文章能让我更清楚它们的区别吗?
有6位网友表示赞同!
最近在学网络编程,负载均衡是必不可少的知识点,一定要好好理解一下原理。
有10位网友表示赞同!
对这些技术一直不太了解,期待文章能用通俗易懂的语言讲解。
有11位网友表示赞同!
我听说反向代理可以提高网站性能,这个原理真的这么神奇吗?
有12位网友表示赞同!
希望能解释清楚不同类型的负载均衡方案,比如轮询和一致性哈希。
有17位网友表示赞同!
想要知道负载均衡具体是如何分配请求的,这个文章应该能解答我的疑问!
有10位网友表示赞同!
学习一下这些技术对以后的技术发展很有帮助,期待好好阅读!
有10位网友表示赞同!
终于找到一篇解读负载均衡原理的文章了!我之前一直弄不明白它的工作机制。
有9位网友表示赞同!
反向代理在现实中有哪些应用场景呢?文章应该会有详细的介绍吧?
有17位网友表示赞同!
如果网站流量很大的话,负载均衡真的很重要吗?文章能举例说明吗?
有19位网友表示赞同!
对程序员来说了解这些技术的原理真的很有必要。
有5位网友表示赞同!
感觉标题很吸引人,好像能一下子就明白负载均衡和反向代理的区别!
有11位网友表示赞同!
我已经收藏了这篇文章,等我有时间再深入学习!
有11位网友表示赞同!
现在很多网站都在使用这些技术,希望能更清楚地了解他们的作用。
有12位网友表示赞同!
文章应该能涵盖常见的负载均衡设备和配置方法吧?
有20位网友表示赞同!
这个标题很有深度,期待文章能全面地介绍负载均衡的复杂性!
有17位网友表示赞同!
我想知道负荷均衡的实现方式有哪些不同的方案?
有17位网友表示赞同!
学习这些技术可以让我更了解网络安全方面的知识。
有20位网友表示赞同!