airflow分布式部署

1、首先将服务器之间设置免密

现需要有A,B,C(假设IP地址为192.168.x.xxx)三台服务器,要求A,B可以同时免密登录到服务器C,服务器C作为master,另外两台作为worker

操作步骤:
        1.A、B两台主机分别执行 ssh-keygen -t rsa  
,然后连续按回车,直至操作完成,此时会在A、B两台主机下/root/.ssh目录下生产id_rsa和id_rsa.pub,即私钥 和公钥。
        2.将A主机/root/.ssh目录下的id_rsa.pub文件传送至主机C的home目录下,即:
           scp /root/.ssh/id_rsa.pub root@132.232.xxx.xx:/home
       3.在主机C上,执行:
           cat /home/id_rsa.pub >> /root/.ssh/authorized_keys (即将主机A的公钥追加到主机C的authorized文件中)
       4.在主机B上执行2,3操作
         此时,即可在A、B主机上免密登录到主机C。
      
      注:cat命令实例
            设ml和m2是当前目录下的两个文件
            cat m1 (在屏幕上显示文件ml的内容)
            cat m1 m2 (同时显示文件ml和m2的内容)
            cat m1 m2 > file (将文件ml和m2合并后放入文件file中)

2、master与worker服务器上所需要的配置

2.1、永久性的修改主机名称,用来区分,重启后能保持修改后的。

修改服务器C主机名:hostnamectl set-hostname master

服务器A、B:hostnamectl set-hostname worker1和hostnamectl set-hostname worker2

注:取主机名字不要是数字,应为英文字母

配置 worker 节点的 /etc/hosts 的 hostname 映射,把 worker 节点的 ip 映射为本机的 hostname:

10.xxx.xxx.xxx  hostname

2.2、master主机上需要的一些包:
airflow、python3.5.2、postgresql-9.6、redis-4.0、(以及celery、redis  Python包)

airflow、Python、postgresql的安装就查看我的其他博客

在master主机上下载,解压缩和编译Redis-4.0.3:

$ wget http://download.redis.io/releases/redis-4.0.3.tar.gz

$ tar xzf redis-4.0.3.tar.gz

$ cd redis-4.0.3

$ make && make install

redis的配置请参考:https://www.cnblogs.com/renzhicai/p/7773080.html

2.3、redis配置认证密码,通过配置文件进行配置
redis配置文件redis.conf中,打开配置文件找到

#requirepass foobared 

去掉行前的注释,并修改密码为所需的密码,保存文件

requirepass youpwd

重启redis完成

src/redis-server redis.conf 

2.4、远程访问

    1)修改redis.conf

        注释掉#bind 127.0.0.1

       修改protected-mode no  

   2)关闭防火墙, systemctl stop firewalld.service 查看防火墙状态 firewall-cmd --state(不建议使用)

我们只需打开6379端口就行:

sudo firewall-cmd --permanent --zone=public --add-port=6379/tcp

sudo firewall-cmd --reload

2.5、master和worker都要修改airflow的配置文件vim airflow.cfg,修改一个文件就行,因为服务器免密,直接传给其他服务器,主从服务器应保持airflow的路径、dags下的脚本、配置文件一致,下面是配置文件需要修改的内容:

executor = CeleryExecutor

ql_alchemy_conn = postgresql+psycopg2://postgres:pwd@192.168.x.xxx/airflow

broker_url = redis://:pwd@192.168.x.xxx/0

result_backend = db+postgresql+psycopg2://postgres:pwd@192.168.x.xxx/airflow

2.6、master和worker都安装airflow、python3.5.2以及Python的celery和redis包

python3 -m pip install celery -i https://pypi.douban.com/simple

python3 -m pip install redis -i https://pypi.douban.com/simple

3、启动airflow

3.1、编写一个Python脚本,用于测试,放在airflow/dags下

重置airflow数据:airflow resetdb

3.2、master主机打开airflow webserver、airflow scheduler、airflow worker

3.3、worker主机只需用普通用户打开airflow worker

建立普通用户:

1)创建用户test

useradd test

2)对用户test设置密码

passwd test

3)在root用户下,改变airflow文件夹的权限,设为全开放

chmod -R 777 /opt/airflow

4) 切换为普通用户,执行airflow worker命令就行

3.4、用浏览器登录,测试脚本的运行情况

查看view log查看任务执行情况

 

这样就成功了!

 

 

Airflow集群搭建是指在Airflow平台上部署多台机器来共同运行和管理任务调度。为了提高可靠性、可扩展性和性能,搭建Airflow集群是一个不错的选择。 首先,需要安装和配置Apache Airflow。可以通过pip安装Airflow并进行相关配置,包括数据库连接、身份验证、队列和消息代理等。 接下来,需要设置数据库。Airflow使用数据库来存储任务和运行状态。可以选择使用传统的关系型数据库如MySQL或PostgreSQL,也可以选择使用NoSQL数据库如MongoDB。 然后,需要配置调度器和执行器。Airflow使用调度器来创建和调度任务实例,并使用执行器来执行任务。可以选择使用本地调度器和执行器,也可以选择使用分布式调度器如Celery和分布式执行器如Dask。 在搭建Airflow集群时,还需要设置和配置任务队列和消息代理。可以选择使用RabbitMQ、Redis或Kafka等消息队列,以及使用Celery、SQS或Google Cloud Pub/Sub等消息代理。 另外,为了保证集群的高可用性,可以使用负载均衡器来均衡集群中各个节点的负载。可以选择使用Nginx或HAProxy等负载均衡器。 最后,需要进行集群的监控和管理。可以使用监控工具如Prometheus和Grafana来监控集群中各个节点的运行状态和性能指标,以及使用调度器和执行器的日志来进行任务的管理和故障排查。 总结而言,搭建Airflow集群需要安装和配置Airflow、设置和配置数据库、调度器和执行器、任务队列和消息代理,以及设置负载均衡器和监控工具。这样可以实现任务调度的高可用性、可扩展性和性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值