分布式任务调度平台XXL-JOB搭建

一、源码下载地址

 ①、GitHub:https://github.com/xuxueli/xxl-job

 ②、码云:https://gitee.com/xuxueli0323/xxl-job

二、源码结构

三、部署准备

在win10上需要使用maven工具生成项目jar包,需要安装java和maven(如java version "1.8.0_381"和Apache Maven 3.9.5)

在linux服务器上进行项目部署,需要安装合适的java,mysql和nginx版本,(如java version "1.8.0_381" ,mysql-5.7.40,nginx version: nginx/1.24.0)

四、初始化数据库

把xxl-job项目源码下doc/db/tables_xxl_job.sql数据库初始化脚本上传到服务器,在mysql中执行source 该sql文件命令即可

五、配置调度中心

xxl-job-admin 目录下application.properties

①服务的web端口与上下文路径

通过http://172.23.68.88:8080/xxl-job-admin访问任务调度中心的界面

### web
server.port=8080
server.servlet.context-path=/xxl-job-admin
②数据库连接
### xxl-job, datasource
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

 六、调整日志路径

 xxl-job-core目录下的com.xxl.job.core.log.XxlJobFileAppender中配置了执行器任务脚本的日志路径,可自定义服务器日志保存路径。

源代码如下:

自定义代码如下:任务执行的脚本相关代码日志保存路径为 /opt/xxl-job/xxl-job-executor/logs

七、配置执行器

xxl-job-executor-sample-springboot目录下application.properties

# web port
server.port=8081

xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin
### xxl-job, access token
xxl.job.accessToken=default_token

### xxl-job executor appname
xxl.job.executor.appname=xxl-job-executor-sample
### xxl-job executor registry-address: default use address to registry , otherwise use ip:port if address is null
xxl.job.executor.address=
### xxl-job executor server-info
xxl.job.executor.ip=172.23.68.88
xxl.job.executor.port=8099
### xxl-job executor log-path
xxl.job.executor.logpath=/opt/xxl-job/xxl-job-executor/logs
### xxl-job executor log-retention-days
xxl.job.executor.logretentiondays=30

八、maven打包生成项目jar包

调用mvn package命令将xxl-job项目按照pom.xml打包各个模块的项目,生成的jar包保存在对应项目的target目录中,将所需的jar包上传至部署服务器指定目录中即可

 九、后端项目管理

把xxl-job-admin和xxl-job-executor生成的jar包分别上传到服务器上,目录结构参考如下。使用脚本admin.sh和executor.sh分别管理任务调度中心和任务执行器项目服务的启动、关闭、状态查看和重启

[root@ecs0 xxl-job]# cat xxl-job-admin/admin.sh
#!/bin/bash
APP_NAME='xxl-job-admin-2.4.1-SNAPSHOT.jar'

#使用说明,用来提示输入参数
usage(){
  echo "Usage: sh 执行脚本.sh [start|stop|restart|status]"
  exit 1
}

#检查程序是否在运行
is_exist(){
  pid=`ps -ef | grep ${APP_NAME} | grep -v grep | awk '{print $2}'`
  #如果不存在返回1,存在返回0
  if [ -z "${pid}" ];then
    return 1
  else
    return 0
  fi
}

#启动方法
start(){
  is_exist
  if [ $? -eq "0" ];then
    echo "${APP_NAME} is already running. pid=${pid}"
  else
    nohup java -jar ${APP_NAME} >./admin-start.log 2>&1 &
  fi
}

#停止方法
stop(){
  is_exist
  if [ $? -eq "0" ];then
    kill -9 $pid
  else
    echo "${APP_NAME} is not running"
  fi
}

#输出运行状态
status(){
  is_exist
  if [ $? -eq "0" ];then
    echo "${APP_NAME} is running. Pid is ${pid}"
  else
    echo "${APP_NAME} is NOT running."
  fi
}

#重启
restart(){
  stop
  start
}

case "$1" in
  "start")
    start;;
  "stop")
    stop;;
  "status")
    status;;
  "restart")
    restart;;
  *)
    usage;;
esac
[root@ecs0 xxl-job]# cat xxl-job-executor/executor.sh
#!/bin/bash
APP_NAME='xxl-job-executor-sample-springboot-2.4.1-SNAPSHOT.jar'

#使用说明,用来提示输入参数
usage(){
  echo "Usage: sh 执行脚本.sh [start|stop|restart|status]"
  exit 1
}

#检查程序是否在运行
is_exist(){
  pid=`ps -ef | grep ${APP_NAME} | grep -v grep | awk '{print $2}'`
  #如果不存在返回1,存在返回0
  if [ -z "${pid}" ];then
    return 1
  else
    return 0
  fi
}

#启动方法
start(){
  is_exist
  if [ $? -eq "0" ];then
    echo "${APP_NAME} is already running. pid=${pid}"
  else
    nohup java -jar ${APP_NAME} >./executor-start.log 2>&1 &
  fi
}

#停止方法
stop(){
  is_exist
  if [ $? -eq "0" ];then
    kill -9 $pid
  else
    echo "${APP_NAME} is not running"
  fi
}

#输出运行状态
status(){
  is_exist
  if [ $? -eq "0" ];then
    echo "${APP_NAME} is running. Pid is ${pid}"
  else
    echo "${APP_NAME} is NOT running."
  fi
}

#重启
restart(){
  stop
  start
}

case "$1" in
  "start")
    start;;
  "stop")
    stop;;
  "status")
    status;;
  "restart")
    restart;;
  *)
    usage;;
esac

如上,通过sh admin.sh start 和sh executor.sh start启动项目程序,并可通过nginx进行服务转发。

 server {
        listen       80;
        server_name  myserver;
        # xxl-job-admin
        location /xxl-job-admin {
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $host;
            proxy_set_header X-Nginx-Proxy true;
            proxy_pass http://172.23.68.88:8080/xxl-job-admin;
            proxy_redirect off;
        }
}

十、访问XXL-JOB

①web地址:http://myserver:80/xxl-job-admin

默认登录账密:admin/123456

②执行器管理,以上配置的执行器已成功添加并自动注册到了数据库中。

③任务管理,新增一个任务并执行一次,查看其日志信息,如下使用配置的“示例执行器”执行成功,任务执行结果保存的日志路径为以上自定义的日志路径。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值