Freigeben über


Konfiguration öffentlicher IP-Adressen auf Instanzebene in Cloud Services

In diesem Artikel wird erläutert, wie Sie eine öffentliche IP-Adresse (PIP) auf Instanzebene in Microsoft Azure Cloud Services (klassisch) und Azure Cloud Services (erweiterter Support) konfigurieren. Im Gegensatz zu einer virtuellen IP-Adresse (VIP) ist eine öffentliche IP-Adresse auf Instanzebene nicht lastenausgleichen. Dem Clouddienst wird eine VIP zugewiesen, und alle virtuellen Computer und Rolleninstanzen im Clouddienst teilen diese VIP. Eine öffentliche IP-Adresse (PIP) ist jedoch nur dem Netzwerkadapter einer einzelnen Instanz zugeordnet. Die öffentliche IP-Adresse ist bei Bereitstellungen mit mehreren Instanzen nützlich, in denen jede Instanz unabhängig vom Internet erreichbar sein kann. Das folgende Diagramm veranschaulicht den Wert der PIP und unterscheidet ihn von der VIP.

Diagramm, das die Beziehung zwischen öffentlichen IP-Adressen, virtuellen IP-Adressen und dem Internet in Microsoft Azure Cloud Services zeigt.

Im Diagramm wird der an die VIP gesendete Netzwerkdatenverkehr als Lastenausgleich zwischen IP-Adresse (DIP) 1 und DIP 2 des Rechenzentrums angezeigt. Der datenverkehr, der an PIP 1 gesendet wird, geht jedoch immer an DIP 1, und der datenverkehr, der an PIP 2 gesendet wird, geht immer an DIP 2. Eine IP-Adresse des Rechenzentrums ist die private IP-Adresse des virtuellen Computers (VM).

Weitere Informationen finden Sie im Azure-Blogartikel zur Öffentlichen IP-Adresse auf Instanzebene.

Verfahren für Azure Cloud Services (klassisch)

  1. Konfigurieren einer öffentlichen IP-Adresse auf Instanzebene nach Rolle:

    <?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>
    
  2. Rufen Sie die aktuelle öffentliche IP-Adresse einer Rolle mithilfe einer der folgenden Methoden ab.

    Führen Sie für jede Rolleninstanz das PowerShell-Cmdlet "Get-AzureRole " aus. Dieses Cmdlet basiert auf dem Azure.Service Modul. Mithilfe der IP-Adresskonfiguration im vorherigen Schritt können wir den Unterschied zwischen den Instanzendetails jeder Rolleninstanz erkennen.

    1. Zeigen Sie die Details der WebRole2 Rolle an, deren öffentlicher IP-Name nicht über eine Domänennamenbezeichnung verfügt:

      $roleParams = @{
          ServiceName = "<cloud-service-name>"
          Slot = "Production"
          RoleName = "WebRole2"
          InstanceDetails = $true
      }
      Get-AzureRole @roleParams
      

      Die Cmdlet-Ausgabe ähnelt dem folgenden Text:

      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
      
    2. Zeigen Sie nun die Details der WebRole1 Rolle an, die denselben öffentlichen IP-Namen verwendet, aber auch eine Domänennamenbezeichnung hat:

      $roleParams = @{
          ServiceName = "<cloud-service-name>"
          Slot = "Production"
          RoleName = "WebRole1"
          InstanceDetails = $true
      }
      Get-AzureRole @roleParams
      

      In der Cmdlet-Ausgabe unterscheiden sich die InstanceEndpointsWerte , , , PublicIPDomainNameLabelIPAddressInstanceNameRoleNamePublicIPAddressInstanceStatusPublicIPFqdnsund OperationId die Werte:

      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
      

Verfahren für Azure Cloud Services (erweiterter Support)

  1. Konfigurieren einer öffentlichen IP-Adresse auf Instanzebene nach Rolle:

    <?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>
    
  2. Verwenden Sie die REST-API des PublicIPAddress In CloudService - List Cloud Service Public IP Addresses REST API, um die öffentliche IP-Adresse des Netzwerkadapters abzurufen. Der folgende Codeausschnitt zeigt eine BEISPIEL-JSON-Antwort:

    {
      "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"
          }
        }
      ]
    }
    

Obwohl die beiden Objekte im value Array beide einen name Schlüsselwert PubIPaufweisen, gibt es Unterschiede in den IP-Adressen und DNS-Einstellungen innerhalb der jeweiligen properties Schlüssel. Der ipAddress Schlüssel weist einen Wert 20.169.153.231 im ersten Arrayobjekt und 20.231.68.190 im zweiten Arrayobjekt auf. Der dnsSettings Schlüssel weist einen Wert pip.0.cses-prod im ersten Arrayobjekt und pip.1.cses-prod im zweiten Arrayobjekt auf.

Kontaktieren Sie uns für Hilfe

Wenn Sie Fragen haben oder Hilfe mit Ihren Azure-Gutschriften benötigen, dann erstellen Sie beim Azure-Support eine Support-Anforderung oder fragen Sie den Azure Community-Support. Sie können auch Produktfeedback an die Azure Feedback Community senden.