我正在努力让负载均衡器与多个应用程序一起工作 . 我的设置:
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个负载 balancer 器,因为服务器已经属于不同的实例组 .
我已经阅读了有关端口名称映射的内容,但负载均衡器一直忽略这些并使用自己生成的名为“http”的负载均衡器 .
有没有人遇到过类似的问题?
1 回答
如果在包含这三个服务器的实例组中将这三个不同的后端端口设置为命名端口,则此设置应该有效 . 我试了一下,设置了一个监听三个不同端口的Apache网络服务器,它运行起来了 .
这是我采取的步骤,如你所描述的那样正常工作:
我在一个实例组中放了三个不同的服务器;
在该实例组中,我将应用程序使用的端口添加为命名端口 . 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"
;从同一实例组创建三个不同的后端,每个端口一个 . 确保他们都使用不同的命名端口 . Using gcloud,确保将
--port-name
参数设置为实例组的其中一个命名端口;在要创建的负载均衡器中,定义除默认值之外的两个"Host and Path rules"(URL映射) . 这些附加规则应该匹配您提到的三个主机名之一的请求,应该匹配该主机的所有路径,并且应该指向正确的后端 . 因此,例如,其中一条规则应该像"Host: web2.domain.com, Path: /*, Backend: backend_using_port1";
前端可以是你想要的任何东西,我几乎离开了默认设置 .
按照这些步骤,我得到了一个负载均衡器,它能够使用三个不同的DNS主机名到达三个不同端口中的同一个实例组 .
请注意,这种设置有important restrictions,更相关的限制是:
最后,您可以使用curl测试此设置: