背景:
1. <elastic.version>2.1.5</elastic.version>
2. 分为本地,fat,uat,prd环境,本地和fat用的一个zk , uat,prd分别有各自的zk
3. fat uat prd 三个环境都是2个服务器,集群部署
4. 数据量比较少,因此,未配置分片,导致定时任务只会在一个服务器上面运行(此点需要研究是否允许轮询服务器执行)
描述:
dev uat prd 一切正常
fat 有异常,刚开始运行正常,后来fat发布版本后,任务不再执行。
检查过程:
1. 检查zk,服务正常。
2. 检查elastic job分片等配置,配置正常。
3. fat启动单个服务器,定时任务仍然不执行。
4. 后来突然想到,dev和fat用的同一个zk,分布式调度会根据zk节点来,会不会这里导致的问题?
验证过程:
elastic job 看文档 https://shardingsphere.apache.org/elasticjob/current/cn/overview/
从apache官网下载ui包
https://www.apache.org/dyn/closer.cgi/shardingsphere/elasticjob-ui-3.0.0-beta/apache-shardingsphere-elasticjob-3.0.0-beta-lite-ui-bin.tar.gz
解压启动访问查看,发现 有多个instance 在此zk上面,全部处于执行状态,说明,定时任务已经在其他服务器运行,因此,fat发版新启动的服务不会执行。
出现原因:
部门在研究新的容器部署,因此有新的fat环境在运行(命名为容器fat环境),导致fat环境的集群有多套,zk选择的是容器fat环境进行定时任务的执行。
解决方案:
暂时解决方案:在UI上面,设置disable其余所有的instance,然后等到配置的时间间隔后,fat正常执行定时任务。