GCP 中的网络和 HTTP(s) 负载平衡器有啥区别

Posted

技术标签:

【中文标题】GCP 中的网络和 HTTP(s) 负载平衡器有啥区别【英文标题】:What are the differences between Network and HTTP(s) load balancer in GCPGCP 中的网络和 HTTP(s) 负载平衡器有什么区别 【发布时间】:2017-05-22 23:01:00 【问题描述】:

GCP 提供了两个负载均衡器,即 NetworkHTTP(s),前者在 第 4 层 上工作,后者在 上工作>第 7 层

还有一个文档指出,即使是 HTTP 流量也可以通过网络负载平衡器进行负载平衡。这会稍微混淆为 GCP 中的 Web 应用程序选择哪个负载均衡器。在为项目选择一个之前,最好了解其中的差异。

根据工作流程设置区域/区域会话亲和性选项,它们之间有什么区别 和其他设置?

【问题讨论】:

我不明白反对意见。这个问题是不是太宽泛了?网络与 HTTP (s)。我想不出比这更直接的问题了。此外,*** 中没有相同问题的重复项。 我在这里看不到问题。问号在哪里? 【参考方案1】:

一般来说,以下是网络负载平衡器和 Http 负载平衡器之间的区别。

网络负载均衡器(第 4 层): 这是基于网络变量(例如 IP 地址和目标端口)的流量分配。它是第 4 层 (TCP) 及以下,不考虑应用层的任何内容,例如内容类型、cookie 数据、自定义标头、用户位置或应用程序行为。它是无上下文的,只关心它以这种方式和那个方式引导的数据包中包含的网络层信息。

应用负载平衡器(第 7 层) 这是基于多个变量的请求分布,从网络层到应用层。它是上下文感知的,可以根据任何单个变量直接请求,就像它可以变量组合一样容易。应用程序根据其特殊行为进行负载平衡,而不仅仅是服务器(操作系统或虚拟化层)信息。提供基于规则、基于主机或基于路径的 HTTP 和 HTTPS 流量路由的能力。与 NLB 一样,每个 Target 可以位于不同的端口上。

两者之间的另一个区别很重要,因为网络负载平衡不能保证应用程序的可用性。这是因为它的决策仅基于网络和 TCP 层变量,根本不了解应用程序。通常,网络负载平衡器将根据服务器响应 ICMP ping 或正确完成三向 TCP 握手的能力来确定“可用性”。应用负载均衡器更深入,不仅能够根据特定页面的成功 HTTP GET 确定可用性,还能够根据输入参数验证内容是否符合预期。

参考:https://medium.com/awesome-cloud/aws-difference-between-application-load-balancer-and-network-load-balancer-cb8b6cd296a4

【讨论】:

【参考方案2】:

另外,我想提一下在 GCP 中选择正确的负载均衡器 (LB) 时需要考虑 3 main aspects:

1) 全球与区域 2) 外部与内部 3) 流量类型

请同时查找有关此chart 的更多信息。

【讨论】:

【参考方案3】:

网络负载平衡器与 HTTP(s) 负载平衡器

+---------------------+------------------------------------------+------------------------------------------------------+
|       Category      |       Network Load Balancing (NLB)       |             HTTP(S) Load Balancing (HLB)             |
+---------------------+------------------------------------------+------------------------------------------------------+
|     1. Region /     | NLB supports only within a region.       | HLB supports both within cross-region                |
|     Cross-Region    | Does not support cross-region            | load balancing.                                      |
|                     | load balancing                           |                                                      |
+---------------------+------------------------------------------+------------------------------------------------------+
|  2. Load balancing  | NLB is based on IP address, port         | HLB is based only on HTTP and HTTPS                  |
|       based on      | and protocol type. Any TCP/UDP           | protocols.                                           |
|                     | traffic, even SMTP can be                |                                                      |
|                     | load balanced.                           |                                                      |
+---------------------+------------------------------------------+------------------------------------------------------+
|      3. Packet      | Packet inspection is possible and        | HLB cannot inspect packets.                          |
|      inspection     | load balance based on packets            |                                                      |
+---------------------+------------------------------------------+------------------------------------------------------+
|     4. Instance     | No need of creating instance group.      | Managed / UnManaged Instance group                   |
|         Group       | Target pools need to be created.         | is necessary for creating HTTP / HTTPS               |
|                     | Instance can be just tagged to the pool. | load balancer.                                       |
|                     | Ideal for unmanaged instance group       |                                                      |
|                     | where instances are non homogeneous.     |                                                      |
+---------------------+------------------------------------------+------------------------------------------------------+
|     5. Workflow     | Forwarding rules is the starting point.  | This is quite complex in HTTP(s) load balancer.      |
|                     | It directs the request to the            | Global forwarding rulesroutes direct the request     |
|                     | target pools from which compute          | to target HTTP proxy, which in turn checks the       |
|                     | engines will pick the request.           | URL map to determine appropriate backend             |
|                     |                                          | services.  These services in turn direct the request |
|                     | Forwarding rules -> target pool          | to the instance group.                               |
|                     |  -> instances                            |                                                      |
|                     |                                          |                                                      |
|                     |                                          | Global forwarding rules -> Target HTTP proxy ->      |
|                     |                                          | URL map -> Backend Sevices -> instance group         |
+---------------------+------------------------------------------+------------------------------------------------------+
|     6. Types of     | Basic network load balancer which        | 1. Cross-region load balancer uses only one          |
|    load balancer    | directs the request based on IP address, | global IP address and routes the request             |
|                     | port and the protocol within the region. | to the nearest region.                               |
|                     |                                          |                                                      |
|                     |                                          | 2. Content-based load balancer is based              |
|                     |                                          | on the URL path. Different path rules need           |
|                     |                                          | different backend services. for eg: /video           |
|                     |                                          | and /static require two separate backend services.   |
+---------------------+------------------------------------------+------------------------------------------------------+
| 7. Session affinity | Session affinity can be set, but only    | 1. Client IP Affinity: This directs the same         |
|                     | during the creation of target pool.      | client ip to same backend instance by                |
|                     | Once it is set, the value                | computing hash of the IP.                            |
|                     | cannot be changed.                       | 2. Generated Cookie Affinity: Load balancer stores   |
|                     |                                          | cookie in clients and directs the same client to     |
|                     |                                          | same instance with the help of retrieved cookie.     |
+---------------------+------------------------------------------+------------------------------------------------------+
|   8. Health check   | Health check is optional, but network    | Health can be verified by either using HTTP          |
|                     | load balancing relies on HTTP Health     | heath check or HTTPS health check.                   |
|                     | checks for determining instance health.  |                                                      |
+---------------------+------------------------------------------+------------------------------------------------------+

上表是基于我的观点。如果有任何不正确或我遗漏了什么,请随时发表评论,我会将其添加到表格中。

这里是link,了解有关在 GCP 中设置 HTTP 负载平衡器的说明。

【讨论】:

以上是关于GCP 中的网络和 HTTP(s) 负载平衡器有啥区别的主要内容,如果未能解决你的问题,请参考以下文章

terraform GCP https) 负载均衡器

在GCP负载均衡器后面设置自动缩放弹性搜索

错误 HTTP 状态 405 ?使用 GCP 负载平衡器时不允许的方法

为 App Engine 负载平衡器创建后端服务

如何在 GCP 上的 TCP 负载均衡器上获取当前连接数

同一区域中的 GCP 虚拟机无法 Ping 使用 GKE 内部 LB 入口创建的内部 HTTPS 负载均衡器 IP