понедельник, 15 апреля 2019 г.

Высокая доступность. Начало


Высокая доступность, она же High Availability или HA. Это система или компонент, который непрерывно работоспособен достаточно длительный промежуток времени.






Основные принципы HA - устранение единой точки отказа и обнаружение сбоев когда они случаются.

Для начала необходимо рассмотреть некоторую терминологию, а потом переходить к практике.

Как обычно достигается HA? - Применяя кластеризацию.
Кластеризация - это объединение множества хостов для совместной работы над одной задачей.

Кластеров существует несколько видов:
  • высоко доступные кластеры - выполняют задачу по обеспечению работы сервисов насколько это возможно
  • кластеры балансировки нагрузки - все узлы содержат одинаковое ПО и выполняют одну задачу в одно время и запросы от клиентов просто распределяются между всеми узлами кластера
  • вычислительные кластеры - в таких кластерах задачи разбиваются на мелкие части, которые в свою очередь вычисляются на различных узлах кластера
  • кластерное хранилище - все узлы предоставляют единую распределенную файловую систему, которая будет использоваться клиентами для чтения и записи данных одновременно 
Чтобы не запутаться окончательно лучше начать рассмотрение с высокодоступных (HA) кластеров. Именно так и поступим.

HA кластер можно представить в виде нескольких слоев/уровней.
На нижнем уровне обеспечивается членство в кластере (membership layer). На этом уровне происходит работа по отслеживанию доступности узлов кластера.
Так же можно выделить отдельный уровень управления ресурсами кластера (resource management layer). Здесь происходит обеспечение доступности ресурсов.
Преимущества высокодоступных решений в повышенной устойчивости в следующих ситуациях:
  • накатывание патчей
  • планируемые выключения
  • непланируемые выключения во время сбоев (сервера, ПО, сети, хранилища) 
И еще пару важных концепций - quorum и fencing.
Quorum - это большинство в кластере, решение ситуации split-brain. Split-brain - это ситуация когда один сервер становится изолированным в кластере. И при этом каждый сервер считает, что он остался один, и это приводит к неконсистентности данных.
Кворум же работает по принципу голосов, каждый сервер в кластере имеет один голос.
Поэтому большинство узлов в кластере по-прежнему будет иметь доступ к ресурсам (на запись), таким как распределенное хранилище (и продолжать предоставлять сервис пользователям).

Fencing - окончательно решает проблему split-brain.
Для этого используется так называемый STONITH (Shoot The Other Node In The Head) для ликвидации изолированных нод в кластере.

Например, можно интегрировать ИБП (например APC) в кластер и отправлять команды APC отключать питание на сервере который выпал из кластера.
Виды fencing включают в себя disk based (заблокировать или покрашить диск на сервере) или virt based - сообщить гипервизору что хост должен быть включен и IPMI, и другие.

Завершив с рассмотрением базовой теории и общих концепций можно переходить к конкретным программным решениям.

Комментариев нет:

Отправить комментарий