【问题标题】:Multiple public IPs to Azure VMAzure VM 的多个公共 IP
【发布时间】:2016-01-06 12:55:35
【问题描述】:

我正在使用新的 azure 资源管理器设置和几个 VM,我正在尝试找到将多个 IP 关联到单个 VM 的最佳方法。

我阅读了几篇不同的文章,ILPIP(实例级公共 IP)、负载平衡池和多个 NIC。

我不确定最佳选择。我的虚拟机已经设置和配置好了,所以我不想再经历加载新虚拟机以启用某些功能的过程(有些人提到多个 NIC 仅在新虚拟机上可用)。

我查看了负载平衡解决方案,但新管理门户中似乎缺少它。您可以查看负载均衡器,但不能添加新的(如果它们仍然可用)。

我需要每个 VM 多个 IP,因为我们的网站具有 SSL,由于旧的浏览器限制,无法通过 SNI 提供服务。

我很茫然,因为大多数文章都指的是较旧的设置,而不是资源管理器方法。

如果有人有可靠的方法来执行此操作,我将不胜感激。

【问题讨论】:

    标签: azure networking azure-virtual-machine azure-resource-manager azure-virtual-network


    【解决方案1】:

    在 ARM(Azure 资源管理器)模型中,使用不同公共 IP 实现多个 SSL 站点的最佳方法是通过负载平衡器。

    • 创建一个负载均衡器,具有一个后端池、多个前端 IP 配置(公共 IP 各一个)、多个 LB 规则(公共 IP:443 -> 后端池各一个)。
    • 将所有虚拟机及其 NIC 配置为后端池的一部分。一个网卡就足够了,不需要多网卡。

    请注意,您可以create a load-balancer through Powershell, Azure CLI or ARM templates。目前,门户支持不可用。

    另见sample template with multiple public IPs on a load-balancer

    在 powershell 中实现这一点的相关命令(来自上面的 Azure 官方文档链接):

    # 两个公网IP $publicIP1 = New-AzureRmPublicIpAddress -Name PublicIp1 -ResourceGroupName NRP-RG -Location "West US" –AllocationMethod Static -DomainNameLabel loadbalancernrp $publicIP2 = New-AzureRmPublicIpAddress -Name PublicIp2 -ResourceGroupName NRP-RG -Location "West US" –AllocationMethod Static -DomainNameLabel loadbalancernrp # 两个前端IP配置 $frontendIP1 = New-AzureRmLoadBalancerFrontendIpConfig -Name LB-Frontend1 -PublicIpAddress $publicIP1 $frontendIP2 = New-AzureRmLoadBalancerFrontendIpConfig -Name LB-Frontend2 -PublicIpAddress $publicIP2 # 一个后端池。 # 注意Name参数值 $beaddresspool=New-AzureRmLoadBalancerBackendAddressPoolConfig -Name "LB-backend" # 两条LB规则 # 请注意,第二条规则的后端端口为 444。 $lbrule1 = New-AzureRmLoadBalancerRuleConfig -Name "HTTPS1" -FrontendIpConfiguration $frontendIP1 -BackendAddressPool $beAddressPool -Probe $healthProbe -Protocol Tcp -FrontendPort 443 -BackendPort 443 $lbrule2 = New-AzureRmLoadBalancerRuleConfig -Name "HTTPS2" -FrontendIpConfiguration $frontendIP2 -BackendAddressPool $beAddressPool -Probe $healthProbe -Protocol Tcp -FrontendPort 443 -BackendPort 444 # 两个网卡 # 使用 LB 规则中引用的特定后端池 $backendnic1 = New-AzureRmNetworkInterface -Name lb-nic1-be -ResourceGroupName NRP-RG -Location "West US" -Subnet $backendSubnet -LoadBalancerBackendAddressPool $beaddresspool $backendnic2 = New-AzureRmNetworkInterface -Name lb-nic2-be -ResourceGroupName NRP-RG -Location "West US" -Subnet $backendSubnet -LoadBalancerBackendAddressPool $beaddresspool

    【讨论】:

      【解决方案2】:

      如果您已经设置了负载均衡器,则可以使用以下 powershell 将公共 IP 和前端 IP 配置添加到现有负载均衡器:

      $IPName = "PublicIp2"
      #domain name lable must be lower case
      $DomainName = "public2"
      $frontendConfigName = "LB-" + $DomainName
      
      $slb = get-AzureRmLoadBalancer -Name my-web-loadbalancer -ResourceGroupName RGN01
      $publicIP2 = New-AzureRmPublicIpAddress -Name $IPName -ResourceGroupName RGN01 -Location "West Europe" –AllocationMethod Static -DomainNameLabel $DomainName
      $frontendIP2 = New-AzureRmLoadBalancerFrontendIpConfig -Name $frontendConfigName -PublicIpAddress $publicIP2
      $slb | Add-AzureRmLoadBalancerFrontendIpConfig -PublicIpAddress $publicIP2 -Name $frontendConfigName
      $slb | Set-AzureRmLoadBalancer 
      
      $HTTPSName = $DomainName + "HTTPS"
      $HTTPName = $DomainName + "HTTP"
      $healthProbe = $slb.Probes[0]
      
      #You need to get a backend port that's not being used. Use #Get-AzureRmLoadBalancerRuleConfig -LoadBalancer $slb to see the config rules that are currently on the load balancer
      #don't use 445 - it's used by Active directory
      #You need to open the ports you've chosen on your webservers firewalls
      $slb | Add-AzureRmLoadBalancerRuleConfig -Name $HTTPSName -FrontendIpConfiguration $frontendIP2 -BackendAddressPool $slb.BackendAddressPools[0] -Probe $healthProbe -Protocol Tcp -FrontendPort 443 -BackendPort 446
      $slb | Set-AzureRmLoadBalancer
      $slb | Add-AzureRmLoadBalancerRuleConfig -Name $HTTPName -FrontendIpConfiguration $frontendIP2 -BackendAddressPool $slb.BackendAddressPools[0] -Probe $healthProbe -Protocol Tcp -FrontendPort 80 -BackendPort 82
      $slb | Set-AzureRmLoadBalancer
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-01-27
        • 1970-01-01
        • 1970-01-01
        • 2018-09-11
        • 2021-05-02
        • 2020-02-05
        • 2016-01-01
        相关资源
        最近更新 更多