具有多个应用程序和端口的 GCP 负载均衡器

lva*_*dyk 4 google-cloud-platform

我正在努力让负载平衡器与多个应用程序一起工作。我的设置:

Applications: Web1 (Port 10000), Web2 (Port 11000), Web3 (Port 12000)
Servers: Serv1, Serv2, Serv3.
Run Code Online (Sandbox Code Playgroud)

所有服务器都是相同的,Web1、Web2 和 Web3 分别监听端口:10000、11000、12000。

我如何指示负载平衡器执行以下操作:

web1.domain.com -----> use Serv1,Serv2,Serv3 port 10000. 
web2.domain.com -----> use Serv1,Serv2,Serv3 port 11000. 
web3.domain.com -----> use Serv1,Serv2,Serv3 port 12000.
Run Code Online (Sandbox Code Playgroud)

我设法让它与 1 个应用程序一起工作,但我无法创建 3 个负载均衡器,因为服务器已经属于不同的实例组。

我已经阅读了端口名称映射,但负载均衡器一直忽略它们并使用自己生成的名为“http”的映射。

有没有人遇到过类似的问题?

Gon*_*nço 7

如果您将这三个不同的后端端口设置为包含这三个服务器的实例组中的命名端口,则此设置应该有效。我已经试过了,设置了一个监听三个不同端口的 Apache 网络服务器,它工作正常。

以下是我为使您所描述的设置正常工作而采取的步骤:

  1. 我将三个不同的服务器放在一个实例组中;
  2. 在该实例组中,我将应用程序使用的端口添加为命名端口。使用gcloud,尝试运行以下命令:gcloud compute instance-groups set-named-ports "NAME_OF_INSTANCE_GROUP" --zone "INSTANCE_GROUP_ZONE" --named-ports "port0:10000,port1:11000,port2:12000";
  3. 从同一个实例组创建三个不同的后端,每个端口一个。确保它们都使用不同的命名端口。使用gcloud,确保将--port-name参数设置为实例组的命名端口之一;
  4. 在您要创建的负载均衡器中,除了默认规则之外,还定义了两个“主机和路径规则”(URL 映射)。这些附加规则应该匹配您提到的三个主机名之一的请求,应该匹配该主机的所有路径,并且应该指向正确的后端。例如,这些规则之一应该类似于“Host: web2.domain.com, Path: /*, Backend: backend_using_port1”;
  5. 前端可以是你想要的任何东西,我几乎保留了默认设置。

按照这些步骤,我得到了一个负载均衡器,它能够通过三个不同的端口访问同一个实例组,只需使用三个不同的 DNS 主机名。

请注意,这种设置有一些重要的限制,更相关的限制是:

  • 两个后端必须使用相同的平衡模式,UTILIZATION 或 RATE。
  • 您可以同时使用 maxRatePerInstance 和 maxRatePerGroup。可以将一个后端设置为使用 maxRatePerInstance,将另一个设置为 maxRatePerGroup。
  • 如果您的实例组分别为多个后端服务两个或多个端口,则您必须在实例组中指定不同的端口名称。

最后,您可以使用 curl 测试此设置:

curl --resolve "web3.domain.com:FRONTEND_PORT:PUBLIC_IP_OF_LB" http://web3.domain.com/
Run Code Online (Sandbox Code Playgroud)