Configuração de endereço IP público no nível da instância no Serviços de Nuvem
Este artigo discute como configurar um PIP (endereço IP público) no nível da instância em Serviços de Nuvem do Microsoft Azure (clássico) e Serviços de Nuvem do Azure (suporte estendido). Ao contrário de um ENDEREÇO IP virtual (VIP), um endereço IP público no nível da instância não é balanceado por carga. Um VIP é atribuído ao serviço de nuvem e todas as máquinas virtuais e instâncias de função no serviço de nuvem compartilham esse VIP. No entanto, um PIP (endereço IP público) está associado apenas ao adaptador de rede de uma única instância. O endereço IP público é útil em implantações de várias instâncias nas quais cada instância pode ser acessível independentemente da Internet. O diagrama a seguir ilustra o valor do PIP e o diferencia do VIP.
No diagrama, o tráfego de rede enviado para o VIP é mostrado como balanceado por carga entre o endereço IP do datacenter (DIP) 1 e o DIP 2. No entanto, o tráfego enviado para PIP 1 sempre vai para o DIP 1, e o tráfego enviado para PIP 2 sempre vai para DIP 2. Um endereço IP do datacenter é o endereço IP privado da máquina virtual (VM).
Para obter mais informações, consulte o artigo Endereço IP público no nível da instância do Blog do Azure.
Procedimento para Serviços de Nuvem do Azure (clássico)
Configurar um endereço IP público no nível da instância por função:
<?xml version="1.0" encoding="utf-8"?> <ServiceConfiguration serviceName="TestVirtualnetwork" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration" osFamily="6" osVersion="*" schemaVersion="2015-04.2.6"> <Role name="WebRole1"> <Instances count="1" /> <ConfigurationSettings> <Setting name="APPINSIGHTS_INSTRUMENTATIONKEY" value="xxx" /> </ConfigurationSettings> </Role> <Role name="WebRole2"> <Instances count="1" /> <ConfigurationSettings> <Setting name="APPINSIGHTS_INSTRUMENTATIONKEY" value="xxx" /> </ConfigurationSettings> </Role> <Role name="WebRole3"> <Instances count="1" /> <ConfigurationSettings> <Setting name="APPINSIGHTS_INSTRUMENTATIONKEY" value="xxx" /> </ConfigurationSettings> </Role> <Role name="WebRole4"> <Instances count="1" /> <ConfigurationSettings> <Setting name="APPINSIGHTS_INSTRUMENTATIONKEY" value="xxx" /> </ConfigurationSettings> </Role> <NetworkConfiguration> <VirtualNetworkSite name="Group RESOURCE_GROUP VIRTUAL_NETWORK_NAME" /> <AddressAssignments> <InstanceAddress roleName="WebRole1"> <Subnets><Subnet name="subnet001" /></Subnets> <PublicIPs> <PublicIP name="PubIP" domainNameLabel="pip" /> <!-- with domain --> </PublicIPs> </InstanceAddress> <InstanceAddress roleName="WebRole2"> <Subnets><Subnet name="subnet003" /></Subnets> <PublicIPs> <PublicIP name="PubIP"/> <!-- without domain --> </PublicIPs> </InstanceAddress> </AddressAssignments> </NetworkConfiguration> </ServiceConfiguration>
Obtenha o endereço IP público atual de uma função usando um dos métodos a seguir.
Para cada instância de função, execute o cmdlet Get-AzureRole PowerShell. Esse cmdlet é baseado no
Azure.Service
módulo. Usando a configuração de endereço IP na etapa anterior, podemos ver a diferença entre os detalhes da instância de cada instância de função.Exiba os detalhes da
WebRole2
função, cujo nome IP público não tem um rótulo de nome de domínio:$roleParams = @{ ServiceName = "<cloud-service-name>" Slot = "Production" RoleName = "WebRole2" InstanceDetails = $true } Get-AzureRole @roleParams
A saída do cmdlet se assemelha ao seguinte texto:
InstanceEndpoints : {Microsoft.WindowsAzure.Plugins.RemoteForwarder.RdpInput, Endpoint1} InstanceErrorCode : InstanceFaultDomain : 0 InstanceName : WebRole2_IN_0 InstanceSize : Standard_D1_v2 InstanceStateDetails : InstanceStatus : ReadyRole InstanceUpgradeDomain : 0 RoleName : WebRole2 DeploymentID : 0123456789abcdef0123456789abcdef IPAddress : 10.2.2.5 PublicIPAddress : 20.115.22.157 PublicIPName : PubIP PublicIPIdleTimeoutInMinutes : PublicIPDomainNameLabel : PublicIPFqdns : {} ServiceName : contoso-vnet-pip OperationDescription : Get-AzureRole OperationId : 12345678-9abc-def0-1234-56789abcdef0 OperationStatus : Succeeded
Agora, exiba os detalhes da
WebRole1
função, que usa o mesmo nome IP público, mas também tem um rótulo de nome de domínio:$roleParams = @{ ServiceName = "<cloud-service-name>" Slot = "Production" RoleName = "WebRole1" InstanceDetails = $true } Get-AzureRole @roleParams
Na saída do cmdlet, os
InstanceEndpoints
valores , ,InstanceName
,InstanceStatus
RoleName
,IPAddress
,PublicIPDomainNameLabel
PublicIPAddress
,PublicIPFqdns
eOperationId
são diferentes:InstanceEndpoints : {Endpoint1} InstanceErrorCode : InstanceFaultDomain : 0 InstanceName : WebRole1_IN_0 InstanceSize : Standard_D1_v2 InstanceStateDetails : InstanceStatus : StoppedVM InstanceUpgradeDomain : 0 RoleName : WebRole1_IN_0 DeploymentID : 0123456789abcdef0123456789abcdef IPAddress : 10.2.0.4 PublicIPAddress : 20.168.229.192 PublicIPName : PubIP PublicIPIdleTimeoutInMinutes : PublicIPDomainNameLabel : pip PublicIPFqdns : {pip.contoso-vnet-pip.cloudapp.net, pip.0.contoso-vnet-pip.cloudapp.net} ServiceName : contoso-vnet-pip OperationDescription : Get-AzureRole OperationId : 23456789-abcd-ef01-2345-6789abcdef01 OperationStatus : Succeeded
Procedimento para Serviços de Nuvem do Azure (suporte estendido)
Configurar um endereço IP público no nível da instância por função:
<?xml version="1.0" encoding="utf-16"?> <ServiceConfiguration xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" serviceName="Test_cloudservice" osFamily="6" osVersion="*" schemaVersion="2015-04.2.6" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration"> <Role name="TestWebRole"> <ConfigurationSettings> <Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" value="UseDevelopmentStorage=true" /> </ConfigurationSettings> <Instances count="2" /> </Role> <Role name="TestWorkerRole"> <ConfigurationSettings> <Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" value="UseDevelopmentStorage=true" /> </ConfigurationSettings> <Instances count="1" /> </Role> <NetworkConfiguration> <VirtualNetworkSite name="test001VNet" /> <AddressAssignments> <InstanceAddress roleName="TestWebRole"> <Subnets> <Subnet name="default" /> </Subnets> <PublicIPs> <PublicIP name="PubIP" domainNameLabel="pip" /> </PublicIPs> </InstanceAddress> <InstanceAddress roleName="TestWorkerRole"> <Subnets> <Subnet name="default" /> </Subnets> </InstanceAddress> <ReservedIPs> <ReservedIP name="Group TESTCSES cses-prod" /> </ReservedIPs> </AddressAssignments> </NetworkConfiguration> </ServiceConfiguration>
Use a API REST publicIPAddress In CloudService – List Cloud Service Public IP Addresss para obter o endereço IP público do adaptador de rede. O snippet de código a seguir mostra um exemplo de resposta JSON:
{ "value": [ { "name": "PubIP", "id": "/subscriptions/<your-subscription-guid>/resourceGroups/TESTCSES/providers/Microsoft.Compute/cloudServices/testcsesv2/roleInstances/TestWebRole_IN_0/networkInterfaces/nic1/ipConfigurations/ipconfig1/publicIPAddresses/PubIP", "etag": "W/\"3456789a-bcde-f012-3456-789abcdef012\"", "location": "eastus", "properties": { "provisioningState": "Succeeded", "resourceGuid": "<your-resource-guid>", "ipAddress": "20.169.153.231", "publicIPAddressVersion": "IPv4", "publicIPAllocationMethod": "Dynamic", "idleTimeoutInMinutes": 4, "dnsSettings": { "domainNameLabel": "pip.0.cses-prod", "fqdn": "pip.0.cses-prod.eastus.cloudapp.azure.com" }, "ipTags": [], "ipConfiguration": { "id": "/subscriptions/<your-subscription-guid>/resourceGroups/TESTCSES/providers/Microsoft.Compute/cloudServices/testcsesv2/roleInstances/TestWebRole_IN_0/networkInterfaces/nic1/ipConfigurations/ipconfig1" } }, "sku": { "name": "Basic", "tier": "Regional" } }, { "name": "PubIP", "id": "/subscriptions/<your-subscription-guid>/resourceGroups/TESTCSES/providers/Microsoft.Compute/cloudServices/testcsesv2/roleInstances/TestWebRole_IN_1/networkInterfaces/nic1/ipConfigurations/ipconfig1/publicIPAddresses/PubIP", "etag": "W/\"456789ab-cdef-0123-4567-89abcdef0123\"", "location": "eastus", "properties": { "provisioningState": "Succeeded", "resourceGuid": "<your-resource-guid>", "ipAddress": "20.231.68.190", "publicIPAddressVersion": "IPv4", "publicIPAllocationMethod": "Dynamic", "idleTimeoutInMinutes": 4, "dnsSettings": { "domainNameLabel": "pip.1.cses-prod", "fqdn": "pip.1.cses-prod.eastus.cloudapp.azure.com" }, "ipTags": [], "ipConfiguration": { "id": "/subscriptions/<your-subscription-guid>/resourceGroups/TESTCSES/providers/Microsoft.Compute/cloudServices/testcsesv2/roleInstances/TestWebRole_IN_1/networkInterfaces/nic1/ipConfigurations/ipconfig1" } }, "sku": { "name": "Basic", "tier": "Regional" } } ] }
Embora os dois objetos na value
matriz tenham um name
valor chave de PubIP
, há diferenças no endereço IP e nas configurações DNS dentro das respectivas properties
chaves. A ipAddress
chave tem um valor de 20.169.153.231
no objeto de primeira matriz e 20.231.68.190
no segundo objeto de matriz. A dnsSettings
chave tem um valor de pip.0.cses-prod
no objeto de primeira matriz e pip.1.cses-prod
no segundo objeto de matriz.
Entre em contato conosco para obter ajuda
Se você tiver dúvidas ou precisar de ajuda, crie uma solicitação de suporte ou peça ajuda à comunidade de suporte do Azure. Você também pode enviar comentários sobre o produto para a comunidade de comentários do Azure.