2016-09-19 5 views
6

Как развернуть планировщик воздушного потока apache (формально известный как воздушный поток airbnb) в высокой доступности?Установка воздушного потока для высокой доступности

Я не спрашиваю о БД или RabbitMQ, которые, очевидно, должны быть развернуты в конфигурации с высокой доступностью.

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

ответ

7

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

Команда воздушного потока планирует решить эту проблему, добавив механизм блокировки в структуру данных DAG, но пока это еще не реализовано (я проверил, запустив 2 планировщика и увидев, что они планируют те же экземпляры dag, что не очень хорошо). Это описано здесь: https://groups.google.com/forum/#!topic/airbnb_airflow/-1wKa3OcwME

Я нашел способ обойти эту проблему высокой availalbilty обертывания планировщиков с моими собственным кодом и использование кластерных инструментами для лидера выборов (я personanlly использовать консул для этой цели). Таким образом, только избранный мастер запускает планировщик, а когда хозяин находится вниз, подчиненный его заменяет.

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

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

+0

Я изучаю это и наткнулся на это через Google. Вы писали об этом или каком-нибудь примерном коде, который описывает, как Nomad и Consul играют во всем этом? Мы используем Consul, но Nomad все еще нова для нас. Я хочу иметь возможность запускать планировщик на другом узле или на том же узле, если он по какой-то причине пойдет вниз. – luckytaxi

+0

Я об этом не писал. Если вы установили кочевника, просто укажите его как службу и используйте count = 1 и ake убедитесь, что constrainsts соответствуют нескольким узлам. он должен сделать трюк. –

+0

U также может использовать Kubernetes или любой другой инструмент оркестровки. это называется самовосстановление. –

1

Мой личный опыт должен следовать за istruction я нашел в некоторых лучших обычаях, то есть перезапустить планировщик каждые 10 работает (-n 10) и использовать это программное обеспечение, когда possibile: https://github.com/teamclairvoyant/airflow-scheduler-failover-controller Я также использую даг, который пингует мониторинг чтобы убедиться, что планировщик не ушел.