Round robin dns настройка
Управление ответами DNS (т. е. списком возвращенных IP-адресов) – хороший, хотя и очень противоречивый метод распространения приложения. Если вы хотите сократить расходы на оборудование и инфраструктуру, DNS может обеспечить высокую доступность.
Данное руководство поможет создать географически распределенное, высокодоступное приложение с минимальным простоем с помощью DNS.
Высокая доступность
Если от приложения зависит ваш бизнес, вы должны поддерживать его работу 24 часа в сутки 7 дней в неделю, без сбоев и простоя. К сожалению, горизонтальное масштабирование не всегда помогает избежать простоя (особенно если сбой произошел в центре обработки данных).
Разместив виртуальные серверы в разных центрах обработки в разных регионах, вы можете обеспечить более стабильную работу приложения.
Высокая доступность – это качество, присущее структурам, в которых нет единой точки отказа.
Примечание: Вы можете подключить плавающие IP-адреса. Плавающий IP-адрес – это общедоступный статический IP-адрес, который можно мгновенно присвоить другому серверу. Подробнее об этой функции читайте в статье Использование плавающих IP-адресов.
Высокая доступность с помощью DNS
Когда пользователь вводит доменное имя веб-сайта, с помощью набора определенных правил (то есть протокола), веб-браузер подключается к серверам имен и запрашивает адреса машин, на которых размещен указанный веб-сайт. Получив IP-адрес, он отправляет запрос с некоторыми дополнительными данными на этот компьютер и отображает ответ.
DNS позволяет поддерживать несколько записей (даже одного вида), благодаря чему становится возможным перечислить несколько хостов.
Представьте ситуацию (как показано на приведенной выше схеме): вы указываете IP-адрес двух балансировщиков нагрузки или обратных прокси-серверов, расположенных в двух разных ЦОД, каждый из которых настроен для балансировки нагрузки между серверами приложений, которые также расположены в разных местах. Если один из центров обработки данных становится недоступным, веб-браузер клиента попытается использовать следующие записи IP-адресов, возвращаемые DNS-сервером, и повторить процесс для получения доступа к сайту.
Такая технология балансировки нагрузки называется round robin DNS.
На первый взгляд такая технология может показаться сложной. Попробуем подвести итоги:
- DNS может содержать несколько записей для одного и того же домена.
- DNS может возвращать список IP-адресов для одного и того же домена.
- Когда веб-браузер запрашивает сайт, он будет пробовать эти IP-адреса один за другим, пока не получит ответ.
- Эти IP-адреса должны указывать на не серверы приложений, а на балансировщики нагрузки или обратные прокси-серверы.
- Обратные прокси должны распределять нагрузку между несколькими серверами в разных ЦОД.
- Если центр обработки данных не работает и веб-браузер не может получить ответ от IP-адреса (то есть от балансировщика нагрузки), он попытается подключиться к другому адресу.
- Скорее всего, второй балансировщик нагрузки вернет ответ на запрос клиента (вероятность того, что в разных ЦОД одновременно случится сбой, очень мала).
- Серверы баз данных должны поддерживать репликацию.
Пример балансировки нагрузки приложений
Ниже приведен пример использования политики DNS для балансировки нагрузки приложений.
В Северная Америка, который является основным рынком для Служб подарков Contoso, веб-сайт размещается в трех центрах обработки данных: Чикаго, IL, Даллас, TX и Сиэтл, WA.
Веб-сервер Сиэтла имеет лучшую конфигурацию оборудования и может обрабатывать в два раза больше нагрузки, чем другие два сайта. Компании Contoso Gift Services требуется, чтобы трафик приложений направлялся следующим образом.
- Так как веб-сервер Сиэтла содержит больше ресурсов, половина клиентов приложения направляется на этот сервер.
- Четверть клиентов приложения направляются в центр обработки данных Далласа, TX
- Четверть клиентов приложения направляется в Чикаго, IL, центр обработки данных
На следующем рисунке показан этот сценарий.
Развертывание высокодоступного приложения
Настройка балансировки нагрузки или обратного прокси-сервера
Сначала нужно обеспечить балансировку нагрузки. Для этого подготовьте два (или больше) балансировщика нагрузки, которые смогут взаимодействовать с серверами приложений.
Создайте два сервера в двух разных ЦОД.
Чтобы обеспечить распределение нагрузки, установите Nginx, Apache или HAProxy.
Узнайте IP-адрес балансировщиков.
Настройте записи DNS.
Настроив два балансировщика, создайте две записи А.
Обычно это можно сделать с помощью панели управления во вкладке DNS.
После этого настройте серверы приложений. Вам понадобится два сервера в разных ЦОД.
Затем нужно настроить балансировщики нагрузки для распределения и проксирования запросов между серверами приложения. Это можно сделать с помощью этих руководств:
Затем нужно настроить базу данных.
В зависимости от выбранного вами сервера базы данных выполните одно из предложенных руководств на сервере БД и настройте репликацию.
Теория
Статья описывает одну из технологий балансировки нагрузки, которая может быть реализована средствами DNS. Для перевода имени хоста в IP-адрес клиент DNS направляет серверу DNS рекурсивный запрос (т.е. запрос, на который сервер DNS возвращает клиенту либо ответ с IP адресом, либо ответ с ошибкой).
В подавляющем большинстве случаев в зонах DNS содержится только один IP адрес, соответствующий тому или иному имени хоста. А какой IP адрес будет возвращать клиенту сервер DNS, если зона содержит несколько записей типа A для одного и того же имени? Ответ простой: сервер DNS всегда возвращает клиенту все IP адреса, соответствующие запрашиваемому имени. А дальше клиент пытается связаться с первым IP адресом в списке и, если он не будет найден, делает попытку связаться со вторым адресом и т.д.
Поскольку адрес 20.0.0.1 идет первым в списке, клиент всегда будет пытаться связаться именно с сайтом по адресу 20.0.0.1. Получается, что сайты 30.0.0.1 и 40.0.0.1 используются только как пассивный резерв. До тех пор, пока "жив" сайт по адресу 20.0.0.1, сайты 30.0.0.1 и 40.0.0.1 не получат от клиента ни одного запроса.
Как сделать, чтобы запросы “доставались” всем хостам? Ответ простой: настроить на сервере DNS функцию Round robin.
На второй запрос от клиента или от другого сервера DNS будет возвращен ответ
В результате мы получаем динамическую балансировку запросов клиентов между несколькими хостами.
Практика
____________________________________________________________________________________
How to Configure Application Load Balancing
The following sections show you how to configure DNS policy for application load balancing.
Create the Zone Scopes
A zone scope is a unique instance of the zone. A DNS zone can have multiple zone scopes, with each zone scope containing its own set of DNS records. The same record can be present in multiple scopes, with different IP addresses or the same IP addresses.
By default, a zone scope exists on the DNS zones. This zone scope has the same name as the zone, and legacy DNS operations work on this scope.
You can use the following Windows PowerShell commands to create zone scopes.
Add Records to the Zone Scopes
Now you must add the records representing the web server host into the zone scopes.
You can use the following Windows PowerShell commands to add records to the zone scopes.
Create the DNS Policies
You can use the following Windows PowerShell commands to create a DNS policy that balances application traffic across these three datacenters.
In the example command below, the expression –ZoneScope "SeattleZoneScope,2; ChicagoZoneScope,1; DallasZoneScope,1" configures the DNS server with an array that includes the parameter combination , .
You have now successfully created a DNS policy that provides application load balancing across Web servers in three different datacenters.
You can create thousands of DNS policies according to your traffic management requirements, and all new policies are applied dynamically - without restarting the DNS server - on incoming queries.
Принцип работы балансировки нагрузки приложений
После настройки DNS-сервера с политикой DNS для балансировки нагрузки приложений с помощью этого сценария DNS-сервер отвечает 50 % времени с адресом веб-сервера Сиэтла, 25 % времени с адресом веб-сервера Далласа и 25 % времени с адресом веб-сервера Чикаго.
Таким образом, для каждого четырех запросов, получаемых DNS-сервером, он отвечает двумя ответами для Сиэтла и по одному для Далласа и Чикаго.
Одной из возможных проблем с балансировкой нагрузки с помощью политики DNS является кэширование записей DNS клиентом DNS и сопоставителя или LDNS, что может препятствовать балансировке нагрузки, так как клиент или сопоставитель не отправляют запрос на DNS-сервер.
Это поведение можно уменьшить, используя низкое значение срока жизни (TTL) для записей DNS, которые должны быть сбалансированы.
Example of Application Load Balancing
Following is an example of how you can use DNS policy for application load balancing.
In North America, which is the primary market for Contoso Gift Services, the Web site is hosted in three datacenters: Chicago, IL, Dallas, TX and Seattle, WA.
The Seattle Web server has the best hardware configuration and can handle twice as much load as the other two sites. Contoso Gift Services wants application traffic directed in the following manner.
- Because the Seattle Web server includes more resources, half of the application's clients are directed to this server
- One quarter of the application's clients are directed to the Dallas, TX datacenter
- One quarter of the application's clients are directed to the Chicago, IL, datacenter
The following illustration depicts this scenario.
Дополнительная информация
Функция заказа netmask используется для возврата адресов для запросов типа A DNS для приоритета локальных ресурсов для клиента. Например, если эти условия верны, результаты запроса на имя возвращаются клиенту на основе близости ip-адресов.
- У вас есть восемь записей типа A для того же имени DNS.
- Каждый из восьми записей типа A имеет отдельный адрес.
В начальном выпуске Microsoft Windows 2000 Server эта близость вычисляется на основе исходного класса адреса, назначенного клиенту. Если клиенту назначен адрес родного класса A, то ответы, отосланные клиенту, будут приоритизированы записями, которые соответствуют членству в сети класса клиента A. Это также относится к родным адресам класса B и родному классу C.
Функция кругового робина используется для рандомизации результатов аналогичного типа запроса, чтобы обеспечить базовую функциональность балансировки нагрузки. В более ранних примерах восемь записей типа А с одинаковым именем и разными IP-адресами приводят к тому, что для каждого запроса в верхней части будет приоритизирован другой ответ. Так как новый IP-адрес приоритизирован в верхней части каждого запроса, клиенты не будут повторно маршрутизироваться на один и тот же сервер.
Начальный выпуск Windows 2000 Server не может одновременно использовать функцию заказа netmask и функцию кругового робина. Если включена функция заказа netmask, ответы всегда предоставляются клиентам в том же порядке. В Windows Server 2003 это поведение изменилось, чтобы разрешить использование как функции заказа netmask на основе подсетей, так и функции кругового робина. Использование функции заказа netmask и функции кругового робина обеспечивает осведомленность о близости и балансировку нагрузки.
Во многих текущих сетевых средах часто бывает необычно иметь маску подсети, которая является родным для фактического адреса. Поэтому нетмаск-заказ, основанный на родном классе IP-адреса, ненадежен при прогнозировании локальности сети. Windows Сервер 2003 расположен вблизи класса C независимо от типа родного адреса.
Вы можете использовать команду Dnscmd /Config /LocalNetPriorityNetMask 0x000000FF Dnscmd.exe для восстановления параметров Windows Server 2003 в параметры по умолчанию.
Хотя параметр по умолчанию в Windows Server 2003 является базой близости к классу C, этот параметр можно изменить. Можно определить, какая часть маски является относительной для заказа netmask в зависимости от среды. При выпуске коммутатора /LocalNetPriorityNetMask можно указать те биты, которые важны для операции заказа netmask. Вы можете использовать Dnscmd /Config /LocalNetPriorityNetMask 0x0000FFFF команду, чтобы использовать класс B (или 16 бит) для заказа netmask.
В следующей таблице перечислены другие параметры заказа netmask:
Netmask | LocalPriorityNet |
---|---|
255.255.255.0 | 0x000000ff |
255.255.0.0 | 0x0000ffff |
255.0.0.0 | 0x00ffffff |
Если для хоста используется только 6 битов, маска — 255.255.255.192. В ciDR-нотации, бесклассовом маршрутизации междоменов, это будет маска /26. Вы можете использовать команду для настройки подсети Dnscmd /Config /LocalNetPriorityNetMask 0x0000003F Dnscmd.exe класса C.
Значительные биты устанавливают, какая часть адреса — это место хозяйского адреса. Поскольку двоичный эквивалент 0x3 равно 11, а двоичный эквивалент 0xF — 1111, в качестве части хост-адреса устанавливаются 6 битов. Если требуется 7 битов (255.255.255.128 или /25), значение будет 0x0000007F, так как двоичный эквивалент 0x7F 0111 1111. Если требуется всего 5 битов (255.255.255.224 или /27), значение будет 0x0000001F, так как двоичный эквивалент 0x1F равен 0001 1111.
Команда настраивает Windows Server 2003 для использования кругового и сетевого заказа на основе класса Dnscmd /Config /LocalNetPriorityNetMask 0xFFFFFFFF ip-адресов клиента.
You can use this topic to learn how to configure DNS policy to perform application load balancing.
Previous versions of Windows Server DNS only provided load balancing by using round robin responses; but with DNS in Windows Server 2016, you can configure DNS policy for application load balancing.
When you have deployed multiple instances of an application, you can use DNS policy to balance the traffic load between the different application instances, thereby dynamically allocating the traffic load for the application.
How Application Load Balancing Works
After you have configured the DNS server with DNS policy for application load balancing using this example scenario, the DNS server responds 50% of the time with the Seattle Web server address, 25% of the time with the Dallas Web server address, and 25% of the time with the Chicago Web server address.
Thus for every four queries the DNS server receives, it responds with two responses for Seattle and one each for Dallas and Chicago.
One possible issue with load balancing with DNS policy is the caching of DNS records by the DNS client and the resolver/LDNS, which can interfere with load balancing because the client or resolver do not send a query to the DNS server.
You can mitigate the effect of this behavior by using a low Time-to-Live (TTL) value for the DNS records that should be load balanced.
Структура развертывания высокодоступного приложения
Структура развертывания высокодоступного приложения зависит от обслуживания запросов из разных центров обработки данных.
Существует много способов реализации такой структуры, но проще всего, пожалуй, просто воспользоваться преимуществами DNS.
Базовая структура выглядит так:
________________
| |
| CLIENT |
| WEB BROWSER |
|________________|
||
||
_______\/_______
| |
| DNS SERVER |
|________________|
||
||
_______/ \_______
/ \
/ \
____________________ ____________________
| | | |
| SAN FRANCISCO | | SAN FRANCISCO |
|____________________| |____________________|
| ______________ | | ______________ |
| | | | | | | |
| | WEB SERVER | | | | WEB SERVER | |
| | LOAD BALANCE | | | | LOAD BALANCE | |
| | PROXY | | | | PROXY | |
| |_____ _____| | | |_____ _____| |
|________| |________| |________| |________|
|| __ __ ||
||<=====||==================||=====>||
\/ \/ \/ \/
____________________ ____________________
| | | |
| SAN FRANCISCO | | NEW YORK |
|____________________| |____________________|
| ______________ | | ______________ |
| | | | | | | |
| | APP SERVER | | | | APP SERVER | |
| |______ ______| | | |______ ______| |
| ______||______ | | ______||______ |
| | | | | | | |
| | DATABASE || DATABASE | |
| |______________| | | |______________| |
|____________________| |____________________|
Сводка
В этой статье описывается функция заказа netmask и функция кругового робина в Windows Server 2003 системы доменных имен (DNS). Кроме того, в этой статье описывается совместное использование этих функций. Вы можете сделать это, чтобы рандомизировать результаты, возвращаемые с заказаного сервера netmask.
Функция кругового робина DNS позволяет DNS каждый раз возвращать IP-адреса имени в другом порядке.
Настройка балансировки нагрузки приложений
В следующих разделах показано, как настроить политику DNS для балансировки нагрузки приложений.
Создание областей зоны
Область зоны — это уникальный экземпляр зоны. Зона DNS может иметь несколько областей зоны, при этом каждая область зоны содержит собственный набор записей DNS. Одинаковая запись может присутствовать в нескольких областях с разными IP-адресами или одинаковыми IP-адресами.
По умолчанию область зоны существует в зонах DNS. Эта область зоны имеет то же имя, что и зона, и устаревшие операции DNS работают с этой областью.
Для создания областей зоны можно использовать следующие команды Windows PowerShell.
Дополнительные сведения см. в разделе Add-DnsServerZoneScope
Добавление записей в области зоны
Теперь необходимо добавить записи, представляющие узел веб-сервера, в области зоны.
Для добавления записей в области зоны можно использовать следующие команды Windows PowerShell.
Дополнительные сведения см. в разделе Add-DnsServerResourceRecord.
Создание политик DNS
Следующие команды Windows PowerShell можно использовать для создания политики DNS, которая балансирует трафик приложений в этих трех центрах обработки данных.
В приведенном ниже примере команды выражение –ZoneScope "SeattleZoneScope,2; ChicagoZoneScope,1; DallasZoneScope,1" настраивает DNS-сервер с массивом, который включает сочетание параметров , .
Теперь вы успешно создали политику DNS, которая обеспечивает балансировку нагрузки приложений между веб-серверами в трех разных центрах обработки данных.
Вы можете создать тысячи политик DNS в соответствии с требованиями к управлению трафиком, и все новые политики применяются динамически без перезапуска DNS-сервера в входящих запросах.
В этой статье описывается функция заказа netmask и функция кругового робина и совместное использование этих функций.
Применяется к: Window Server 2003
Исходный номер КБ: 842197
Проверка работы DNS Round robin
В Windows Server опция Enable round robin включена по умолчанию. Достаточно в консоли DNS Manager открыть свойства DNS сервера и посмотреть вкладку Advanced.
Что такое DNS Round robin и как он работает-01
Что такое DNS Round robin и как он работает-02
Ping statistics for 20.0.0.1:
Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),
C:\>
Анализ кэша DNS на стороне клиента дает следующий результат:
C:\>ipconfig /displaydns
Windows IP Configuration
Теперь становится понятно, почему мы “пингуем” один и тот же хост 20.0.0.1. Сервер DNS возвращает клиенту все записи из зоны с указанием времени кэширования, равным по умолчанию 1 часу (или 3600 секундам). Поэтому до истечения времени кэширования (TTL – Time To Live) клиент больше не направляет к серверу DNS никаких новых запросов.
Возможные варианты:
постоянный сброс кэша на стороне клиента (плохой вариант);
установка времени кэширования, равное нулю, в свойствах зоны (плохой вариант, поскольку влияет на всю зону);
установка индивидуального времени кэширования на отдельных записях (хороший вариант).
Для настройки индивидуального времени кэширования в консоли DNS Manager требуется сначала включить режим View –> Advanced. Затем последовательно открываем свойства записей (в нашем примере это три записи www) и ставим время кэширования, равное нулю.
Что такое DNS Round robin и как он работает-03
Ping statistics for 40.0.0.1:
Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),
Файл зоны на сервере DNS при этом будет выглядеть так:
;
; Database file gorbunov.pro.dns for gorbunov.pro zone.
; Zone version: 7
;
www 0 A 20.0.0.1
0 A 30.0.0.1
0 A 40.0.0.1
Добавления нуля в записи типа A можно сделать и вручную непосредственно в файле зоны.
Технология DNS Round robin часто применяется для динамической балансировки нагрузки между зеркальными хостами. Она значительно проще в реализации, чем вариант настройки для тех же целей кластера NLB. При настройке DNS Round robin на серверах Windows не забывайте, что настройки по умолчанию для сервера DNS не позволяют в полной мере реализовать балансировку запросов и требуется ручная конфигурация сервера.
В этом разделе вы узнаете, как настроить политику DNS для балансировки нагрузки приложений.
При развертывании нескольких экземпляров приложения можно использовать политику DNS для балансировки нагрузки трафика между различными экземплярами приложения, тем самым динамически распределяя нагрузку трафика для приложения.
Читайте также: