Вопрос двоякий. Во-первых, каков способ назначения зарезервированного 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
ответ
Зарезервированный 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-адрес. Я протестировал виртуальную машину с виртуальной сетью. Он работает.
Привет, Большое спасибо за такую подробную информацию, каким образом можно связать зарезервированный IP-адрес с ресурсом (т. Е. VM или балансировщик нагрузки). если он должен быть назначен виртуальной машине через балансировщик нагрузки, и каким образом мы можем определить зарезервированный IP для балансировщика нагрузки. Есть ли для этого API-вызов, как в API управления сервисом, мы можем легко связать зарезервированный IP с облачным сервисом используя вызов API. Так существует ли такой вызов API? –
Я написал образец шаблона для вас. –
Спасибо большое! только одна вещь, о которой я запутался, это параметр «publicIPAddressName». Может ли это имя зарезервированного ip-адреса? Если да, то зачем нам нужно создавать ресурс IP-адреса через файл шаблона, если уже существует зарезервированный IP-адрес? На самом деле моя задача - использовать зарезервированный IP для виртуальной машины. –