支持群集的Tomcat Web应用程序

时间:2013-05-31 14:07:01

标签: java tomcat cluster-computing

我相信这项任务并不是很奇特,但由于缺乏集群经验,我觉得很难找到答案。
我们的网络应用程序按计划执行一些后台操作(数据查询和传输)。 现在运行它的Tomcat服务器进行了集群化。我们只需要群集中的一个实例来执行这些后台操作,而不是全部 我看到以下选项:

  • 理想的解决方案是集群的主/从模型,其中Tomcat的从属实例使我们的应用程序处于非活动状态(取消部署)。如果slave成为master,则应用程序将被部署并开始工作。可能吗 ?

  • 如果没有,那么我们需要一些我们可以实现侦听器的通知/事件,以便知道某个节点何时启动/关闭。然后,我们将以编程方式在第一个凸起节点中将应用程序作为主节点,并在其他(从属)节点中阻止不需要的进程。此外,我们将从节点侦听启动/关闭事件,以始终保持单个活动主控。我在Tomcat中寻找这样的事件API,但到目前为止运气不错。

有没有人有过这样的任务经验?你是怎么解决的? 谢谢。

1 个答案:

答案 0 :(得分:0)

我不知道Tomcat集群中是否存在主/从行为设置,因为我认为所有节点都需要相等。但是如何使用Quartz Clustering with JDBC-JobStore呢?您可以在共享数据库中定义任务,如果触发任务,则第一个可用节点将执行该任务。因此,群集中的所有节点都将具有相同的行为,而一次只有一个节点将执行相同的任务:

  

“每次触发只会有一个节点触发作业。...每次都不一定是同一个节点 - 它或多或少是随机的,哪个节点运行它。负载均衡机制接近随机对于繁忙的调度程序(许多触发器),但是对于非繁忙(例如,很少的触发器)调度程序而言,优先使用相同的节点。“

如果节点在执行任务时失败,则下一个可用节点将重试:

  

“当其中一个节点在执行一个或多个作业时发生故障时发生故障转移。当节点发生故障时,其他节点检测到该情况并识别数据库中正在进行的作业节点“。