一, 搭建admin调度中心

1.1 安装docker运行环境

采用yum源安装直接安装:yum install -y docker

启动docker: service docker start

停止docker:service docker stop

1.2 拉取tomcat和mysql这两个docker镜像

这里使用网易公有镜像库, 访问: https://c.163yun.com/hub#/m/repository/ 即可

docker pull hub.c.163.com/library/tomcat:latest

docker pull hub.c.163.com/library/mysql:latest

拉取成功后执行docker images查看刚下载成功的镜像, 如下图:

1.3 启动tomcat和mysql docker镜像

docker run -d -p 8080:8080 hub.c.163.com/library/tomcat:latest 

docker run -itd -p 3306:3306 hub.c.163.com/library/mysql:latest bash

检查是否成功启动, docker ps, 如下如显示则表示成功:

1.4 进入docker-tomcat或者docker-mysql的shell

使用如下命令:docker exec -it 容器id bash

1.5 停止和启动docker容器

docker ps -- 查看正在运行的docker容器

docker stop 容器id

docker start 容器id

1.6 编写dockerfile, 构建image镜像

构建xxl-job-admin.war, 这里简单的编写dockerfile文件进行构建, 毕竟重点是解析xxl-job源码.

from hub.c.163.com/library/tomcat
COPY xxl-job-admin.war /usr/local/tomcat/webapps

构建:

docker build . -t xxl-job-admin:latest

使用docker images就能查看到刚刚构建的docker镜像,如下图:

1.7 如果经过上面的步骤都没问题的话, 恭喜你, 终于到了重头戏, 启动咱们刚刚构建成功的xxl-job-admin docker镜像,按照前面的规划, job-admin调度中心部署在192.168.136.7:8080即可.

docker run -d -p 8080:8080 xxl-job-admin:latest

docker ps

1.8 浏览器输入地址访问admin调度中心

http://192.168.136.7:8080/xxl-job-admin/

二, 搭建executor执行器

1.1 按照之前的步骤编写dockerfile, 构建executor的两个执行器镜像即可, 如下图:

docker build . -t xxl-job-executor:latest

1.2 分别启动这两个执行器

docker run --privileged=true -d -p 8082:8080 -p 9999:9999 xxl-job-executor:latest

docker run --privileged=true -d -p 8082:8080 -p 9998:9999 xxl-job-executor:latest

说明:

由于每个executor执行器内部都会启动一个jetty server服务, 而默认的jetty服务端口就是9999端口,由于这两个executor执行器是放在同一台192.168.136.8服务器上, 所以不能使用同一个端口9999对外(即对admin调度中心)暴露服务.

所以这里做了9999:9999和9998:9999端口映射.

按照之前规划的, 使用同一个镜像启动两个executor执行器tomcat容器, 端口分别是8081和8082, 如上图所示.

1.3 检查刚启动的两个executor执行器, 是否自动注册到admin调度中心, 查看admin调度中心即可, 如下图.

说明此时的双节点的executor执行器均已自动注册到admin调度中心, 这里的172.17.0.2和172.17.0.3即是启动的docker executor执行器的ip.

在192.168.136.7服务器, 是访问不到docker容器内部端口, 172.17.0.2:9999和172.17.0.3:9999, 所以这里需要使用手动的方式编辑下ip:port, 如下图:

手动录入:192.168.136.8:9999,192.168.136.8:9998

192.168.136.8:9999 <=等价于=>172.17.0.2:9999 两者对应的ip:port是同一个

192.168.136.8:9998 <=等价于=>172.17.0.3:9999 两者对应的ip:port是同一个

修改完成后, 如下图所示即可:

到这里就完成了admin调度中心和executor执行的部署.

三, 使用xxl-job-admin开始调度一个job实例

1.1 创建一个任务, 如下图:

说明:

路由策略:第一个, 表示选取多个executor执行器注册到admin调度中心的第一个, 执行该job定时任务

阻塞处理策略:单机串行, 表示当上一个job还没有执行完成, cron时间片到后, 该次的job将阻塞, 一直到上一个job执行完成.

这两项配置, 这里我们暂时使用上述这样的配置, 以后源码解析时, 会做出详细的分析.

1.2 保存后, 当该任务的cron时间片到后, 就开始执行该任务

normal标识正常执行调度的状态, cron:0/30 * * * * ? 表示30秒执行一次.

1.3 查看调度日志

出现如上图所示结果,说明executor执行器已经开始被admin调度中心正常调度了.

四,总结

1 首先使用docker构建job-admin调度中心, 并启动.

2 接着使用docker构建job-executor执行器image镜像, 依托于该镜像, 启动两个executor执行器, 分别运行于8081和8082端口, 

 而executor执行器内部暴露的jetty server服务端口分别为9999和9998.

3 使用job-admin成功调度一个executor执行器实例.

好了, 到此为止, 已经成功使用docker 部署了admin调度中心和双节点executor执行器, 接下来会是重头戏, 进行源码解析, admin调度中心和executor执行器是怎样进行rpc远程通信以及数据交互的.

 

 

GitHub 加速计划 / xx / xxl-job
23
10
下载
xxl-job: 是一个分布式任务调度平台,核心设计目标是开发迅速、学习简单、轻量级、易扩展。
最近提交(Master分支:4 个月前 )
e5d26ba2 - 5 个月前
977ad87b - 5 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