Quartz - Spring Batch Multi Cluster Issue

时间:2016-03-18 17:36:13

标签: java spring spring-batch quartz-scheduler scheduler

我在负载均衡器后面有2个活动服务器。让我们说负载均衡器是A,节点是A1和A2。

现在,A1和A2有石英调度程序,A1和A2有弹簧批处理作业实例。

在下午1:00,我们可以说工作应该被踢,并且可以在A1或A2上运行。

但有时会发生的事情是A1和A2都会踢完工作,不知何故他们会跑两次。它在不同节点或同一节点上运行。

问题是在两个级别石英以某种方式踢了两个相同工作的实例,不知何故春季批次也运行两个实例。

欢迎任何有关解决行业问题或最佳做法的建议。

1 个答案:

答案 0 :(得分:0)

您应该只检查服务器A1和A2的时钟。

正如Quartz guide中明确指出的那样,

  

永远不要在不同的计算机上运行群集,除非使用某种形式的时间同步服务(守护程序)同步它们的时钟,这些服务定期运行(时钟必须在彼此的秒内)。如果您不熟悉如何执行此操作,请参阅http://www.boulder.nist.gov/timefreq/service/its.htm

无论如何,在不同的机器上运行多个实例是一项冒险的事情。可能最好使用A2作为A1的故障转移集群并行运行它。