入门安装参考:https://www.cnblogs.com/post/readauth?url=/liubao-xiaoqin/p/9698532.html
队列服务及元数据库(Metestore)的高可用。
队列服务取决于使用的消息队列是否可以高用可部署,如 RabbitMQ 和 Redis。
RabbitMQ 集群并配置Mirrored模式见:http://blog.csdn.net/u010353408/article/details/77964190元数据库(Metestore) 取决于所使用的数据库,如 Mysql 等。
Mysql 做主从备份见:http://blog.csdn.net/u010353408/article/details/77964157
airflow 集群部署的具体步骤
前提条件
1. 节点运行的守护进程如下:
master1 运行: webserver, scheduler
master2 运行:webserver
worker1 运行:worker
worker2 运行:worker
安装 RabbitMQ 方法参见: http://site.clairvoyantsoft.com/installing-rabbitmq/
如果正在使用 RabbitMQ, 推荐 RabbitMQ 也做成高可用的集群部署,并为 RabbitMQ 实例配置负载均衡。
2. 队列服务处于运行中. (RabbitMQ, Redis, etc)
步骤
在所有需要运行守护进程的机器上安装 Apache Airflow。具体安装方法可参考 airflow 的安装部署与填坑
修改 {AIRFLOW_HOME}/airflow.cfg 文件,确保所有机器使用同一份配置文件。
修改 Executor 为 CeleryExecutor
executor = CeleryExecutor
指定元数据库(metestore)
sql_alchemy_conn = mysql://{USERNAME}:{PASSWORD}@{MYSQL_HOST}:3306/airflow
设置中间人(broker)
如果使用 RabbitMQ
broker_url = amqp://guest:guest@{RABBITMQ_HOST}:5672/
如果使用 Redis
broker_url = redis://{REDIS_HOST}:6379/0 #使用数据库 0
设定结果存储后端 backend
celery_result_backend = db+mysql://{USERNAME}:{PASSWORD}@{MYSQL_HOST}:3306/airflow #当然您也可以使用 Redis :celery_result_backend =redis://{REDIS_HOST}:6379/1
在 master1 和 master2 上部署您的工作流(DAGs)。
在 master 1,初始 airflow 的元数据库
$ airflow initdb
在 master1, 启动相应的守护进程
$ airflow webserver
$ airflow scheduler
在 master2,启动 Web Server
$ airflow webserver
在 worker1 和 worker2 启动 worker
$ airflow worker
使用负载均衡处理 webserver
可以使用 nginx,AWS 等服务器处理 webserver 的负载均衡,不在此详述