# azkaban 部署说明
1. install
1.1 solo server(单机)
```shell
# clone the repo
git clone https://github.com/azkaban/azkaban.git
# BUild azkaban and create an installation package
cd azkaban
./gradlew build installDist
# start the sole server
cd azkaban-solo-server/build/install/azkaban-solo-server
bin/start-solo.sh
# stop server
bin/shutdown-solo.sh
```
> http://localhost:8081/
> 登录名和密码都是 default的azkaban,可以在server的resources/conf/azkaban-user.xml中修改
---
1.2 multi-server(集群)
> 原理:WeBServer根据Executor server 的运行状态信息,选择一个适合的Executor来运行WorkFlow,然后会将提交到队列中的WorkFlow调度到选定的Executor Server 上运行。
> 通信:webServer与Executor之间的交互方式是通过RESET API的方式进行的,WebServer根据调度需要,主动调用ExecutorServer暴露的RESET API来获取相应的资源信息,如:Executor Server 的状态信息,分配WorkFlow到指定ExecutorServer上运行。
> WebServer: 整个调度集群的核心,负责所有作业的管理和调度。界面展示。
> ExecutorServer: 整个调度集群中实际运行作业的节点。
> DB(MySQL):集群中所有节点运行公用的数据存储,包含作业信息、各种调度元数据等等。
---
> 集群运行azkaban,只需要一个webServer,多个executorServer
+ webServer 端
```
### install mysql
docker search mysql
docker pull mysql
cd /opt
mkdir mysql_docker
cd mysql_docker
echo $PWD
# run mysql
docker run --name mysql_docker_server -v $PWD/conf:/etc/mysql/conf.d -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d -i -p 3306:3306 mysql:latest
docker exec -it mysql_docker_server
mysql -uroot -p
# input passwd
use mysql
select host,user from user;
alter user 'root'@'%' identified with mysql_native_password by '123456';
flush privileges;
mysql -h10.5.25.53 -p3306 -uroot -p"123456"
```
+ webServer 端