1

Вопрос двоякий. Во-первых, каков способ назначения зарезервированного IP-адреса в качестве общего IP-адреса виртуальной машине на основе менеджера ресурсов. Включает ли это только настройку метода распределения IP-адресов на статический файл шаблона (тогда, соответственно, назначение этого NIC, следовательно, виртуальная машина), или есть какой-то другой способ сделать это, я прочитал через Интернет о балансировщиках нагрузки, но я не понимаю, как для использования их с использованием файла шаблона, пожалуйста, обратитесь к ссылкам. Во-вторых, существует ли какой-либо rest api или .net sdk для работы с зарезервированными IP-адресами в модели управления ресурсами Azure (например, создавать, связывать, дизассемблировать методы). Я нашел api для модели управления услугами Azure (https://msdn.microsoft.com/library/azure/dn722420.aspx), но я не нахожу то же самое для модели управления ресурсами Azure. ThanksЗарезервированные IP-адреса для виртуальных машин на базе Azure Resource Manager

ответ

2

Зарезервированный IP-адрес предназначен только для модели Classic Deploy, и эта часть функциональности интегрирована в общедоступный IP-адрес. Статический публичный IP-адрес действует точно так же, как зарезервированный IP-адрес. Нет необходимости и невозможно назначить классический зарезервированный IP-адрес для развернутой виртуальной машины ARM. Присвоение статического открытого IP-адреса балансировщику нагрузки точно такое же, как присвоение его сетевому адаптеру.

У Microsoft есть API ARM REST для классического зарезервированного IP-адреса, но я не могу найти никаких документов. Поэтому я могу описать это здесь немного.

Получить зарезервированный IP-адрес.

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 

Заголовки: Авторизация, аналогично другому ARM REST API.

тело Ответ:

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



Создать зарезервированный IP-адрес.

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 

Заголовки: Авторизация, аналогично другому ARM REST API. Content-Type "приложения/JSON"

Тело запроса:

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



Удалить зарезервированный IP-адрес.

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 

Заголовки: Авторизация, аналогично другому ARM REST API.



Остальной API не поддерживает POST или пластыря.

Для виртуальной машины с балансировкой нагрузки я написал образец шаблона.

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

Балансировщик нагрузки - это что-то между сетевыми адаптерами и общедоступными IP-адресами, балансировка нагрузки на интернет-трафик.Для получения более подробной информации см Azure Load Balancer overview

Update

О преобразовании классического зарезервированный IP-адреса в статический IP-адрес общественности, вот что я нашел. Если вы следуете статье «Migrate IaaS resources from classic to Azure Resource Manager by using Azure PowerShell», назначьте зарезервированный IP-адрес облачной службе с помощью виртуальной машины и перенесите виртуальную машину ASM в виртуальную машину ARM, зарезервированный IP-адрес будет преобразован в статический публичный IP-адрес. Я протестировал виртуальную машину с виртуальной сетью. Он работает.

+0

Привет, Большое спасибо за такую ​​подробную информацию, каким образом можно связать зарезервированный IP-адрес с ресурсом (т. Е. VM или балансировщик нагрузки). если он должен быть назначен виртуальной машине через балансировщик нагрузки, и каким образом мы можем определить зарезервированный IP для балансировщика нагрузки. Есть ли для этого API-вызов, как в API управления сервисом, мы можем легко связать зарезервированный IP с облачным сервисом используя вызов API. Так существует ли такой вызов API? –

+0

Я написал образец шаблона для вас. –

+0

Спасибо большое! только одна вещь, о которой я запутался, это параметр «publicIPAddressName». Может ли это имя зарезервированного ip-адреса? Если да, то зачем нам нужно создавать ресурс IP-адреса через файл шаблона, если уже существует зарезервированный IP-адрес? На самом деле моя задача - использовать зарезервированный IP для виртуальной машины. –