我正在努力让负载均衡器与多个应用程序一起使用。我的设置:
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”的内容。
有没有人遇到类似问题?
答案 0 :(得分:4)
如果在包含这三个服务器的实例组中将这三个不同的后端端口设置为命名端口,则此设置应该有效。我试了一下,设置了一个在三个不同端口上监听的Apache网络服务器,它运行良好。
以下是我采取的步骤,以便设置一个与您正在描述的工作正确相符的设置:
gcloud
,尝试运行此命令:gcloud compute instance-groups set-named-ports "NAME_OF_INSTANCE_GROUP" --zone "INSTANCE_GROUP_ZONE" --named-ports "port0:10000,port1:11000,port2:12000"
; gcloud
,确保将--port-name
参数设置为实例组的其中一个命名端口; 按照这些步骤,我得到了一个负载均衡器,它能够使用三个不同的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/