我们有大约 60 个客户端应用程序,每个应用程序都在一个公共域中拥有自己的子域 URL,即 client1.domainname.com、client2.domainname.com... - 所有这些都由一个通配符 SSL 证书 *.domainname.com 覆盖。目前在本地托管一对 LB 和 2 个后端 IIS 节点,使用主机标头作为子域 URL 和 cookie 会话亲和性。
我们需要将此环境迁移到 Azure 并利用应用程序网关。不幸的是,AG 有一些严重的限制https://docs.microsoft.com/en-us/azure/azure-subscription-service-limits?toc=%2fazure%2fapplication-gateway%2ftoc.json#application-gateway-limits,即:
1) HTTP Listeners 20
2) Number of sites 20 1 per HTTP Listeners
3) URL Maps per listener 1
问题:
A) 关于 #2,通配符域名 *. domainname.com 是否可以被视为 1 个网站/用于主机名监听器定义的属性?
- 如果不是,那么是否意味着我需要为每个客户端创建 1 个侦听器,即 HTTPSListener1-> client1.domainname.com,HTTPSListener2->client2.domainname.com 等等?
- 如果答案是“是”,我可以使用相同的通配符证书 *.domainname.com 吗?SSL证书多个侦听器的属性,而只改变主机名字段是否特定于客户端(子域)?
- 如果真是这样,那么考虑到每个 AG 限制为 20 个监听器,我需要创建 3 组单独的 AG 才能容纳我的 60 个子域,这意味着我将因运行额外的 AG 对而产生不必要的成本
B) 本地只有 2 个后端节点,为了节省成本,我们更希望在 Azure 中使用相同的节点;我的理解是多个 AG 集不能指向相同的后端 VM。是否可以解决这个问题的方法是每个 VM 有多个 vNIC 并指向不同的 AG 集,即 AG1 集->vNIC0 主集、AG2 集->vNIC1 辅助集、AG3 集->vNIC2 辅助集?
抱歉,这个问题问得太尖锐了,但我希望其他人会发现这个帖子很有用,因为关于这个主题的详细信息似乎不容易获得。
监听器示例:
"httpListeners": [
{
"name": "appGatewayHttpsListener1",
"properties": {
"FrontendIPConfiguration": {
"Id": "/subscriptions/<subid>/resourceGroups/<rgName>/providers/Microsoft.Network/applicationGateways/applicationGateway1/frontendIPConfigurations/DefaultFrontendPublicIP"
},
"FrontendPort": {
"Id": "/subscriptions/<subid>/resourceGroups/<rgName>/providers/Microsoft.Network/applicationGateways/applicationGateway1/frontendPorts/appGatewayFrontendPort443'"
},
"Protocol": "Https",
"SslCertificate": {
"Id": "/subscriptions/<subid>/resourceGroups/<rgName>/providers/Microsoft.Network/applicationGateways/applicationGateway1/sslCertificates/appGatewaySslCert1'"
},
"HostName": "domainname.com" ,
"RequireServerNameIndication": "true"
}
},
答案1
如果我理解正确的话,您不需要为侦听器设置路径名。您可以改为使用单个全局侦听器来覆盖整个 *.domain.com。这有帮助吗?