Назад | Перейти на главную страницу

Действительно ли моя зона BIND обеспечивает избыточность и балансировку нагрузки?

У нас есть следующие IP-адреса (например):

1.1.1.1
2.2.2.2

Каждый из них размещает один и тот же веб-сайт, но на другом сервере. Мы хотим сделать действительно простую балансировку нагрузки, заставляя веб-пользователей посещать разные IP-адреса при каждом запросе. Наше приложение полностью поддерживает это, поэтому нет никаких технических проблем с аутентификацией и т. Д.

Я думаю, у меня это работает, но я не уверен. Если я использую nslookup для запроса зоны, то IP-адреса меняются циклически, что неплохо.

Addresses:  1.1.1.1
      2.2.2.2

...

Addresses:  2.2.2.2
      1.1.1.1

Я заметил, что если http-сервер недоступен на 1-м IP-адресе, веб-браузер просто будет использовать 2-й IP-адрес, что тоже довольно круто.

Однако это кажется очень сложным для тестирования, поскольку, если у браузера есть IP-адрес (например, Chrome), он будет его придерживаться. Может это и хорошо? Итак, исходя из того, как я это объяснил, похоже ли, что он будет работать как балансировщик нагрузки с избыточностью?

«Балансировка нагрузки» DNS предназначена не для балансировки нагрузки на одного клиента, а для разных клиентов (клиент A получает первый IP-адрес, клиент B получает второй IP-адрес, клиент C получает первый IP-адрес и т. Д.).

Разрешение одного и того же имени двум разным машинам в рамках одного сеанса браузера может привести к нежелательному поведению, особенно если вы используете файлы cookie сеанса или аналогичные.

Это называется циклическим перебором DNS, также известным как «балансировка нагрузки для бедняков». Его просто реализовать, но у него есть серьезные недостатки, так как он не обеспечивает проверку работоспособности, не учитывает нагрузку на сервер и в основных установках не принимает во внимание географическое положение.

Например, если ваш браузер / ОС застрял на одном из IP-адресов и сервер, стоящий за этим IP-адресом, выйдет из строя, ваши запросы все равно будут отправляться на этот сервер.

Со страницы википедии вот основные недостатки:

Хотя циклический DNS прост в реализации, он имеет проблемные недостатки, например, связанные с кешированием записей в самой иерархии DNS, а также с кэшированием и повторным использованием адресов на стороне клиента, сочетание которых может быть трудным для управления. Циклический DNS не следует полагаться исключительно на доступность услуг. Если служба на одном из адресов в списке выйдет из строя, DNS продолжит выдачу этого адреса, и клиенты по-прежнему будут пытаться связаться с неработающей службой. Кроме того, он может быть не лучшим выбором для балансировки нагрузки сам по себе, поскольку он просто меняет порядок записей адресов каждый раз, когда запрашивается сервер имен. Не учитывается сопоставление IP-адреса пользователя и его географического положения, времени транзакции, загрузки сервера, перегрузки сети и т. Д. Циклическая балансировка нагрузки DNS лучше всего работает для служб с большим количеством равномерно распределенных подключений к серверам эквивалентной мощности. В противном случае это просто распределение нагрузки.

Подробнее о DNS Round-Robin Вот.

Если вы рассматриваете это для веб-приложений, я бы порекомендовал вам взглянуть на HAProxy, который может реализовать дешевое, но реальное резервирование.

Надеюсь это поможет!