Распределенное приложение - является ли балансировщик нагрузки единственной точкой отказа?

В общем, хочу разобраться в распределенном приложении - является ли балансировщик нагрузки единственной точкой отказа?

Я не уверен, но это может быть балансировщик нагрузки Apache или, кроме того, балансировщик нагрузки устройства / аппаратного обеспечения, как показано в Сеть F5 и т. Д.

Я видел (на документах / слайдах), что проекты могут иметь несколько балансировщиков нагрузки apache для одного и того же приложения.

У меня было обсуждение с моим коллегой - сопоставление нескольких IP-адресов / виртуальных машин / ящиков unix (с аппаратным устройством балансировки нагрузки) с одним и тем же доменом DNS (например, www.amazon.com) - но тогда кто будет заботиться о том, на каком основании / алгоритме запрос будет переходить к конкретному ящику IP / unix (который сопоставлен с amazon.com/DNS)

Мой вопрос: в начале потока запросов (в первой точке входа) - есть только одна машина (которая отправляет запросы в подсистемы балансировки нагрузки на основе какого-либо алгоритма), и если эта машина выходит из строя, распределенная система (с несколькими балансировщиками нагрузки и кластеры и т. д.) пойдут вниз


person Learner    schedule 15.11.2016    source источник
comment
Я не мог понять, в чем ваш вопрос. Вы можете это четко сформулировать?   -  person karliwson    schedule 15.11.2016


Ответы (1)


Извините, если я выдуваю это изо всех сил.

Имея в виду определение единой точки отказа (SPOF), если ваш LB выходит из строя, ваше приложение будет недоступно, так что, короче говоря, да, один LB или обратный прокси-сервер является SPOF.

Почему это так? Предполагая, что у вас есть только один LB, и он все еще может легко обрабатывать весь трафик, который у вас может быть, вам также необходимо быть уверенным в том, что вы защищены от любого аппаратного сбоя или любого другого сбоя, который может вывести ваше устройство из строя. (экстремальная ситуация обвала дата-центра).

Как справиться с проблемой?

Я просто упомяну здесь, что простое добавление слоев перед вашими серверами приложений не обязательно решает все ваши проблемы, вместо этого вы добавляете «сетевые переходы», которые в результате имеют, даже незначительные, накладные расходы времени на каждый запрос. Также иногда усложняет устранение неполадок, увеличивает затраты и все прочие неприятности, которые приносит сложная инфраструктура. Вот почему мне понадобится очень веская причина для наличия разных LB в очереди.

Кстати, архитектура, которой я буду следовать (подобная той, которую вы видели в статьях, как сказано), - это два LB перед вашей инфраструктурой (более двух, только если у них есть трудности с обработкой вашего трафика) и балансировка нагрузки DNS между их.

Конечно, у этого решения есть недостатки. DNS не зависит от состояния вашей серверной части, поэтому у вас нет функции переключения при отказе.

Вы можете решить эту проблему, используя надежную систему мониторинга в сотрудничестве с вашим DNS, чтобы выполнить автоматическое изменение DNS и, таким образом, функциональность аварийного переключения. Опять же, вы должны согласиться с тем, что DNS привязан к Time To Live (TTL), и некоторые клиенты будут кэшировать "неправильный" IP-адрес во время сбоя.

Как вы понимаете, вышеперечисленное не идеально, но, вероятно (в большинстве случаев), это ваш единственный выход.

Для ситуаций, когда время простоя еще менее терпимо (даже для части клиентов), я оставлю несколько альтернатив.

  1. Global Server Load Balancer (GSLB), это услуга, и вот так вы ее купите. Он всегда выполняет сложную работу, направляя трафик по вашему желанию, либо в архитектуру Active-Passive, скажем Primary-Disaster, либо в Active-Active, например, в один центр обработки данных в США, а другой в Азии. Конечно, это решение (за исключением того, что оно будет стоить довольно дорого) кажется простым в реализации, хотя имейте в виду все вещи, которые вы должны учитывать, чтобы оно работало должным образом, я не буду углубляться в технические вопросы, я просто упомяну, что вам понадобится двойное оборудование, которое нужно будет настроить для независимой работы между вашими центрами обработки данных, но с полной синхронизацией там, где это необходимо.

  2. Протокол пограничного шлюза (BGP), вам нужно будет реализовать это с помощью своего провайдера. Реализация здесь может быть довольно сложной, и она должна быть индивидуальной, чтобы быть оптимизированной для ваших нужд. Здесь, как и прежде, у вас вся головная боль двойной инфраструктуры. Но если вы дошли до этого решения, скорее всего, вы будете работать более чем в одном месте.

Сказав все вышесказанное, одного мощного LB, размещенного в облаке, будет достаточно для большинства веб-приложений / сайтов.

person zochamx    schedule 16.11.2016