ThousandEyes: развертывание корпоративных агентов в Azure с помощью шаблонов ARM
-
[Введение]
[Предпосылки и допущения]
[Архитектура]
[Развертывание]
[Проверка]
[Ресурсы и дополнительная поддержка] Введение
Гибкость ThousandEyes позволяет размещать Enterprise Agents практически в любом месте, где ваша компания имеет сетевое присутствие. Однако развертывание этих агентов в облачных средах, таких как Azure, может привести к нежелательным административным и операционным затратам.
В этом руководстве показано, как шаблон Azure Resource Manager (ARM) может снизить накладные расходы в процессе развертывания агентов.
Предварительные условия и допущения
В этой статье предполагается, что вы обладаете следующими знаниями, инструментами и доступом:
Azure
Существующая подписка Azure
Виртуальная сеть и подсеть, способные разместить агент ThousandEyes
ThousandEyes
Ваша учетная запись ThousandEyes Токен группы
Название группы ресурсов, на которой размещена существующая виртуальная сеть
Имя существующей виртуальной сети
Название существующей подсети в виртуальной сети
Архитектура
Общее правило для идеального размещения агента заключается в том, чтобы развернуть виртуальную машину как можно ближе к ресурсам, обрабатывающим рабочие процессы. Вот несколько примеров:
Подключение через Expressroute
![Mauro1.png]
Подключение через S2S VPN
![Mauro2.png]
Развертывание- Войдите в портал
Azure. 2. В строке поиска найдите и выберите опцию «Развернуть настраиваемый шаблон».
![Mauro3.png] - Выберите «Создать собственный шаблон в редакторе».
![Mauro4.png] - Скопируйте и вставьте следующий JSON-код в редактор шаблонов, затем нажмите «Сохранить»:
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "accountGroupToken": { "type": "String", "metadata": { "description": "The token for the ThousandEyes account group that the Enterprise Agent will belong to. You can find your ThousandEyes account group token under ThousandEyes Agent Settings." } }, "enableBrowserTests": { "defaultValue": true, "type": "Bool", "metadata": { "description": "Allow enabling ThousandEyes Browser test capabilities (Page Load and Transaction)." } }, "hostname": { "type": "String", "metadata": { "description": "Specify the VM hostname, this will also be the Agent name." } }, "VMSize": { "defaultValue": "Standard_B2s", "type": "String", "metadata": { "description": "Select the size of the Agent VM. Standard_B1s - 1 vCPU, 1 GB Mem; Standard_B2s - 2 vCPU, 4 GB Mem; Standard_D2_v2 - 2 vCPU, 7 GB Mem" } }, "ubuntuOSVersion": { "defaultValue": "22.04-LTS", "allowedValues": [ "22.04-LTS" ], "type": "String", "metadata": { "description": "This will use a fully patched image of your selected Ubuntu version. The "Ubuntu Pro for Azure" option is required to deploy this image." } }, "enableAutoPatch": { "defaultValue": "Yes", "allowedValues": [ "Yes", "No" ], "type": "String", "metadata": { "description": "Auto Patch is a feature that safely and automatically patches your virtual machine OS to maintain security compliance." } }, "adminUsername": { "defaultValue": "thousandeyes", "type": "String", "metadata": { "description": "Specify the admin user name for the VM." } }, "SSHPublicKey": { "type": "SecureString", "metadata": { "description": "Public key used to SSH to the Agent." } }, "proxyType": { "defaultValue": "None", "allowedValues": [ "None", "STATIC" ], "type": "String", "metadata": { "description": "If using a proxy, specify the proxy type. Default is none." } }, "proxyHost": { "defaultValue": "", "type": "String", "metadata": { "description": "If using a proxy, specify the proxy host and port (host:port)" } }, "proxyUser": { "defaultValue": "", "type": "String", "metadata": { "description": "If using a proxy, specify the proxy user (if required)." } }, "proxyPass": { "defaultValue": "", "type": "SecureString", "metadata": { "description": "If using a proxy, specify the proxy password (if required)." } }, "virtualNetworkResourceGroup": { "type": "String", "metadata": { "description": "Resource group of the existing VNet" } }, "virtualNetworkName": { "type": "String", "metadata": { "description": "Existing VNet Name" } }, "subnetName": { "type": "String", "metadata": { "description": "Existing Subnet Name" } }, "nicName": { "type": "String", "metadata": { "description": "Name for the new VM's NIC" } }, "publicIPAddressName": { "type": "String", "metadata": { "description": "Public IP Address Name for the new VM" } } }, "variables": { "imagePublisher": "[if(equals(parameters('ubuntuOSVersion'),'22.04-LTS'),'canonical','Canonical')]", "imageOffer": "[if(equals(parameters('ubuntuOSVersion'),'22.04-LTS'),'0001-com-ubuntu-server-jammy','UbuntuServer')]", "imageSku": "[if(equals(parameters('ubuntuOSVersion'),'22.04-LTS'),'22_04-lts',parameters('ubuntuOSVersion'))]", "imageVersion": "latest", "nicName": "[parameters('nicName')]", "vmName": "[parameters('hostname')]", "existingvnetId": "[resourceId(parameters('virtualNetworkResourceGroup'),'Microsoft.Network/virtualNetworks',parameters('virtualNetworkName'))]", "subnetId": "[concat(variables('existingvnetId'),'/subnets/',parameters('subnetName'))]", "publicIPAddressName": "[parameters('publicIPAddressName')]", "publicIPAddressType": "Dynamic", "linuxConfiguration": { "disablePasswordAuthentication": true, "ssh": { "publicKeys": [ { "path": "[concat('/home/', parameters('adminUsername'), '/.ssh/authorized_keys')]", "keyData": "[parameters('SSHPublicKey')]" } ] }, "provisionVMAgent": true, "patchSettings": { "patchMode": "[if(equals(parameters('enableAutoPatch'),'Yes'), 'AutomaticByPlatform', 'ImageDefault')]" } }, "bbotArg": "[if(parameters('enableBrowserTests'), ' -b ', '')]", "proxyTypeArg": "[if(equals(parameters('proxyType'), 'None'), '', concat(' -t ', parameters('proxyType'), ' '))]", "proxyHostArg": "[if(empty(parameters('proxyHost')), '', concat(' -P ', parameters('proxyHost'), ' '))]", "proxyUserArg": "[if(empty(parameters('proxyUser')), '', concat(' -U ', parameters('proxyUser'), ' '))]", "proxyPassArg": "[if(empty(parameters('proxyPass')), '', concat(' -u ', parameters('proxyPass'), ' '))]", "proxyHttp": "[if(empty(parameters('proxyUser')), concat(parameters('proxyHost')), concat(parameters('proxyUser'), ':', parameters('proxyPass'),'@', parameters('proxyHost')))]", "proxyEnv": "[if(empty(parameters('proxyHost')), '', variables('proxyHttp'))]", "cloudInitWriteProxyApt": "[concat('\n- path: /etc/apt/apt.conf.d/90proxyapt\n append: false\n content: |\n Acquire::http::proxy "http://',variables('proxyEnv'), '";', '\n Acquire::https::proxy "http://',variables('proxyEnv'), '";')]", "cloudInitWriteProxyEnv": "[concat('\n- path: /etc/environment\n append: true\n content: |\n http_proxy=',variables('proxyEnv'),'\n https_proxy=',variables('proxyEnv'))]", "teReleaseFile": "[concat('\n- path: /etc/te-release\n append: true\n content: |\n DISTRIB_FAMILY=AZURE_ARM\n DISTRIB_RELEASE=86fbdd9')]", "customDataProxy": "[concat('#cloud-config', '\n\nwrite_files:', variables('cloudInitWriteProxyApt') , variables('cloudInitWriteProxyEnv'), variables('teReleaseFile'),'\n\nruncmd:', '\n- export http_proxy=',variables('proxyEnv'),'\n- export https_proxy=',variables('proxyEnv'), '\n- curl -Os https://downloads.thousandeyes.com/agent/install_thousandeyes.sh\n- chmod +x install_thousandeyes.sh\n- sudo ./install_thousandeyes.sh ', variables('bbotArg'), variables('proxyTypeArg'), variables('proxyHostArg'), variables('proxyUserArg'), variables('proxyPassArg'), parameters('accountGroupToken'))]", "customDataNoProxy": "[concat('#cloud-config', '\n\nwrite_files:', variables('teReleaseFile') , '\n\nruncmd:\n- curl -Os https://downloads.thousandeyes.com/agent/install_thousandeyes.sh\n- chmod +x install_thousandeyes.sh\n- sudo ./install_thousandeyes.sh ', variables('bbotArg'), parameters('accountGroupToken'))]", "networkSecurityGroupName": "default-NSG", "customData": "[if(equals(parameters('proxyType'), 'None'), variables('customDataNoProxy'), variables('customDataProxy'))]", "location": "[resourceGroup.location]" }, "resources": [ { "type": "Microsoft.Network/publicIPAddresses", "apiVersion": "2019-06-01", "name": "[variables('publicIPAddressName')]", "location": "[variables('location')]", "properties": { "publicIPAllocationMethod": "[variables('publicIPAddressType')]" } }, { "type": "Microsoft.Network/networkInterfaces", "apiVersion": "2019-06-01", "name": "[variables('nicName')]", "location": "[variables('location')]", "dependsOn": [ "[variables('publicIPAddressName')]" ], "properties": { "ipConfigurations": [ { "name": "ipconfig1", "properties": { "privateIPAllocationMethod": "Dynamic", "publicIPAddress": { "id": "[resourceId('Microsoft.Network/publicIPAddresses',variables('publicIPAddressName'))]" }, "subnet": { "id": "[variables('subnetId')]" } } } ] } }, { "type": "Microsoft.Compute/virtualMachines", "apiVersion": "2021-03-01", "name": "[variables('vmName')]", "location": "[variables('location')]", "dependsOn": [ "[variables('nicName')]" ], "properties": { "hardwareProfile": { "VMSize": "[parameters('VMSize')]" }, "osProfile": { "computerName": "[variables('vmName')]", "adminUsername": "[parameters('adminUsername')]", "linuxConfiguration": "[variables('linuxConfiguration')]", "customData": "[base64(variables('customData'))]" }, "storageProfile": { "imageReference": { "publisher": "[variables('imagePublisher')]", "offer": "[variables('imageOffer')]", "sku": "[variables('imageSku')]", "version": "[variables('imageVersion')]" }, "osDisk": { "createOption": "FromImage" } }, "networkProfile": { "networkInterfaces": [ { "id": "[resourceId('Microsoft.Network/networkInterfaces',variables('nicName'))]" } ] } } } ]
} - Введите следующую информацию, затем нажмите «Проверить + создать»:
Группа ресурсов
: группа ресурсов, в которой размещены существующие ресурсы
Регион
: регион, в котором размещены существующие ресурсы
Токен группы учетных записей
: токен вашей группы учетных записей ThousandEyes
Имя хоста
: имя новой виртуальной машины агента
SSH-ключ
:
мы рекомендуем добавить существующий SSH-ключ, чтобы мы могли подключиться к виртуальной машине сразу после завершения развертывания
Группа ресурсов виртуальной сети
: имя группы ресурсов, в которой размещена существующая виртуальная сеть
Виртуальная сеть Имя
: Имя существующей виртуальной сети
Имя подсети
: имя существующей подсети в виртуальной сети
Имя сетевой карты
: имя сетевой карты, которая будет создана для новой виртуальной машины агента
Имя публичного IP-адреса
: имя публичного IP-адреса, который будет создан для новой виртуальной машины агента
![Mauro5.png] - После завершения окончательной проверки нажмите «Создать», чтобы начать развертывание.
![Mauro6.png] - Подождите, пока развертывание будет завершено. Вы должны увидеть, как создаются виртуальная машина, сетевой интерфейс и публичный IP-адрес; этот процесс должен занять 3–5 минут.
![Mauro7.png]
Проверка - Перейдите к вновь созданной виртуальной машине и проверьте следующие элементы:
Состояние виртуальной машины — «Работает»
Убедитесь, что виртуальной машине назначен публичный IP-адрес
![Mauro8.png] - Через 3–5 минут вы должны увидеть новый агент, зарегистрированный на платформе ThousandEyes
![Mauro9.png] - Ваш новый агент готов к запуску тестов!
Предупреждение по безопасности
: убедитесь, что контроль доступа настроен правильно! Хотя новая виртуальная машина унаследует группы/правила сетевой безопасности, назначенные виртуальной сети, мы всегда рекомендуем проверять, что контроль доступа настроен правильно, особенно при доступе к новому публичному IP-адресу.
Ресурсы и дополнительная поддержка
Более подробную информацию о сетевых требованиях для Enterprise Agents можно найти
здесь
.
Нужна дополнительная поддержка?
[Свяжитесь с нашей службой поддержки]
[Задайте вопрос на нашем форуме]
Узнайте об основных функциях ThousandEyes









- Войдите в портал
Здравствуйте! Похоже, вам интересна эта беседа, но у вас пока нет учетной записи.
Вы устали просматривать одни и те же посты каждый раз, когда заходите на сайт? После регистрации, вам не придётся искать обсуждения в которых вы принимали участие, настройте уведомления о новых сообщениях так как вам это удобно (по электронной почте или уведомлением). У вас появится возможность сохранять закладки и ставить лайки постам, чтобы выразить свою благодарность другим участникам сообщества.
С вашими комментариями этот пост может стать ещё лучше 💗
Зарегистрироваться Войти