微信公众号:PersistentCoder 关注可了解更多的教程。问题或建议,请公众号留言;
一、机器准备二、安装运行环境三、打包上传服务四、启动调度服务五、配置域名与负载六、java服务访问
服务器类型 | centos7 | 或者其他linux版本 |
---|---|---|
cpu | 2核 | 可根据需要调整 |
内存 | 8G | 可根据需要调整 |
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
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
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/
从项目中获取初始化脚本,并初始化数据库:
xxl-job在本地修改mysql连接配置
修改服务器访问token,此token用来业务服务向调度服务注册调度任务时访问使用:
### xxl-job, access token
xxl.job.accessToken=xxxxxxxxx
打包上传到服务器/opt/app/server/xxl-job目录
mvn -U clean package -Dmaven.test.skip -Pprod
scp target/xxl-job-admin.jar user@xxx.xxx.xxx.xxx:/opt/app/server/xxl-job
root账号登录,在/etc/supervisor/conf.d目录添加xxl-job.conf配置
[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
切换成dev账号, 启动supervisor
supervisord -c /etc/supervisor/supervisord.conf
使用supervisor命令启动xxl-job调度服务
supervisorctl start xxl-job
负载可以使用nginx或者类似alb产品等。
创建xxl-job目标群组,8080端口并注册两台机器
创建alb,http请求转发到xxl-job目标组
java服务使用调度平台,会把handler注册到admin,那么一般情况不需要通过公网访问,包括任务出发的回调也都应该通过内网。
java服务与调度服务之间的交互以及负载没必要走公网,可以配置内网域名或者内网alb来实现。
如果使用nginx自己实现负载,可以创建私有托管区(不需要购买公网域名):
选择私有域名所在vpc然后创建:
然后配置nginx监听私有创建的二级私有域名并转发负载到两台内网机器即可。
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地址类似:
xxl-job-internal-alb-xxx.xxx.amazonaws.com
通过上述的私有二级域名或者内网alb地址,应用程序即可访问调度服务了。
### xxl-job
xxl.job.accessToken=xxxxxx
xxl.job.admin.addresses=http://xxl-job-internal-alb-xxx.xxx.amazonaws.com
默认回调端口是9999,可以自定义配置,需要将执行器端口对调度机器开放,也就是业务服务机器的9999(或自定义端口)对xxl-job机器ip开放(此处内网开放即可)。
本文分享自 PersistentCoder 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!