airflow分布式部署

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

现需要有A,B,C(假设IP地址为192.168.1.248)三台服务器,要求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 [email protected]:/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、服务器上安装包

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

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

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

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,需要修改的内容

executor = CeleryExecutor

ql_alchemy_conn = postgresql+psycopg2://postgres:[email protected]/airflow

broker_url = redis://:[email protected]/0

result_backend = db+postgresql+psycopg2://postgres:[email protected]/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查看任务执行情况

猜你喜欢

转载自blog.csdn.net/Gzigithub/article/details/85333903
今日推荐