Azure一个Cloud Service支持多个公网地址

Azure刚刚发布在同一个Cloud Service下支持多个公网IP地址的功能。

这个功能主要是用于:

当相同的端口需要公用相同的LoadBalance时。

比如:

一种使用场景是多组Web服务器被一组安全设备保护,每组服务器有自己独立的IP地址,如下图:

这时需要:

  1. 为CloudService添加多个VIP地址:

    PS C:Usershengz> Add-AzureVirtualIP -ServiceName hwmvip -VirtualIPName vip1

    OperationDescription OperationId OperationStatus
    -------------------- ----------- ---------------
    Add-AzureVirtualIP 14a912b8-5f03-4ecd-aecb-f97e679553e1 Succeeded

    PS C:Usershengz> Add-AzureVirtualIP -ServiceName hwmvip -VirtualIPName vip2

    OperationDescription OperationId OperationStatus
    -------------------- ----------- ---------------
    Add-AzureVirtualIP f9014c8f-d72d-4bad-ae3d-2ffa28e24ce1 Succeeded

  2. 创建三组不同的SLB和LBS,分别用原有的VIP和新增加的VIP

PS C:Usershengz> Get-AzureVM -ServiceName hwmvip -Name hwmvip01 | Add-AzureEndpoint -Name myEndpoint01 -LoadBalancedEndpointSetName myLBSet01 -Protocol tcp -LocalPort 80 -PublicPort 80 -VirtualIPName vip1 -DefaultProbe | Update-AzureVM

OperationDescription OperationId OperationStatus
-------------------- ----------- ---------------
Update-AzureVM 20ec6266-ad18-4dd3-b6c3-35643e32ed16 Succeeded

PS C:Usershengz> Get-AzureVM -ServiceName hwmvip -Name hwmvip02 | add-AzureEndpoint -Name myEndpoint00 -LBSetName myLBSet01 -Protocol tcp -LocalPort 80 -PublicPort 80 -DefaultProbe -VirtualIPName vip1 | Update-AzureVM

OperationDescription OperationId OperationStatus
-------------------- ----------- ---------------
Update-AzureVM fd406797-3d41-4b74-b030-40c5674e6364 Succeeded

PS C:Usershengz> Get-AzureVM -ServiceName hwmvip -Name hwmvip01 | add-AzureEndpoint -Name myEndpoint02 -LBSetName myLBSet02 -Protocol tcp -PublicPort 80 -LocalPort 81 -DefaultProbe | Update-AzureVM

OperationDescription OperationId OperationStatus
-------------------- ----------- ---------------
Update-AzureVM 57df6a8b-473d-48e3-8b93-44d6e80f5b6e Succeeded

PS C:Usershengz> Get-AzureVM -ServiceName hwmvip -Name hwmvip02 | add-AzureEndpoint -Name myEndpoint02 -LBSetName myLBSet02 -Protocol tcp -PublicPort 80 -LocalPort 81 -DefaultProbe | Update-AzureVM

OperationDescription OperationId OperationStatus
-------------------- ----------- ---------------
Update-AzureVM 8f304e3b-0745-430a-ad2d-b112d0883e16 Succeeded

PS C:Usershengz> Get-AzureVM -ServiceName hwmvip -Name hwmvip01 | Add-AzureEndpoint -Name myEndpoint03 -LoadBalancedEndpointSetName myLBSet03 -Protocol tcp -LocalPort 82 -PublicPort 80 -VirtualIPName vip2 -DefaultProbe | Update-AzureVM

OperationDescription OperationId OperationStatus
-------------------- ----------- ---------------
Update-AzureVM 57f7bcc3-b09e-482d-85f7-704c552c69f9 Succeeded

PS C:Usershengz> Get-AzureVM -ServiceName hwmvip -Name hwmvip02 | Add-AzureEndpoint -Name myEndpoint013 -LoadBalancedEndpointSetName myLBSet03 -Protocol tcp -LocalPort 82 -PublicPort 80 -VirtualIPName vip2 -DefaultProbe | Update-AzureVM

OperationDescription OperationId OperationStatus
-------------------- ----------- ---------------
Update-AzureVM 14bc4198-5ba5-445d-8682-40c779e253ea Succeeded

3. 查看配置情况:

