Azure VIP用于单个VM上的多个SSL

时间:2016-06-17 07:21:22

标签: azure

我有一个包含两个网站的Azure VM(虚拟机)。 每个网站都有自己的SSL证书

但是,VM只有一个内部IP地址,因此无效。

我想要做的是添加第二个VIP(虚拟IP),并将其映射到不同的端口。 所以像这样:

VIP 1.1.1.1:80指向192.168.1.1:8081

VIP 2.2.2.2:80指向192.168.1.1:8082

VIP 3.3.3.3:443指向192.168.1.1:8444

VIP 4.4.4.4:443指向192.168.1.1:8445

我认为这应该可行,但是,我在配置Azure时遇到了很多麻烦。由于某种原因,没有用于定义这些内容的Web界面,我只是没有通过任何建议的方法来管理。

有人可以帮助我吗?

  1. 我的解决方案应该有效吗?

  2. 我该怎么做?

  3. 我找到了这篇文章: https://azure.microsoft.com/en-us/documentation/articles/load-balancer-multivip/

    使用Microsoft Azure PowerShell,尝试添加/列出VIP,我得到Get-AzureDeployment:ResourceNotFound:未找到任何部署。

1 个答案:

答案 0 :(得分:1)

我管理,它有效,我很高兴。 我要感谢高级程序员Azure的Siva Edupuganti,他为我提供了帮助。

那么,我怎么做才能让它发挥作用?

简短的回答是使用azure powershell脚本您可以在单个负载均衡器上设置多个前端IP地址配置。每个前端IP地址配置都有一个IP地址。通过用户界面,您无法执行此操作。

