Google Cloud LoadBalancer无法使用LB和支持的实例之间的tcp连接映射客户端和LB之间的tcp连接

时间:2016-06-13 12:04:36

标签: google-app-engine load-balancing google-compute-engine google-cloud-endpoints google-cloud-platform

我在应用程序的性能测试期间发现了一个问题。 问题是LoadBalancer无法使用LB和支持的实例之间的tcp连接映射客户端和LB之间的tcp连接。

当客户端第一次发送http请求时,LB会打开与支持的实例的新TCP连接,但是当同一客户端发送另一个http请求时,LB也会创建与后端实例的新TCP连接。 当我们执行直接从客户端向后端实例发送请求的相同场景时,将重用相同的tcp连接。

我们对支持的实例上每个进程的开放TCP连接有限制,因此我们想知道以下内容。

  1. 为什么LB在向备用服务器发送请求及其配置位置时使用ip范围?

  2. LB如何使用后端TCP连接映射客户端TCP连接? 如果没有映射,那么LB强加的开放tcp连接的限制是什么。

  3. 在被支持的实例重置连接的情况下,LB返回的响应代码是什么?

  4. 如果备用服务器的SYN积压队列已满,LB返回的响应代码是什么。

1 个答案:

答案 0 :(得分:2)

  1. 客户端请求由一组负载均衡器处理,这就是为什么在处理来自客户端的请求流时您会看到直接连接主机的更改。

  2. 来自客户端IP的流量将由全局负载均衡器池的子集处理,但是根据您的问题的声音,即使该子集最终实际上太大而不能导致高后端TCP连接重用。负载均衡器有一些隐藏参数会影响为后端创建的连接数以及负载均衡器可以使用现有连接来处理新请求的情况。这些内部参数将来可能会发生变化,以减少负载均衡器和后端之间所需的TCP连接数。在此之前,在后端允许更多连接以及在这些连接上更加慷慨的超时应该增加后端连接重用。

  3. 通过客户端IP或生成的cookie启用会话关联性将导致LB在处理来自客户端的流量时使用特定的后端,但您仍将看到来自多个LB IP的流量。在没有会话亲和性的情况下,客户端ips和使用的后端VM之间实际上没有映射。有关如何启用会话关联的说明,请参阅:https://cloud.google.com/compute/docs/load-balancing/http/#session_affinity

    1. 如果无法从后端获得响应,LB将回复502响应代码。

    2. 负载均衡器会将后端视为对其他可用健康后端的不健康和直接流量。如果没有健康的后端,负载均衡器将在超时后回复502.