Если я создам несколько записей DNS A для одних и тех же хостов, например:
my-domain.com A 1.2.3.4 3600s
my-domain.com A 4.5.6.7 3600s
my-domain.com A 7.8.9.0 3600s
Действительно ли запросы между тремя серверами выполняются циклически? Это даже?
Предположим, клиент запрашивает my-domain.com и возвращается 1.2.3.4
. Это затем кешируется на час, поэтому каждый запрос, сделанный клиентом, будет использовать 1.2.3.4
, или каждый запрос будет захватывать случайный хост?
Что будет, если 4.5.6.7
выходит из строя, DNS автоматически удаляет его, или запросы по-прежнему будут маршрутизироваться к нему циклически?
Да, это будет круговая система между тремя. Для DNS-сервера Windows вам необходимо включить Round Robin на своем DNS-сервере. Когда он включен, он будет отвечать всеми тремя записями в порядке вращения:
1-й клиент - 1.2.3.4, 4.5.6.7, 7.8.9.0
2-й клиент - 4.5.6.7, 7.8.9.0, 1.2.3.4
3-й клиент - 7.8.9.0, 1.2.3.4, 4.5.6.7
Это зависит от реализации на стороне клиента. Некоторые клиенты будут переключаться между записями за соединение, а некоторые будут использовать первый полученный адрес. Нагрузка по-прежнему сбалансирована, поскольку второй клиент, указанный выше, будет иметь другой упорядоченный список, чем первый.
Если 4.5.6.7
если он упадет, он не будет удален автоматически. Клиенты по-прежнему будут пытаться подключиться к этому IP. Это недостаток Round Robin DNS.
Да, вы можете реализовать некоторое распределение нагрузки, используя несколько записей DNS для одной и той же службы. Однако это не лучший способ реализовать распределение нагрузки, особенно если у вас все хосты находятся в одном месте. Гораздо более эффективным подходом будет использование выделенной машины в качестве балансировщика нагрузки. Эта машина получает весь трафик и перенаправляет его на один из реальных серверов на основании нескольких критериев, таких как:
Еще один важный момент в балансировщиках нагрузки, таких как haproxy, - это возможность проверять наличие неисправного узла и исключать его из списка серверов, а это недоступно в методе на основе DNS.
Кроме того, кэширование DNS делает вещи более сложными и трудными для управления. Кэширование DNS может происходить в любом узле от вашего клиента до любого промежуточного DNS-сервера до достижения авторитетного DNS-сервера.