搭建一个Azkaban(keytool生成SSL证书)

前言

Azkaban是由Linkedin公司推出的一个批量工作流任务调度器,主要用于在一个工作流内以一个特定的顺序运行一组工作和流程,它的配置是通过简单的key:value对的方式,通过配置中的Dependencies 来设置依赖关系。Azkaban使用job配置文件建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。

环境准备

由于都是在java虚拟机上运行的java进程,所以需要配置java环境!建议是1.8以上。如果是低版本例如1.5,可能会出现内存不足的情况!

在这里插入图片描述
笔者的部署如下

在这里插入图片描述

通过mysql远程账户登录102机器,进行对数据表操作!azkaban依赖于mysql中建立的表,表的创建通过azkaban-sql-script解压后在mysql控制台中执行 create-all-sql-2.5.0.sql脚本!

笔者azkaban的版本选用如下
在这里插入图片描述

简介

在这里插入图片描述

  • AzkabanWebServer:AzkabanWebServer是整个Azkaban工作流系统的主要管理者,它负责用户登录认证、project管理、定时执行工作流、跟踪工作流执行进度等一系列任务。
  • AzkabanExecutorServer:负责具体的工作流的提交、执行,它们通过mysql数据库来协调任务的执行。
  • 关系型数据库(MySQL):存储大部分执行流状态,AzkabanWebServer和AzkabanExecutorServer都需要访问数据库。

Install

创建一个目录
在/opt/module下面创建一个目录azkaban

mkdir azkaban

executor解压

解压到/opt/module/azkaban

tar -zxvf azkaban-executor-server-2.5.0.tar.gz -C /opt/module/azkaban

server解压

tar -zxvf azkaban-web-server-2.5.0.tar.gz -C /opt/module/azkaban

sql脚本解压

tar -zxvf tar -zxvf azkaban-web-server-2.5.0.tar.gz  -C /opt/module/azkaban

mysql安装及数据库sql导入

mysql5.6安装之前已经做过了,这边就贴一个链接。数据库install
下面对数据库进行操作!

在这里插入图片描述

  1. 在103上远程连接102上root账号!前提是有客户端(版本必须和server一致!)!
mysql -h hadoop102 -P3306 -uroot -p
  1. 连接上后执行命令
source /opt/module/azkaban/azkaban-2.5.0/create-all-sql-2.5.0.sql
  1. 执行quit让数据库提交事务!

配置azkaban环境

生成keystore

  • Keytool是java数据证书的管理工具,使用户能够管理自己的公/私钥对及相关证书。
  • -keystore 指定密钥库的名称及位置(产生的各类信息将存在.keystore文件中)
  • -genkey(或者-genkeypair) 生成密钥对
  • -alias 为生成的密钥对指定别名,如果没有指定默认是mykey
  • -keyalg 指定密钥的算法 RSA/DSA 默认是DSA
keytool -keystore keystore -alias jetty -genkey -keyalg RSA

在这里插入图片描述
在哪个目录下执行上述命令则会在哪里生成文件!
在这里插入图片描述
将文件移动到 azkaban web服务器根目录中

mv keystore /opt/module/azkaban/server/

时间同步配置

如果在安装系统时已经选好了上海时区,只需要开启ntp服务进行同步时间即可,其他服务器执行crontab定时任务向可以同步时间的机器上做同步请求!
如何配置ntp时间同步服务!请点击!!
如果已经同步好时间,下面的操作可忽略!

sudo crontab -e

在这里插入图片描述

先配置好服务器节点上的时区
1) 如果在/usr/share/zoneinfo/这个目录下不存在时区配置文件Asia/Shanghai,就要用 tzselect 生成。

[zhengkw@hadoop103 azkaban]$ tzselect

Please identify a location so that time zone rules can be set
correctly. Please select a continent or ocean. 1) Africa 2) Americas
3) Antarctica 4) Arctic Ocean 5) Asia 6) Atlantic Ocean 7)
Australia 8) Europe 9) Indian Ocean 10) Pacific Ocean 11) none - I
want to specify the time zone using the Posix TZ format.
选择5亚洲

#? 5

Please select a country. 1) Afghanistan 18) Israel
35) Palestine 2) Armenia 19) Japan 36)
Philippines 3) Azerbaijan 20) Jordan 37)
Qatar 4) Bahrain 21) Kazakhstan 38) Russia
5) Bangladesh 22) Korea (North) 39) Saudi Arabia
6) Bhutan 23) Korea (South) 40) Singapore 7)
Brunei 24) Kuwait 41) Sri Lanka 8)
Cambodia 25) Kyrgyzstan 42) Syria 9) China
26) Laos 43) Taiwan 10) Cyprus 27)
Lebanon 44) Tajikistan 11) East Timor 28)
Macau 45) Thailand 12) Georgia 29)
Malaysia 46) Turkmenistan 13) Hong Kong 30)
Mongolia 47) United Arab Emirates 14) India
31) Myanmar (Burma) 48) Uzbekistan 15) Indonesia 32)
Nepal 49) Vietnam 16) Iran 33) Oman
50) Yemen 17) Iraq 34) Pakistan

