Настройка DNS в виртуальной сети Azure
У меня есть несколько облачных сервисов и виртуальная машина с Redis в Azure. Насколько я понимаю, мне нужно создать виртуальную сеть, чтобы облачные сервисы могли обмениваться данными с Redis на виртуальной машине. Это было просто. Теперь я хотел бы настроить DNS, чтобы мне не приходилось указывать IP-адреса везде.
Все статьи, которые я нахожу, посвящены интеграции внутреннего DNS-сервера, но у меня его нет. Есть ли способ использовать godaddy или dnsimple для этого? Как насчет простой установки службы DNS на текущей виртуальной машине?
Я предполагаю, что мой вопрос может быть сформулирован так: что мне нужно сделать, чтобы мои облачные сервисы могли общаться с моим VN через DNS-имя?
3 ответа
В Azure есть некоторые "скрытые" возможности VN, которые помогут вам. Во-первых, да, вы правы. Если вы создадите виртуальную сеть, разрешение имен не будет работать, если вы не предоставите свой собственный DNS-сервер и не настроите его для динамического обновления. Вы не можете использовать общедоступные службы DNS для предоставления разрешения имен DNS для виртуальной сети Windows Azure.
Итак, вот ваше решение. Вы должны запустить "Очистить", потому что вы не можете изменить IP-адрес DNS-сервера, если на VNet запущены виртуальные машины.
- Создайте виртуальную сеть как обычно (и ее подсети)
- Укажите адрес DNS-сервера. Установите для этого адреса значение xxx.xxx.xxx.4 (4 всегда будет первым IP-адресом, назначенным в данной подсети!)!
- На этой чистой виртуальной сети создайте новую виртуальную машину с Windows Server. Эта виртуальная машина получит xxx.xxx.xxx.4 IP-адрес
- Установите и настройте роль DNS-сервера на этом компьютере.
- НЕ УСТАНАВЛИВАЙТЕ СТАТИЧЕСКИЙ IP-АДРЕС ЭТОЙ МАШИНЫ!
- Создайте остальные виртуальные машины как обычно
Что нужно знать:
- Никогда не назначайте статические IP-адреса любой виртуальной машине в Windows Azure. У них должен быть выделенный IP-адрес DHCP
- Будьте осторожны, сначала создайте DNS-машину, чтобы она получала.4 IP-адрес
- Ваша виртуальная машина DNS сохранит свой IP-адрес (.4) до тех пор, пока вы не удалите его.
Эта архитектура доказала свою работоспособность и работает в Windows Azure IaaS (она же виртуальные машины)
У меня была та же проблема, и я считаю, что я нашел разумное решение, которое не требует дополнительных машин и требует очень мало работы.
Короче говоря, вы помещаете свой бэкэнд и веб-интерфейс в одну и ту же виртуальную сеть и подсеть, чтобы им был присвоен один и тот же DNS-сервер. Затем вы настраиваете список поиска DNS-суффиксов во внешних службах, чтобы они использовали DNS-суффикс бэкэнда при выполнении разрешения имен.
шаги:
- Войдите в одну из ваших внутренних виртуальных машин и выполните
ipconfig
, Из вывода получим значение
Connection-specific DNS Suffix
Установите значение
$dnsSuffix
к значению из шага 2 в следующем сценарии.$dnsSuffix = 'xxxxxx.yyyyy.uswest.internal.cloudapp.net'; $nics = Get-WmiObject ` -Class win32_networkadapterconfiguration ` -Filter 'IPEnabled = true'; $nics | % { $nicSuffixes = $_.DNSDomainSuffixSearchOrder; if ($nicSuffixes -notcontains $dnsSuffix) { $_.DNSDomainSuffixSearchOrder = $dnsSuffix + $_.DNSDomainSuffixSearchOrder; } }; Invoke-WmiMethod ` -Class win32_networkadapterconfiguration ` -Name setDNSSuffixSearchOrder ` -ArgumentList @(@($dnsSuffix)),$null;
Назовите этот сценарий Set-DnsSuffixSearchList.ps1 и включите его в свой проект, установив для свойств файла значение "Копировать всегда" следующим образом:
Создайте файл с именем
startup.cmd
который содержит следующее содержимое, а также устанавливает свойство "Копировать всегда":powershell -Command "Set-ExecutionPolicy Unrestricted" >> "%TEMP%\StartupLog.txt" 2>&1 # Set the DNS SearchList so that backend hosts are resolvable using their shortened names. powershell .\Set-DnsSuffixSearchList.ps1 >> "%TEMP%\StartupLog.txt" 2>&1
Добавьте задачу запуска в свой проект облачной службы Azure, отредактировав
ServiceDefinition.csdef
и добавив следующий XML подWebRole
узел:<Startup> <Task commandLine="startup.cmd" executionContext="elevated" taskType="background"> </Task> </Startup>
Вы закончили, предполагая, что вы уже указали, что ваш сайт и сервер должны находиться в одной подсети. Если нет, добавьте это в свой
ServiceConfiguration.Cloud.cscfg
файл внутриServiceConfiguration
узел:<NetworkConfiguration> <VirtualNetworkSite name="yourVirtualNetwork" /> <AddressAssignments> <InstanceAddress roleName="yourCloudServiceName"> <Subnets> <Subnet name="yourSubnetName" /> </Subnets> </InstanceAddress> </AddressAssignments> </NetworkConfiguration>
Надеюсь, что это поможет всем, кто сталкивается с той же проблемой!
На новом портале вы можете установить свое DNS-имя в общедоступном ресурсе IP-адресов. Вот фотография, которая описывает, как его настроить: