Я новичок в балансировке нагрузки и мне интересно, можно ли использовать несколько балансировщиков нагрузки для перенаправления трафика на мои серверы приложений. Я не очень понимаю, как это можно сделать. Разве доменное имя не должно совпадать один к одному с IP-адресом определенного сервера (в этом случае IP-адрес одного балансировщика нагрузки)? Если каждый сервер балансировки нагрузки имеет разные IP-адреса, как запрос может быть получен обоими балансировщиками нагрузки (или 10 балансировщиками нагрузки, или 50, или 100)?
domain-name-system
nginx
load-balancing
haproxy
high-load
user3790827
источник
источник
Ответы:
Использование циклического DNS не очень хорошо для высокой доступности - если один сервер отключается, клиенты все равно будут пытаться подключиться к нему и ждать истечения времени ожидания.
Есть и другие способы добиться этого.
1) Активные / пассивные балансировщики нагрузки.
В основном один балансировщик нагрузки обрабатывает весь трафик для одного IP-адреса.
Если этот балансировщик выходит из строя, пассивный узел подключается и принимает IP.
Имейте в виду, что балансировщики нагрузки в значительной степени только перенаправляют трафик, поэтому для небольших и средних сайтов это может сработать.
2) Активные / активные балансировщики нагрузки.
Один и тот же IP трафика настроен на обоих (или многих других) балансировщиках нагрузки.
Входящий трафик отправляется всем балансировщикам нагрузки, но алгоритм выбирает, какой балансировщик должен отвечать, все остальные отбрасывают этот трафик.
Проще говоря, у вас есть два балансировщика нагрузки:
когда запрашивающий IP заканчивается четным числом, тогда отвечает балансировщик нагрузки A, в противном случае отвечает балансировщик нагрузки B.
Конечно, ваша инфраструктура должна поддерживать это, и есть издержки из-за того, что трафик отправляется, но отбрасывается.
Более подробная информация, например, здесь: http://community.brocade.com/t5/SteelApp-Docs/Feature-Brief-Deep-dive-on-Multi-Hosted-IP-addresses-in-Stingray/ta-p/73867
источник
Высокая доступность с помощью балансировщиков нагрузки обычно реализуется с использованием протокола виртуального IP-адреса (VIP), который позволяет нескольким хостам (то есть балансировщикам нагрузки) отвечать на один общий IP-адрес одним из нескольких возможных способов (вариации активный / пассивный, активный / активный). ,
Существует множество таких протоколов, из которых я чаще всего видел с обычными балансировщиками нагрузки: VRRP и NLB (а также довольно много неописанных протоколов в устройствах черного цвета). При расширении до маршрутизаторов и межсетевых экранов можно также встретить , например , CARP , HRSP , GLSP .
Эта стратегия имеет ряд преимуществ по сравнению с балансировкой нагрузки на DNS, которая является более простой стратегией (о которой идет речь в другом ответе).
Балансировка нагрузки на DNS обременена, например, следующим:
Используя виртуальный протокол IP для HA, можно выбрать, например:
Только вы знаете, какая стратегия и протокол лучше всего соответствуют вашему сценарию.
источник
Требования: иметь практическое решение, которое работает для облака или любого типа среды, где нет доступа к аппаратным балансировщикам нагрузки, протоколам BGP и всем этим.
Номер запроса дохода приложения неизвестен, но он должен быть достаточно высоким, чтобы соответствовать ожиданиям увеличения нагрузки без страха.
Давайте найдем приложение с похожим характером загрузки, например, магазин журналов и приложение поиска. Я нашел один .
Что они хотят:
Что они попробовали и узнали об ELB:
Почему они выбрали с Route53:
Этот конкретный пример показывает, что в некоторых сценариях (сборщик журналов, служба рекламы и т. П.) Балансировщик нагрузки избыточен, и «круговое решение проверки работоспособности DNS» отлично справляется со своей задачей.
Давайте посмотрим, что в AWS говорят об отказоустойчивости DNS:
Этот метод также делает ELB (не требуется, просто для заметки) более устойчивым, опять же, он основан на RR + Health Check:
Давайте теперь посмотрим, как это работает за кулисами. Очевидный вопрос - как бороться с кешированием DNS:
и определить подстановочный ресурс
Algolia представила «стратегию повторных попыток клиента», которая работает очень хорошо, если ваш клиент (JS в вашем случае) может справиться с этим:
источник