presto + как управлять серверами presto stop/start/status
Мы установили следующий кластер presto на Linux redhat 7.2 версии
Presto последняя версия - 0,216
1 координатор Presto
231 сотрудник Presto
на каждой рабочей машине мы можем использовать следующую команду для проверки статуса
/app/presto/presto-server-0.216/bin/launcher status
Running as 61824
а также остановить / начать как следующий
/app/presto/presto-server-0.216/bin/launcher stop
/app/presto/presto-server-0.216/bin/launcher start
Я также ищу в Google пользовательский интерфейс, который может управлять состоянием / остановкой / запуском Presto, но ничего не видел по этому поводу.
очень странно, что Presto не поставляется с некоторым пользовательским интерфейсом, который может отображать состояние кластера и выполнять действия остановки / запуска, если нам нужно это сделать.
как все знают, единственный пользовательский интерфейс Presto - это показывать статус и не иметь действий в качестве остановки / запуска.
В приведенном выше примере экрана мы видим, что активными сотрудниками Presto являются только 5 из 231, но этот пользовательский интерфейс не поддерживает действия остановки / запуска и не показывает, на каком работнике Presto не активен.
так что мы можем с этим поделать?
очень плохая идея получить доступ к каждой рабочей машине и посмотреть, работает ли presto или нет
почему Presto не имеет централизованного пользовательского интерфейса, который может остановить / начать действие?
пример того, что мы ожидаем от пользовательского интерфейса, - неполный список
, , ,
0 ответов
В настоящее время Presto использует службу обнаружения, в которой рабочие объявляют о своем присоединении к кластеру, поэтому, если рабочий узел не зарегистрирован, у координатора или сервера обнаружения нет возможности узнать о его присутствии и / или перезапустить его.
В Qubole мы используем внешний сервис вместе с presto master, который отслеживает узлы, которые не зарегистрированы в сервисе обнаружения в течение определенного интервала. Эта служба отвечает за удаление таких узлов из кластера. Еще одна вещь, которую мы делаем, - это использование службы мониторинга на каждом из рабочих узлов presto, которая гарантирует, что сервер presto перезапускается всякий раз, когда он выходит из строя.
Возможно, вам придется сделать что-то подобное для управления кластером, поскольку presto не предоставляет этого прямо сейчас.
По моему мнению и опыту управления кластером prestosql, это имеет значение для обнаружения служб в шаблонах архитектуры.
Пока что в версии prestodb/prestosql с открытым исходным кодом используются следующие шаблоны:
- Обнаружение служб на стороне сервера - это означает, что клиентское приложение, такое как presto cli, или любое приложение, использующее presto sdk, просто должно связаться с координатором без осведомленности о рабочих узлах.
- реестр служб - место для отслеживания доступных экземпляров.
- Саморегистрация - экземпляр службы отвечает за регистрацию в реестре служб. Это ключевая часть, которая вызывает несколько вариантов поведения:
- Экземпляры служб должны быть зарегистрированы в реестре служб при запуске и отменены при завершении работы.
- Экземпляры службы, в которых происходит сбой, необходимо отменить регистрацию в реестре служб.
- Экземпляры службы, которые запущены, но не могут обрабатывать запросы, должны быть отменены из реестра служб.
Таким образом, управление жизненным циклом каждого работника presto сохраняется за каждым экземпляром.
так что мы можем с этим поделать?
Он обеспечивает некоторую наблюдаемость из самого кластера presto, например HTTP API. /v1/node
а также /v1/service/presto
чтобы увидеть статус экземпляра. Лично я рекомендую использовать другой менеджер кластера, например k8s или nomad, для управления членами кластера presto.
это очень плохая идея получить доступ к каждой рабочей машине и посмотреть, работает ли presto или нет, почему у presto нет централизованного пользовательского интерфейса, который может выполнять действие остановки / запуска?
Нет мнения о хорошем / плохом. Возьмем, к примеру, k8s: вы можете управлять всеми работниками presto как одним развертыванием k8s и управлять каждым воркером presto в одном модуле. Он может использовать проверки работоспособности, готовности и запуска для автоматизации жизненного цикла экземпляра с помощью небольшого кода YAML. Например, дизайн livenessProbe рулевой картыstable/presto
. А диспетчер кластера, такой как k8s, предоставляет веб-интерфейс, так что вы можете касаться ресурсов, чтобы действовать как администратор. . Или вы можете написать больше кода Java для расширения Presto.