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

时间:2018-05-04 08:08:12

标签: google-cloud-platform

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

Applications: Web1 (Port 10000), Web2 (Port 11000), Web3 (Port 12000)
Servers: Serv1, Serv2, Serv3.

所有服务器都是相同的,并且在端口上监听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.

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

我已经阅读了有关端口名称映射的内容,但负载均衡器会不断忽略这些内容并使用自己生成的名为“http”的内容。

有没有人遇到类似问题?

1 个答案:

答案 0 :(得分:4)

如果在包含这三个服务器的实例组中将这三个不同的后端端口设置为命名端口,则此设置应该有效。我试了一下,设置了一个在三个不同端口上监听的Apache网络服务器,它运行良好。

以下是我采取的步骤,以便设置一个与您正在描述的工作正确相符的设置:

  1. 我在一个实例组中放置了三个不同的服务器;
  2. 在该实例组中,我将应用程序使用的端口添加为命名端口。 Using 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. 从同一个实例组创建三个不同的后端,每个端口一个。确保他们都使用不同的命名端口。 Using gcloud,确保将--port-name参数设置为实例组的其中一个命名端口;
  4. 在您要创建的负载均衡器中,定义两个"主机和路径规则" (URL地图)除了默认值之外。这些附加规则应该与您提到的三个主机名之一的请求匹配,应该匹配该主机的所有路径,并且应该指向正确的后端。例如,其中一条规则应该像#34;主机:web2.domain.com,路径:/ *,后端:backend_using_port1&#34 ;;
  5. 前端可以是你想要的任何东西,我几乎都离开了默认设置。
  6. 按照这些步骤,我得到了一个负载均衡器,它能够使用三个不同的DNS主机名到达三个不同端口中的同一个实例组。

    请注意,此类设置有important restrictions,其中包含更多相关限制:

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

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

    curl --resolve "web3.domain.com:FRONTEND_PORT:PUBLIC_IP_OF_LB" http://web3.domain.com/