长答案是完成此任务的最终配置:

  1. 我的网站仍然可以在我的标准端口上提供:80& 443。
  2. 我添加了5个新的IP(虚拟IP)
  3. 此新公共虚拟IP上的每个传入请求都将由负载均衡器映射到内部IP,并带有

    不同的端口。我会为此使用负载平衡规则。因此传入将始终位于标准端口80和443上,

    但IIS将在端口81和4431上接收。

    vip-81 80 => 81,443 => 4431

    vip-82 80 => 82,443 => 4432

    vip-83 80 => 83,443 => 4433

    vip-84 80 => 84,443 => 4434

    vip-85 80 => 85,443 => 4435

    首先通过Azure UI准备IP。 最多有5个前端地址,所以我创建了5个。

    VIP-81
    VIP-82
    VIP-83
    VIP-84
    vip-85

    #scripting part:
    #Now login with Azure Powershell:
    Login-AzureRmAccount
    
    #You can run this scripts line by line or all together:
    $publicIP1 = Get-AzureRmPublicIpAddress -name vip-81 -resourcegroupname MyRG
    $publicIP2 = Get-AzureRmPublicIpAddress -name vip-82 -resourcegroupname MyRG
    $publicIP3 = Get-AzureRmPublicIpAddress -name vip-83 -resourcegroupname MyRG
    $publicIP4 = Get-AzureRmPublicIpAddress -name vip-84 -resourcegroupname MyRG
    $publicIP5 = Get-AzureRmPublicIpAddress -name vip-85 -resourcegroupname MyRG
    
    $frontendIP1 = New-AzureRmLoadBalancerFrontendIpConfig -Name lb-feipc-1 -PublicIpAddress $publicIP1
    $frontendIP2 = New-AzureRmLoadBalancerFrontendIpConfig -Name lb-feipc-2 -PublicIpAddress $publicIP2 
    $frontendIP3 = New-AzureRmLoadBalancerFrontendIpConfig -Name lb-feipc-3 -PublicIpAddress $publicIP3 
    $frontendIP4 = New-AzureRmLoadBalancerFrontendIpConfig -Name lb-feipc-4 -PublicIpAddress $publicIP4
    $frontendIP5 = New-AzureRmLoadBalancerFrontendIpConfig -Name lb-feipc-5 -PublicIpAddress $publicIP5
    
    $beaddresspool = New-AzureRmLoadBalancerBackendAddressPoolConfig -Name lb-beapc-grp1
    
    $lbrule1 = New-AzureRmLoadBalancerRuleConfig -Name lb-rule-tcp-80-8081 -FrontendIpConfiguration $frontendIP1 -
    
    BackendAddressPool $beAddressPool -Protocol Tcp -FrontendPort 80 -BackendPort 8081
    $lbrule2 = New-AzureRmLoadBalancerRuleConfig -Name lb-rule-tcp-80-8082 -FrontendIpConfiguration $frontendIP2 -
    
    BackendAddressPool $beAddressPool -Protocol Tcp -FrontendPort 80 -BackendPort 8082
    $lbrule3 = New-AzureRmLoadBalancerRuleConfig -Name lb-rule-tcp-80-8083 -FrontendIpConfiguration $frontendIP3 -
    
    BackendAddressPool $beAddressPool -Protocol Tcp -FrontendPort 80 -BackendPort 8083
    $lbrule4 = New-AzureRmLoadBalancerRuleConfig -Name lb-rule-tcp-80-8084 -FrontendIpConfiguration $frontendIP4 -
    
    BackendAddressPool $beAddressPool -Protocol Tcp -FrontendPort 80 -BackendPort 8084
    $lbrule5 = New-AzureRmLoadBalancerRuleConfig -Name lb-rule-tcp-80-8085 -FrontendIpConfiguration $frontendIP5 -
    
    BackendAddressPool $beAddressPool -Protocol Tcp -FrontendPort 80 -BackendPort 8085
    
    $lbrule6 = New-AzureRmLoadBalancerRuleConfig -Name lb-rule-tcp-443-4431 -FrontendIpConfiguration $frontendIP1 -
    
    BackendAddressPool $beAddressPool -Protocol Tcp -FrontendPort 443 -BackendPort 4431 
    $lbrule7 = New-AzureRmLoadBalancerRuleConfig -Name lb-rule-tcp-443-4432 -FrontendIpConfiguration $frontendIP2 -
    
    BackendAddressPool $beAddressPool -Protocol Tcp -FrontendPort 443 -BackendPort 4432
    $lbrule8 = New-AzureRmLoadBalancerRuleConfig -Name lb-rule-tcp-443-4433 -FrontendIpConfiguration $frontendIP3 -
    
    BackendAddressPool $beAddressPool -Protocol Tcp -FrontendPort 443 -BackendPort 4433
    $lbrule9 = New-AzureRmLoadBalancerRuleConfig -Name lb-rule-tcp-443-4434 -FrontendIpConfiguration $frontendIP4 -
    
    BackendAddressPool $beAddressPool -Protocol Tcp -FrontendPort 443 -BackendPort 4434
    $lbrule10 = New-AzureRmLoadBalancerRuleConfig -Name lb-rule-tcp-443-4435 -FrontendIpConfiguration $frontendIP5 -
    
    BackendAddressPool $beAddressPool -Protocol Tcp -FrontendPort 443 -BackendPort 4435
    
    $NRPLB = New-AzureRmLoadBalancer -ResourceGroupName MyRG -Name lb-grp1 -Location 'Central US' -
    
    FrontendIpConfiguration $frontendIP1,$frontendIP2,$frontendIP3,$frontendIP4,$frontendIP5 -LoadBalancingRule $lbrule1,
    
    $lbrule2,$lbrule3,$lbrule4,$lbrule5,$lbrule6,$lbrule7,$lbrule8,$lbrule9,$lbrule10 -BackendAddressPool $beAddressPool
    
    #end script part. Go to the UI.
    

    现在,负载均衡器设置了10个端口映射规则。

    现在通过UI打开几个端口和其他设置:

    1. 网络安全组允许端口*到端口8081-8085和4431-4435

    2. 网络安全组允许任何来自AzureLoadBalancer的端口8081-8085

    3. 在端口8081-8085和4431-4435上打开Windows防火墙

    4. 现在: 通过UI配置负载均衡器:添加到与Web服务器/池关联的后端池。

      准备探针&连接到UI中的负载平衡规则(将无法正常工作)

      LB-探针-TCP-8081

      LB-探针-TCP-8082

      LB-探针-TCP-8083

      LB-探针-TCP-8084

      LB-探针-TCP-8085

      现在它应该全部工作了。 6个IP,其中5个通过负载均衡器。最多6个不同的SSL证书在IIS的同一虚拟服务器上并行运行。