airflow高可用

1.前言

airflow作为调度工具,由Webserver、Scheduler、Worker三个组件互相配合完成工作。三个组件之间没有强依赖关系,依靠共用数据库和消息队列完成调度任务。因此,在多台机器上部署airflow,配置相同的元数据库和消息队列,以此来实现airflow的集群模式。

2.工作原理

1) airflow启动时,会将dag中的相关信息写入数据库。
2) scheduler会按照指定频次查询数据库,检测是否有需要触发的任务。
3) 当scheduler检测到需要触发的任务时,会向消息队列发送一条Message。
4) Celery会定时查询消息队列中,是否有Message。当检测到Message时,会将Message中包含的任务信息下发给Worker,由Worker执行具体任务。

3.Airflow安装

4.组件高可用

1) 启动多个webserver,通过HAProxy做LB。
2) 启动多个Worker。
3) 使用airflow-scheduler-failover-controller实现scheduler的高可用。
4) Mysql做主从备份。
5) RabbitMQ集群并配置Mirrored模式。

5.airflow-scheduler-failover-controller安装

airflow本身没有对scheduler监控的组件,本处采用了GitHub上的第三方组件。
1) 下载

git clone https://github.com/teamclairvoyant/airflow-scheduler-failover-controller

2) 使用pip进行安装

cd {AIRFLOW_FAILOVER_CONTROLLER_HOME}
pip install -e .

3) 初始化failover

scheduler_failover_controller init

注:初始化时,会向airflow.cfg中追加内容,因此需要先安装airflow。

4) 更改failover配置

scheduler_nodes_in_cluster = host1,host2

注: host name 可以通过scheduler_failover_controller get_current_host命令获得

5) 配置安装failover的机器之间的免密登录,配置完成后,可以使用如下命令进行验证:

 scheduler_failover_controller test_connection

6) 启动failover

scheduler_failover_controller start

至此,完成了airflow集群搭建及各个组件的高可用方案。

你可能感兴趣的:(Airflow,HA,airflow集群,airflow高可用,airflow,高可用)