Presto Coordinator не поддерживает высокую доступность

Координатор Presto не имеет встроенной поддержки высокой доступности - это единственная точка отказа (SPOF). Есть ли способ преодолеть это?

3 ответа

HA может означать несколько вещей.

Нет HA для текущих запросов, а проект Presto не предоставляет HA для координатора, поскольку он по своей сути должен быть привязан к системе развертывания и мониторинга.

Ваши варианты включают:

  • использовать Starburst для развертывания, он обеспечивает быструю отработку отказа координатора уже более года
  • EMR AWS также может обеспечить отказоустойчивость для координатора (требуется проверка)
  • построи сам

В настоящее время эти решения ограничены, они не могут помочь текущим или поставленным в очередь запросам от сбоя, поэтому вам по-прежнему требуется своего рода повторная попытка на стороне клиента. Вы можете следить за https://github.com/prestosql/presto/issues/455, чтобы узнать о будущих улучшениях в Presto, которые позволят повысить устойчивость.

Настройка Presto Coordinator HA

(Если координатор выйдет из строя, это повлияет на текущие запросы)

Активный / Активный

Требования

  • N+1 имен хостов для ELB.

    Или

  • N+1 порт на ELB.

N - количество кластеров presto.

Клиенты настраиваются с одним из имен хоста elb, которое не используется в качестве имени сервера. В текущей настройке presto.client.abc.com.

Протокол Presto Query https://github.com/prestodb/presto/wiki/HTTP-Protocol

Это реализация на основе курсора. Результатом запроса является курсор, и клиенты выполняют итерацию курсора. Каждый ответ на итерацию курсора содержит следующий uri, из которого будет извлекаться следующий набор результатов. Все следующие ссылки uri для запроса должны быть направлены координатору, которым был обработан исходный запрос.

Использует имена серверов nginx для привязки запроса к координатору. Также может быть настроено несколько портов ( ELB с несколькими портами вместо нескольких имен хостов).

Поскольку вы спросили о Prestodb, проблема единого координатора изучается, чтобы разработать дизайн для нескольких координаторов для prestodb.

При нынешнем дизайне координатора решить эту проблему сложно.https://github.com/prestodb/presto/issues/3918

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

Если вы запускаете контейнеры в Kubernetes, K8s может обнаруживать неработающий модуль и автоматически перезапускать координатор, чтобы в некоторой степени повысить уровень доступности.

Хотя AWS EMR предоставляет среду с несколькими мастерами, поскольку Presto не поддерживает несколько координаторов, в настоящее время она не поддерживается. (этого нет в списке служб, которые могут использовать эту функцию)

Другие вопросы по тегам