Azure 为什么不在我的后端池中的计算机会获得流量?

Azure 为什么不在我的后端池中的计算机会获得流量?,azure,azure-application-gateway,Azure,Azure Application Gateway,这是设置。我有一个配置了两个后端池的应用程序网关: BAP 1:VMs 1、2、3 BAP 2:VM 1 我有两个听众: 监听器1:web1.mysite.com 监听器2:web2.mysite.com HTTP设置: 设置1:HTTPS 设置2:HTTPS 我有两条规则: 网站1:映射到BAP 1、侦听器1、设置1 网站2:映射到BAP 2、侦听器2、设置2 我希望所有对网站2(web2.mysite.com)的请求只转到vm1(通过规则映射)。我的设置似乎反映了这一点 但我在所有三个虚拟机

这是设置。我有一个配置了两个后端池的应用程序网关:
BAP 1:VMs 1、2、3
BAP 2:VM 1

我有两个听众:
监听器1:web1.mysite.com
监听器2:web2.mysite.com

HTTP设置:
设置1:HTTPS
设置2:HTTPS

我有两条规则:
网站1:映射到BAP 1、侦听器1、设置1
网站2:映射到BAP 2、侦听器2、设置2

我希望所有对网站2(web2.mysite.com)的请求只转到vm1(通过规则映射)。我的设置似乎反映了这一点

但我在所有三个虚拟机上的网站2的IIS日志中都看到了流量。这怎么可能?我尝试了非重叠池(即池1仅包含VM2和VM3,池2仅包含VM1),但在访问web2.mysite.com时,我仍然会获得所有三台计算机的流量

我的后端运行状况显示VM 1、2、3对于HTTP设置1是正常的,VM 1对于HTTP设置2是正常的。这正是我所期望的。没有不健康的探测。在VMs 2和VMs 3上,我特意设置了web2.mysite.com,并确保运行状况探测中指定的文件不存在(即,如果运行状况探测正在查看VMs 2和VMs 3,则应使运行状况探测认为站点已关闭,而不应如此)

我的想法是有某种处理问题的顺序,但我在其他方面无所适从

提前谢谢你

我希望发生的是所有对网站2的请求 (web2.mysite.com)只转到VM 1(通过规则映射)

是否要将所有请求传输到网站2到VM1,以及其他请求传输到网站1到VM2,3

为了更有效地解决此问题,请显示有关应用程序网关设置的更多信息

以下是我的应用程序网关设置(web1在端口80上侦听,web2在端口8080上侦听):
后端池设置

Name              Target
backend1          server1
backend2          server2
Http设置

Name     Port     Protocol          
web1     80       HTTP
web2     8080     HTTP
Name       Protocol     Port    Associated Rule
web1       HTTP          80      rule1
web2       HTTP          8080    rule2
Name        Type      Listener
rule1       Basic     web1
rule2       Basic     web2
侦听器设置

Name     Port     Protocol          
web1     80       HTTP
web2     8080     HTTP
Name       Protocol     Port    Associated Rule
web1       HTTP          80      rule1
web2       HTTP          8080    rule2
Name        Type      Listener
rule1       Basic     web1
rule2       Basic     web2
规则设置

Name     Port     Protocol          
web1     80       HTTP
web2     8080     HTTP
Name       Protocol     Port    Associated Rule
web1       HTTP          80      rule1
web2       HTTP          8080    rule2
Name        Type      Listener
rule1       Basic     web1
rule2       Basic     web2
通过这种方式,我可以将所有到web1的请求传输到服务器1,将其他到web2的请求传输到服务器2:



有关Azure Application gateway的更多信息,请参阅此部分。

您描述它的方式是正确的。唯一的区别是我希望所有流量都在端口80上,集群中的虚拟机比您多。如果可能的话,我希望网站2的所有流量都能转到VM 1,其他所有流量都能转到VM 1、2和3。我已经阅读了Azure AG文档,但没有发现我的设置无法正常工作的任何原因。不,我不认为应用程序网关可以以这种方式工作,因为在您的场景中,所有具有相同公共IP地址和相同端口的请求,所有流量都将默认转到规则1。默认情况下?但是为什么呢?我设置的规则指示它根据主机名执行其他操作。如果所有请求都路由到规则1,那么为什么还要允许我指定规则?这似乎有点可笑,但如果是这样的话,那么知道这一点就好了(因为它没有写在任何地方)。有什么解决方法吗?作为一种解决方法,也许我们可以修改website2的端口,这样,我们可以使用新端口访问此网站。鉴于这是一个消费者网站,我不能要求用户键入其他端口号。我想我会探索一些其他的解决方法。奇怪的是,我可以用一些诡计来解决这个问题。如果我通过删除health probe文件(有效地使后端池1成为一个1节点集群)来关闭VMs 2和VMs 3,那么web站点2的所有功能都可以正常工作。换句话说,削弱后端池1使后端池2以某种方式工作。这向我表明azure以某种方式将web站点2调用路由到错误的后端池。当我把另外两个虚拟机带回来时,它又开始失败了。