Die Frage ist zweifach. Erstens: Wie wird eine reservierte IP-Adresse als öffentliche IP-Adresse einer Ressourcenmanager-basierten virtuellen Maschine zugewiesen? Besteht nur die Einstellung der IP-Zuweisungsmethode in der Vorlagendatei (die Zuweisung erfolgt dann an NIC, also natürlich die VM) oder gibt es eine andere Möglichkeit, dies zu tun, habe ich im Internet über Load Balancer gelesen, aber ich verstehe nicht wie Um sie mithilfe einer Vorlagendatei zu verwenden, verweisen Sie bitte auf alle Links. Zweitens gibt es einen Rest api oder .net sdk, um mit reservierten IPs im Azure Resource Management-Modell zu arbeiten (z. B. Create, associate, disassociate-Methoden). Ich habe die API für Azure Service Management-Modell gefunden (https://msdn.microsoft.com/library/azure/dn722420.aspx), aber ich finde nicht das gleiche für Azure-Ressourcen-Management-Modell. DankReservierte IPs für auf Azure Resource Manager basierende virtuelle Maschinen
Antwort
Eine reservierte IP-Adresse ist nur für das klassische Deploy-Modell und dieser Teil der Funktionalität ist in die öffentliche IP-Adresse integriert. Eine statische öffentliche IP-Adresse verhält sich genau wie eine reservierte IP-Adresse. Es ist nicht möglich und nicht möglich, einer ARM-implementierten VM eine klassische reservierte IP-Adresse zuzuweisen. Das Zuordnen einer statischen öffentlichen IP-Adresse zu einem Lastenausgleichsmodul entspricht genau der Zuweisung eines NIC zu einem NIC.
Microsoft hat ARM REST API für klassische reservierte IP-Adresse, aber ich kann keine Dokumente finden. Also kann ich es hier nur ein bisschen beschreiben.
Erhalte eine reservierte IP-Adresse.
GET https://management.azure.com/subscriptions/<subscription id>/resourceGroups/<resource group name>/providers/Microsoft.ClassicNetwork/ReservedIps/<reserved IP address name>?api-version=2015-12-01
Header: Autorisierung, die gleiche wie andere ARM REST API.
Antwortkörper:
{
"properties": {
"ipAddress": "<ip address>",
"status": "Created",
"provisioningState": "Succeeded",
"inUse": false
},
"id": "/subscriptions/<subscription id>/resourceGroups/<resource group name>/providers/Microsoft.ClassicNetwork/ReservedIps/<reserved ip address name>",
"name": "<reserved ip address name>",
"type": "Microsoft.ClassicNetwork/ReservedIps",
"location": "eastasia"
}
Erstellen Sie eine reservierte IP-Adresse.
PUT https://management.azure.com/subscriptions/<subscription id>/resourceGroups/<resource group name>/providers/Microsoft.ClassicNetwork/ReservedIps/<reserved IP address name>?api-version=2015-12-01
Header: Autorisierung, die gleiche wie andere ARM REST API. Content-Type "application/json"
Anfrage Körper:
{
"properties": {
},
"id": "/subscriptions/<subscription id>/resourceGroups/<resource group name>/providers/Microsoft.ClassicNetwork/ReservedIps/<reserved ip address name>",
"name": "<reserved ip address name>",
"type": "Microsoft.ClassicNetwork/ReservedIps",
"location": "eastasia"
}
Löschen eine reservierte IP-Adresse.
DELETE https://management.azure.com/subscriptions/<subscription id>/resourceGroups/<resource group name>/providers/Microsoft.ClassicNetwork/ReservedIps/<reserved IP address name>?api-version=2015-12-01
Header: Autorisierung, das gleiche wie andere ARM REST API.
The Rest API nicht POST oder PATCH unterstützen.
Für VM mit Load Balancer habe ich eine Beispielvorlage geschrieben.
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageAccountName": {
"type": "string",
"defaultValue": "loadbalancertest2",
"metadata": {
"description": "The Storage Name of you VM OSDisk and DataDisk"
}
},
"apiVersion": {
"type": "string",
"defaultValue": "2016-03-30",
"metadata": {
"description": "The API Version"
}
},
"storageAccountType": {
"type": "string",
"defaultValue": "Standard_LRS",
"metadata": {
"description": "The Storage Account Type"
}
},
"publicIPAddressName": {
"type": "string",
"defaultValue": "loadbalancertest",
"metadata": {
"description": "The public IP Address Name"
}
},
"publicIPAddressType": {
"type": "string",
"defaultValue": "Static",
"metadata": {
"description": "The public IP Address Type"
}
},
"dnsNameforLBIP": {
"type": "string",
"defaultValue": "loadbalancertest",
"metadata": {
"description": "a unique DNS Name for LBIP"
}
},
"virtualNetworkName": {
"type": "string",
"defaultValue": "loadbalancertest",
"metadata": {
"description": "The Virtual Network Name"
}
},
"nicName": {
"type": "string",
"defaultValue": "loadbalancertest",
"metadata": {
"description": "The Network Interface Card Name"
}
},
"loadBalancerName": {
"type": "string",
"defaultValue": "loadbalancertest",
"metadata": {
"description": "The Load Balancer Name"
}
},
"vmName": {
"type": "string",
"defaultValue": "lbtest",
"metadata": {
"description": "The Virtual Machine Name"
}
},
"adminUsername": {
"type": "string",
"metadata": {
"description": "The admin Username"
}
},
"adminPassword": {
"type": "securestring",
"metadata": {
"description": "The admin Password"
}
},
"vmSize": {
"type": "string",
"defaultValue": "Standard_D1",
"metadata": {
"description": "The Virtual Machine Size"
}
}
},
"variables": {
"vnetID": "[resourceId('Microsoft.Network/virtualNetworks',parameters('virtualNetworkName'))]",
"subnetRef": "[concat(variables('vnetID'),'/subnets/default')]",
"publicIPAddressID": "[resourceId('Microsoft.Network/publicIPAddresses',parameters('publicIPAddressName'))]"
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"name": "[parameters('storageAccountName')]",
"apiVersion": "2015-06-15",
"location": "[resourceGroup().location]",
"properties": {
"accountType": "[parameters('storageAccountType')]"
}
},
{
"apiVersion": "[parameters('apiVersion')]",
"type": "Microsoft.Network/publicIPAddresses",
"name": "[parameters('publicIPAddressName')]",
"location": "[resourceGroup().location]",
"properties": {
"publicIPAllocationMethod": "[parameters('publicIPAddressType')]",
"dnsSettings": {
"domainNameLabel": "[parameters('dnsNameforLBIP')]"
}
}
},
{
"apiVersion": "[parameters('apiVersion')]",
"type": "Microsoft.Network/virtualNetworks",
"name": "[parameters('virtualNetworkName')]",
"location": "[resourceGroup().location]",
"properties": {
"addressSpace": {
"addressPrefixes": [
"10.0.0.0/16"
]
},
"subnets": [
{
"name": "default",
"properties": {
"addressPrefix": "10.0.0.0/24"
}
}
]
}
},
{
"apiVersion": "[parameters('apiVersion')]",
"type": "Microsoft.Network/networkInterfaces",
"name": "[parameters('nicName')]",
"location": "[resourceGroup().location]",
"dependsOn": [
"[concat('Microsoft.Network/virtualNetworks/', parameters('virtualNetworkName'))]",
"[concat('Microsoft.Network/loadBalancers/', parameters('loadBalancerName'))]"
],
"properties": {
"ipConfigurations": [
{
"name": "ipconfig1",
"properties": {
"privateIPAllocationMethod": "Dynamic",
"subnet": {
"id": "[variables('subnetRef')]"
}
},
"loadBalancerBackendAddressPools": [
{
"id": "[concat('Microsoft.Network/loadBalancers/', parameters('loadBalancerName'), '/backendAddressPools/loadBalancerBackEnd')]"
}
]
}
]
}
},
{
"apiVersion": "[parameters('apiVersion')]",
"name": "[parameters('loadBalancerName')]",
"type": "Microsoft.Network/loadBalancers",
"location": "[resourceGroup().location]",
"dependsOn": [
"[concat('Microsoft.Network/publicIPAddresses/', parameters('publicIPAddressName'))]"
],
"properties": {
"frontendIPConfigurations": [
{
"name": "loadBalancerFrontEnd",
"properties": {
"publicIPAddress": {
"id": "[variables('publicIPAddressID')]"
}
}
}
],
"backendAddressPools": [
{
"name": "loadBalancerBackEnd"
}
],
"loadBalancingRules": [
],
"probes": [
]
}
},
{
"apiVersion": "[parameters('apiVersion')]",
"type": "Microsoft.Compute/virtualMachines",
"name": "[parameters('vmName')]",
"location": "[resourceGroup().location]",
"dependsOn": [
"[concat('Microsoft.Storage/storageAccounts/', parameters('storageAccountName'))]",
"[concat('Microsoft.Network/networkInterfaces/', parameters('nicName'))]"
],
"properties": {
"hardwareProfile": {
"vmSize": "[parameters('vmSize')]"
},
"osProfile": {
"computerName": "[parameters('vmName')]",
"adminUsername": "[parameters('adminUsername')]",
"adminPassword": "[parameters('adminPassword')]"
},
"storageProfile": {
"imageReference": {
"publisher": "MicrosoftWindowsServer",
"offer": "WindowsServer",
"sku": "2012-R2-Datacenter",
"version": "latest"
},
"osDisk": {
"name": "osdisk",
"vhd": {
"uri": "[concat('http://',parameters('storageAccountName'),'.blob.core.windows.net/vhds/loadbalancertestOS.vhd')]"
},
"caching": "ReadWrite",
"createOption": "FromImage"
},
"dataDisks": [
{
"name": "datadisk1",
"diskSizeGB": "100",
"lun": 0,
"vhd": {
"uri": "[concat('http://',parameters('storageAccountName'),'.blob.core.windows.net/vhds/loadbalancertestData.vhd')]"
},
"createOption": "Empty"
}
]
},
"networkProfile": {
"networkInterfaces": [
{
"id": "[resourceId('Microsoft.Network/networkInterfaces',parameters('nicName'))]"
}
]
},
"diagnosticsProfile": {
"bootDiagnostics": {
"enabled": "true",
"storageUri": "[concat('http://',parameters('storageAccountName'),'.blob.core.windows.net')]"
}
}
}
}
]
}
Ein Load Balancer ist etwas, das zwischen NICs und öffentlichen IP-Adressen gesetzt wird, um den Internetverkehr zu verteilen.Weitere Einzelheiten finden Sie Azure Load Balancer overview
aktualisiert
über eine klassische reservierte IP-Adresse in eine statische öffentlichen IP-Adresse umzuwandeln, hier ist das, was ich gefunden habe. Wenn Sie dem Artikel "Migrate IaaS resources from classic to Azure Resource Manager by using Azure PowerShell" folgen, die reservierte IP einem Cloud-Dienst mit einer virtuellen Maschine zuweisen und die virtuelle ASM-Maschine in eine virtuelle ARM-Maschine migrieren, wird die reservierte IP in eine statische öffentliche IP-Adresse konvertiert. Ich habe eine virtuelle Maschine mit einem virtuellen Netzwerk getestet. Es funktioniert.
Hallo, Vielen Dank für so detaillierte Informationen, wie eine reservierte IP-Adresse mit einer Ressource (d. H. VM oder Load Balancer) zugeordnet werden. Wenn es über einen Load Balancer einer VM zugewiesen werden soll, können wir eine reservierte IP für einen Load Balancer definieren. Gibt es dafür einen API-Aufruf, da wir in der Service Management API eine reservierte IP dem Cloud Service zuordnen können Verwenden eines API-Aufrufs. Gibt es einen solchen API-Aufruf? –
Ich habe eine Beispielvorlage für Sie geschrieben. –
Vielen Dank! nur eine Sache, über die ich verwirrt bin, ist der Parameter 'publicIPAddressName'. Könnte es der Name der reservierten IP-Adresse sein? Wenn ja, warum müssten wir dann eine IP-Adress-Ressource über eine Vorlagendatei erstellen, wenn bereits eine reservierte IP-Adresse vorhanden wäre? Eigentlich ist es meine Sorge, eine reservierte IP für eine VM zu verwenden –