选择中国china!

#? 9

Please select one of the following time zone regions. 1) Beijing Time
2) Xinjiang Time

选择北京时间

#? 1

The following information has been given:

    China
    Beijing Time

Therefore TZ=‘Asia/Shanghai’ will be used. Local time is now: Thu
Oct 18 16:24:23 CST 2018. Universal Time is now: Thu Oct 18 08:24:23
UTC 2018. Is the above information OK? 1) Yes 2) No

#? 1

You can make this change permanent for yourself by appending the line
TZ=‘Asia/Shanghai’; export TZ to the file ‘.profile’ in your home directory; then log out and log in again.

Here is that TZ value again, this time on standard output so that you
can use the /usr/bin/tzselect command in shell scripts: Asia/Shanghai

2)拷贝该时区文件,覆盖系统本地时区配置

[zhengkw@hadoop103 azkaban]$ cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

3)集群时间同步(同时发给三个窗口)

[zhengkw@hadoop103 azkaban]$ sudo date -s '2018-10-18 16:39:30'

配置executor

打开/opt/module/azkaban/executor/conf

#Azkaban
#时区
default.timezone.id=Asia/Shanghai
# Azkaban JobTypes Plugins
#jobtype 插件所在位置
azkaban.jobtype.plugin.dir=plugins/jobtypes

#Loader for projects
executor.global.properties=/opt/module/azkaban/executor/conf/global.properties
azkaban.project.dir=projects

database.type=mysql
mysql.port=3306
mysql.host=hadoop102
mysql.database=azkaban
mysql.user=root
mysql.password=sa
mysql.numconnections=100

# Azkaban Executor settings
#最大线程数
executor.maxThreads=50
#端口号(如修改,请与web服务中一致)
executor.port=12321
#线程数
executor.flow.threads=30

配置server

修改/opt/module/azkaban/server/conf/azkaban.properties

在这里插入图片描述在这里插入图片描述

配置邮箱通知

在/opt/module/azkaban/server/conf/azkaban.properties新增以下参数!

在这里插入图片描述

host为发送邮件的服务器
password为第三方授权码

授权码获取

在这里插入图片描述

在这里插入图片描述在这里插入图片描述

修改azkaban-users.xml

azkaban web服务器安装目录 conf目录,按照如下配置修改azkaban-users.xml 文件,增加管理员用户

<azkaban-users>
        <user username="azkaban" password="azkaban" roles="admin" groups="azkaban" />
        <user username="metrics" password="metrics" roles="metrics"/>
        <user username="zhengkw" password="qweasd" roles="admin,metrics" groups="azkaban" />

<role name="admin" permissions="ADMIN" />
        <role name="metrics" permissions="METRICS"/>
</azkaban-users>

启动服务

启动executor

[zhengkw@hadoop103 executor]$ pwd
/opt/module/azkaban/executor
[zhengkw@hadoop103 executor]$ bin/azkaban-executor-start.sh

启动web

[zhengkw@hadoop103 server]$ pwd
/opt/module/azkaban/server
[zhengkw@hadoop103 server]$ bin/azkaban-web-start.sh

jps参看

在这里插入图片描述

打开浏览器测试

这里配置的是https服务,运用SSL加密证书进行加密,保证报文传输的安全性,由于是用keytool生成的证书,并非权威机构生成,所以第一次登陆时会有报警提示!
输入https://hadoop103:8443
在这里插入图片描述点击里面继续访问即可

登陆页面输入在user里面配置的用户即可
在这里插入图片描述成功访问

关闭服务

web

bin/azkaban-web-shutdown.sh 

exec

bin/azkaban-executor-shutdown.sh 

总结

  • 注意时间同步,以便于查看日志信息!
  • 配置时一定注意连接数据库的各种信息!
  • 登陆az时用的用户在web里conf/azkaban-users.xml 中配置!
  • SSL启动方式是可选方式,但一般是要加密这样才安全!

在这里插入图片描述

遇到的坑

在这里插入图片描述

  • 由于证书是工具生产,会在控制台打印warn级别信息,可以忽略!如果想屏蔽可以修改log4j里的打印级别!
  • 由于前面executor里配置mysql失误造成启动后无法连接数据库!而且造成端口占用!
    在这里插入图片描述

使用命令查看端口12321(exec启动时占用的端口)占用的进程

在这里插入图片描述

lsof -i:12321

强行杀掉!
在这里插入图片描述

发布了37 篇原创文章 · 获赞 17 · 访问量 1818

猜你喜欢

转载自blog.csdn.net/qq_37714755/article/details/104932240