每个负载均衡器都是反向代理,但并非每个反向代理都必须是负载均衡器。
0*GFvXmdPz97bwF8vU.jpeg
问题: OSI模型是什么样的?
1*JzMQUxqHiATuQlIgyIv-xQ.png
问题: 负载均衡器的需求是什么?
答案 → 为了创建一个容错系统,使得当客户端向负载均衡器发出请求时,它可以与一个或多个后端进行通信。
1*vOM1JBF5eew1kBUQqVn1Ag.png
问题: 解释一下第4层负载均衡器是如何工作的?
答案 → 第4层负载均衡器的工作原理如下:
1.) 握手 → 第4层负载均衡器首先与后端服务器建立TCP连接。
2.) 预热 → 负载均衡器可以与后端建立多个基于TCP的连接,然后保持这些连接处于活动状态。这是为了确保每当客户端连接到负载均衡器时,它不必每次都经历连接预热过程。
1*PPN7ZcFLD0Dq3tcC3MR0fA.png
3.) 客户端连接 → 当客户端连接到第4层负载均衡器时,该连接将在负载均衡器级别具有状态,并将映射到后端服务器的任何一个连接。因此,第4层负载均衡器是有状态的。
•第4层负载均衡器只处理端口和IP地址。•数据被分段,但它不能简单地触摸数据或解析数据。•客户端发送到第4层负载均衡器的所有数据段都将最终发送到某个服务器上的一个专用连接。•如果客户端向第4层负载均衡器发送一些数据,它不能只将一个段发送到一个服务器,然后将另一个段发送到另一个服务器,因为数据将会损坏,一切都会变得糟糕。
1*2M-ThbnSszHWodd2Qnin3Q.png
问题: 第4层负载均衡器是否也充当NAT层?
答案 → 是的,第4层负载均衡器充当客户端的NAT层/网关/路由器。
•请求 → 在与后端建立全新的TCP连接时,负载均衡器更改目标IP地址。客户端完全不知道这个概念。
1*OL1bja_6TdX_lNwM3lFNRA.png
•响应 → 第4层负载均衡器知道,从应用连接接收到的任何内容都必须发送回带有原始客户端的这个连接。这是负载均衡器保持的映射表。
1*81o1qzX_AnXojJRpTR6prQ.png
问题: 演示从客户端到后端的基于Http的调用(Restful API调用)的例子?
答案 → 想象一下客户端向负载均衡器发送Http调用。还想象一下,这个特定的请求被分为2个段。
步骤 #1.) 请求到达负载均衡器,然后负载均衡器选择将此请求的所有段发送到某个后端服务器。
1*Fg2wFQjAtgnFXywBSN3jAg.png
步骤 #2.) 现在,假设客户端发送的是另一个段(段#3),然后将其写回同一连接。
•在这个第4层负载均衡器上没有缓冲。它只是读取并转发数据段。•第4层负载均衡器不知道HTTP。它只知道和理解TCP。传递到这个第4层负载均衡器的所有数据(无论是基于gRPC的请求还是基于套接字的连接),它都将所有这些数据视为数据段。•但是,根据客户端端的MTU和后端服务器端的MTU,负载均衡器可能会执行某种优化。它可能仅仅接收段并将该段进一步细分为多个段,反之亦然。TCP始终会尝试挤取尽可能多的性能。
1*yA7r51LdP1-YoYgsVDqIAg.png
步骤 #3.) 现在,假设同一客户端在同一连接上发起了另一个请求,那么该请求也将首先被读取,然后写回后端服务器。
步骤 #4.) 现在,假设有一位不同的客户端发起了另一个请求,然后根据负载均衡算法,该请求可能会转发到另一个后端服务器。
1*UHpCTVNkx7ynLlWrG-UMBA.png
问题: 提供L4负载均衡器的公司有哪些?
答案 → 像Radware和F5-BigIp等公司提供L4负载均衡器。
问题: L4负载均衡器的优缺点是什么?
1.) 以下是L4 LB的优点:
•这是一种简单的负载均衡策略。它只是不读取第7层的内容。•它更安全,因为它不从L7读取数据。•它与任何协议一起工作。它对协议是不可知的。
2.) 以下是L4 LB的缺点:
•它不聪明,不能与微服务一起工作。这是有粘性连接的。每个连接都没有负载均衡。尽管我们可以配置IP和端口组合,但在生产系统中不建议这样做。•如果客户端发送POST请求或发送GET请求或发送PATCH请求,L4负载均衡器对此一无所知。它只看到这些请求作为进来的数据段。•它不能支持缓存,因为它不知道要缓存什么,因为它无法读取L7层中的数据。•在L4 LB上,我们无法执行任何类似于"阻止某些用户"、"阻止某些标头"、"阻止某些身份验证方法"的操作。
1*JJurzdYjlzANK_QaLqOdwA.png
问题: 解释第7层负载均衡器是如何工作的?
答案 → 第7层负载均衡器的工作原理如下:
1.) 握手 → 第7层负载均衡器还与后端服务器建立TCP连接。
2.) 预热 → 负载均衡器可以与后端建立多个基于TCP的连接,然后保持这些连接处于活动状态。这是为了确保每当客户端连接到负载均衡器时,它不必每次都经历连接预热过程。
1*PPN7ZcFLD0Dq3tcC3MR0fA.png
3.) 客户端连接 → 当客户端连接到第7层负载均衡器时,该连接将成为特定于协议的。
•第7层负载均衡器需要理解发送到它的任何内容。•任何逻辑请求都将首先在L7-LB级别缓冲,理解它(即解密数据),解析它,然后决定将请求转发到后端服务器的其中一个。
1*zc1y_M1JUOv5tIlLaoaTdA.png
注意: 如果您希望L7 LB面向外部客户端,则:
•您的L7 LB必须具有存储在其上的证书,因为此L7 LB必须首先证明其身份。•L7 LB还必须解密数据。
问题: L7负载均衡器如何处理基于HTTP的请求?
步骤 #1.) 首先,它接收请求并将其发送到后端服务器1。
1*RCk7F963UHMyk1BbvcP8Pw.png
步骤 #2.) 接下来,假设同一客户端发送了另一个请求,然后L7 LB实际上也可以将其转发到其他后端服务器,因为L7 LB是无状态的。
问题: L7负载均衡器的优缺点是什么?
1.) 以下是L4 LB的优点:
•它提供智能的负载均衡策略。例如,如果请求是针对端点"/pictures"的,则可以将请求转发到特定的主机组,可能是Pictures微服务。•另一个例子,如果请求是针对端点GET"/comments"的,则可以将请求转发到特定的主机组,可能是评论微服务。•另一个例子,如果请求是针对端点POST"/comments"的,则它是写入密集型工作负载,那么可能转到另一个主机组,因为它具有专为此写入密集型工作负载设计的特定数据库。•因此,L7 LB非常适合微服务。•我们还可以在此L7负载均衡器上执行AuthN和AuthZ。•我们还可以缓存结果。
2.) 以下是L4 LB的缺点:
•它很昂贵,因为它要做更多的工作,比如缓冲数据,读取数据,解密数据,终止TLS连接。•它必须共享TLS证书。•它可能效率不高,实际上可能成为瓶颈,因为它正在缓冲大量数据并解析它。它可能会减慢速度。•它需要理解协议。