PS C:Usershengz> $mvip = Get-AzureDeployment -ServiceName hwmvip
PS C:Usershengz> $mvip.VirtualIPs
Address : 42.159.28.150
IsDnsProgrammed : True
Name : hwmvip01ContractContract
ReservedIPName :
ExtensionData :
Address : 42.159.29.129
IsDnsProgrammed :
Name : vip1
ReservedIPName :
ExtensionData :
Address : 42.159.29.4
IsDnsProgrammed :
Name : vip2
ReservedIPName :
ExtensionData :
PS C:Usershengz> get-azurevm -ServiceName hwmvip -Name hwmvip01 | Get-AzureEndpoint
LBSetName : myLBSet01
LocalPort : 80
Name : myEndpoint01
Port : 80
Protocol : tcp
Vip : 42.159.29.129
ProbePath :
ProbePort : 80
ProbeProtocol : tcp
ProbeIntervalInSeconds : 15
ProbeTimeoutInSeconds : 31
EnableDirectServerReturn : False
Acl : {}
InternalLoadBalancerName :
IdleTimeoutInMinutes :
LoadBalancerDistribution :
VirtualIPName : vip1
LBSetName : myLBSet02
LocalPort : 81
Name : myEndpoint02
Port : 80
Protocol : tcp
Vip : 42.159.28.150
ProbePath :
ProbePort : 81
ProbeProtocol : tcp
ProbeIntervalInSeconds : 15
ProbeTimeoutInSeconds : 31
EnableDirectServerReturn : False
Acl : {}
InternalLoadBalancerName :
IdleTimeoutInMinutes :
LoadBalancerDistribution :
VirtualIPName : hwmvip01ContractContract
LBSetName : myLBSet03
LocalPort : 82
Name : myEndpoint03
Port : 80
Protocol : tcp
Vip : 42.159.29.4
ProbePath :
ProbePort : 82
ProbeProtocol : tcp
ProbeIntervalInSeconds : 15
ProbeTimeoutInSeconds : 31
EnableDirectServerReturn : False
Acl : {}
InternalLoadBalancerName :
IdleTimeoutInMinutes :
LoadBalancerDistribution :
VirtualIPName : vip2
LBSetName :
LocalPort : 22
Nme : SSH
Port : 22122
Protocol : tcp
Vip : 42.159.28.150
ProbePath :
ProbePort : 0
ProbeProtocol :
ProbeIntervalInSeconds :
ProbeTimeoutInSeconds :
EnableDirectServerReturn : False
Acl : {}
InternalLoadBalancerName :
IdleTimeoutInMinutes :
LoadBalancerDistribution :
VirtualIPName : hwmvip01ContractContract
PS C:Usershengz> get-azurevm -ServiceName hwmvip -Name hwmvip02 | Get-AzureEndpoint
LBSetName : myLBSet01
LocalPort : 80
Name : myEndpoint00
Port : 80
Protocol : tcp
Vip :
ProbePath :
ProbePort : 80
ProbeProtocol : tcp
ProbeIntervalInSeconds : 15
ProbeTimeoutInSeconds : 31
EnableDirectServerReturn : False
Acl : {}
InternalLoadBalancerName :
IdleTimeoutInMinutes :
LoadBalancerDistribution :
VirtualIPName : vip1
LBSetName : myLBSet03
LocalPort : 82
Name : myEndpoint013
Port : 80
Protocol : tcp
Vip :
ProbePath :
ProbePort : 82
ProbeProtocol : tcp
ProbeIntervalInSeconds : 15
ProbeTimeoutInSeconds : 31
EnableDirectServerReturn : False
Acl : {}
InternalLoadBalancerName :
IdleTimeoutInMinutes :
LoadBalancerDistribution :
VirtualIPName : vip2
LBSetName : myLBSet02
LocalPort : 81
Name : myEndpoint02
Port : 80
Protocol : tcp
Vip : 42.159.28.150
ProbePath :
ProbePort : 81
ProbeProtocol : tcp
ProbeIntervalInSeconds : 15
ProbeTimeoutInSeconds : 31
EnableDirectServerReturn : False
Acl : {}
InternalLoadBalancerName :
IdleTimeoutInMinutes :
LoadBalancerDistribution :
VirtualIPName : hwmvip01ContractContract
LBSetName :
LocalPort : 22
Name : SSH
Port : 22222
Protocol : tcp
Vip : 42.159.28.150
ProbePath :
ProbePort : 0
ProbeProtocol :
ProbeIntervalInSeconds :
ProbeTimeoutInSeconds :
EnableDirectServerReturn : False
Acl : {}
InternalLoadBalancerName :
IdleTimeoutInMinutes :
LoadBalancerDistribution :
VirtualIPName : hwmvip01ContractContract

可以看到我们预期的配置在两台服务器上实现了。两台服务器各属于3个不同的负载均衡组,三个负载均衡组各对应一个IP地址,对外发布的端口号都是80。

至此配置结束。

原文地址:https://www.cnblogs.com/hengwei/p/4761496.html