前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >xxl-job集群部署与使用

xxl-job集群部署与使用

作者头像
叔牙
发布2023-12-11 13:08:05
4960
发布2023-12-11 13:08:05
举报

微信公众号:PersistentCoder 关注可了解更多的教程。问题或建议,请公众号留言;

内容目录

一、机器准备二、安装运行环境三、打包上传服务四、启动调度服务五、配置域名与负载六、java服务访问

一、机器准备

服务器类型

centos7

或者其他linux版本

cpu

2核

可根据需要调整

内存

8G

可根据需要调整

二、安装运行环境

1.java
代码语言:javascript
复制
yum install -y java-1.8.0-openjdk-devel
#/etc/profile环境变量
# jdk 8
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.382.b05-1.amzn2.0.2.x86_64
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
# 保存后,source生效
source /etc/profile
2.supervisor
代码语言:javascript
复制
pip3 install supervisor
mkdir -p /etc/supervisor
echo_supervisord_conf -> /etc/supervisor/supervisord.conf
cd /etc/supervisor/
vim supervisord.conf
#修改配置
[include]
files=/etc/supervisor/conf.d/*.conf
mkdir conf.d
3.初始化运行目录
代码语言:javascript
复制
mkdir -p /mnt/applogs/xxl-job
chmod 777 /mnt/
mkdir -p /opt/app/server/xxl-job


chmod 777 /opt/app/
chown -R dev:dev /opt/app/
cd /mnt/
chown -R dev:dev applogs/

三、打包上传服务

1.初始化数据库

从项目中获取初始化脚本,并初始化数据库:

2.打包上传

xxl-job在本地修改mysql连接配置

修改服务器访问token,此token用来业务服务向调度服务注册调度任务时访问使用:

代码语言:javascript
复制
### xxl-job, access token
xxl.job.accessToken=xxxxxxxxx

打包上传到服务器/opt/app/server/xxl-job目录

代码语言:javascript
复制
mvn -U clean package -Dmaven.test.skip -Pprod


scp target/xxl-job-admin.jar user@xxx.xxx.xxx.xxx:/opt/app/server/xxl-job

四、启动调度服务

1.添加supervisor启动配置

root账号登录,在/etc/supervisor/conf.d目录添加xxl-job.conf配置

代码语言:javascript
复制
[program:xxl-job]


command=java -Djava.security.egd=file:/dev/./urandom -Xms4g -Xmx4g -Xmn2g -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC -XX:+ExplicitGCInvokesConcurrentAndUnloadsClasses -XX:+CMSScavengeBeforeRemark -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/mnt/applogs/xxl-job -Xloggc:/mnt/applogs/xxl-job/gc.log  -Dfile.encoding=utf-8  -jar /opt/app/server/xxl-job/xxl-job-admin.jar


autorestart=true 
autostart=false
startretries=1 
stderr_logfile=/mnt/applogs/xxl-job/err.log
stdout_logfile=/mnt/applogs/xxl-job/xxl-job-admin.log
2.启动服务

切换成dev账号, 启动supervisor

代码语言:javascript
复制
supervisord -c /etc/supervisor/supervisord.conf

使用supervisor命令启动xxl-job调度服务

代码语言:javascript
复制
supervisorctl start xxl-job

五、配置域名与负载

负载可以使用nginx或者类似alb产品等。

1.创建目标群组

创建xxl-job目标群组,8080端口并注册两台机器

2.创建alb

创建alb,http请求转发到xxl-job目标组

3.配置域名证书
  • 域名管理平台配置二级域名转发到xxl-job的alb
  • 在ACM管理请求证书,并到域名管理平台配置证书的CNAME信息,用来验证所属权
  • alb配置https监听器并选择生成的证书,然后修改http监听器重定向到https

六、java服务访问

java服务使用调度平台,会把handler注册到admin,那么一般情况不需要通过公网访问,包括任务出发的回调也都应该通过内网。

1.java服务内网注册任务

java服务与调度服务之间的交互以及负载没必要走公网,可以配置内网域名或者内网alb来实现。

如果使用nginx自己实现负载,可以创建私有托管区(不需要购买公网域名):

选择私有域名所在vpc然后创建:

然后配置nginx监听私有创建的二级私有域名并转发负载到两台内网机器即可。

代码语言:javascript
复制
server {
    listen       80;
    server_name  私有二级域名;
    location / {
            proxy_pass http://xxl-job/;  
     }
}
upstream xxl-job {
    server 内网1:8080 weight=1;
    server 内网2:8080 weight=1;
}

如果使用alb做负载,可以创建内网alb并将请求转发到调度服务目标组。

然后选择vpc以及转发的目标群组,创建后得到内网alb地址类似:

代码语言:javascript
复制
xxl-job-internal-alb-xxx.xxx.amazonaws.com

通过上述的私有二级域名或者内网alb地址,应用程序即可访问调度服务了。

代码语言:javascript
复制
### xxl-job
xxl.job.accessToken=xxxxxx
xxl.job.admin.addresses=http://xxl-job-internal-alb-xxx.xxx.amazonaws.com
2.任务触发回调java服务

默认回调端口是9999,可以自定义配置,需要将执行器端口对调度机器开放,也就是业务服务机器的9999(或自定义端口)对xxl-job机器ip开放(此处内网开放即可)。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-12-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 PersistentCoder 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 内容目录
  • 一、机器准备
  • 二、安装运行环境
    • 1.java
      • 2.supervisor
        • 3.初始化运行目录
        • 三、打包上传服务
          • 1.初始化数据库
            • 2.打包上传
            • 四、启动调度服务
              • 1.添加supervisor启动配置
                • 2.启动服务
                • 五、配置域名与负载
                  • 1.创建目标群组
                    • 2.创建alb
                      • 3.配置域名证书
                      • 六、java服务访问
                        • 1.java服务内网注册任务
                          • 2.任务触发回调java服务
                          领券
                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档