文章目录
1 什么是xxl-job
XXL-JOB是美团点评开源的轻量级分布式任务调度平台。该项目于2015年11月发布第一个版本1.0,目前最新版本2.3.0;
XXL-JOB在国内线上生产环境的案例使用比较多,同时也是比较受欢迎的国产开源软件之一,这里笔者简单记录下Linux下xxl-job环境的搭建过程。
2 获取源码包
下载源码: https://github.com/xuxueli/xxl-job
这里笔者以最新的版本为例:https://github.com/xuxueli/xxl-job/archive/refs/tags/2.3.0.tar.gz
xxl-job文档: https://www.xuxueli.com/xxl-job/
3 需要依赖的环境
因为需要打包,所以要有Maven
环境(可参考我另一篇博文进行配置:https://blog.csdn.net/smilehappiness/article/details/116464543)
因为部署的是jar应用,启动时需要依赖Jdk1.8+
因为xxl-job需要存储数据,需要依赖·Mysql
数据库(可参考我另一篇博文进行配置:https://blog.csdn.net/smilehappiness/article/details/105344516)
4 上传并解压源码包(可以使用IDEA工具直接打开项目,打包可运行的jar服务)
使用xftp或者其他工具上传源码包到Linux服务器上,然后解压源码包:
tar -zxvf xxl-job-2.3.0.tar.gz -C /usr/local
5 初始化必要的数据库和表
在源码包中,/xxl-job/doc/db/tables_xxl_job.sql
,导入到mysql中
执行sql脚本后,会生成以下8张表:
6 修改xxl-job-admin的配置
位置: /xxl-job/xxl-job-admin/src/main/resources/application.properties
使用命令修改必要参数: vim /usr/local/xxl-job-2.3.0/xxl-job-admin/src/main/resources/application.properties
主要改这两个地方: 修改端口号(可以不改但是不能冲突),另外,数据库连接改为自己的mysql的用户名字和密码
7 打包项目,启动xxl-job服务
-
Linux配置maven环境
进入到解压的文件夹下(/usr/local/xxl-job-2.3.0/)执行:
mvn package
会在target目录下生成可运行xxl-job-admin-2.3.0.jar
包
(注:这里最好使用IDEA工具打包,因为Linux上运行maven命令下载依赖超级慢,笔者用了40min才打包完成)
-
编写启动脚本启动xxl-job服务
start.sh脚本
#!/bin/sh var=`find . -name xxl-job-admin-2.3.0.jar` fname=${var##*/} java -jar -Xms128M -Xmx256M -Xmn50M ${fname} >>nohup.out 2>&1& echo $! > service.pid
stop.sh脚本
#!/bin/sh pid=$(cat service.pid) kill -9 $pid rm -rf service.pid
注: 这里有可能启动xxl-job失败(笔者之前没遇到过,最近装的时候偶然遇到了,这里做一下总结)
Error 1129: Host 'xxxxxxxx' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'
这是因为同一个ip在短时间内产生太多(超过mysql数据库max_connection_errors的最大值)中断的数据库连接而导致的阻塞;
解决方法:
1、提高允许的max_connect_errors数量(这种方法不彻底,后期还可能导致异常出现):
使用navicat连接上mysql,执行命令查看最大错误数量max_connect_errors: show variables like 'max_connect_errors';
修改max_connect_errors的数量为1000: set global max_connect_errors = 1000;
查看是否修改成功: show variables like 'max_connect_errors';
2、使用mysqladmin flush-hosts 命令清理一下hosts文件
查找mysqladmin的路径: whereis mysqladmin
执行命令修改: /usr/bin/mysqladmin flush-hosts -h192.168.1.121 -uroot -p
当然,这个也可以在数据库中操作,执行命令:flush hosts;
备注:配置有master/slave主从数据库的要把主库和从库都修改一遍
如果还启动失败,把mysql连接配置改为: jdbc:mysql://127.0.0.1:3306/my_shares?useUnicode=true&useSSL=false&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=Asia/Shanghai
8 访问xxl-job服务
访问地址: http://ip:端口号/xxl-job-admin
,例如:http://127.0.0.1:9999/xxl-job-admin
注:
如果服务器开启了防火墙,需要开放,你上文设置的那个端口号(我的是9999
)才能访问
笔者使用的是阿里云服务器,不仅需要配置安全组,防火墙也需要开放9999端口
-
需要配置安全组
-
如果你的服务器或者虚拟机开启了防火墙,需要开放9999端口
开启9999防火墙端口
firewall-cmd --zone=public --add-port=9999/tcp --permanent
重新加载防火墙配置
firewall-cmd --reload
访问成功后的页面,如下图所示:
9 xxl-job执行器配置
xxl:
job:
accessToken:
admin:
# 这里的9999端口与上面xxl-job-admin配置的端口一致即可
addresses: http://ip:9999/xxl-job-admin
executor:
address:
appname: 服务的应用名称
ip:
port: 1234
logpath: /usr/local/xxl-job-2.3.0/xxl-job-admin/logs
logretentiondays: 30
10 xxl-job cron表达式
可参考链接:https://blog.csdn.net/qq_43563538/article/details/107541227
好啦,本篇搭建xxl-job教程,就先写到这里啦,希望对老铁们有所帮助~
参考资料链接:https://blog.csdn.net/zpp15603669517/article/details/113942508
写博客是为了记住自己容易忘记的东西,另外也是对自己工作的总结,希望尽自己的努力,做到更好,大家一起努力进步!
如果有什么问题,欢迎大家评论,一起探讨
给自己的梦想添加一双翅膀,让它可以在天空中自由自在的飞翔!