我们的设置是:Glassfish版本3.1.2.2 -
当instance-1(或instance-2)正常关闭时,另一个实例会按预期从关闭实例中恢复计时器。当instance-2崩溃或异常脱机时,instance-1恢复其计时器(再次,如预期的那样)。但是当instance-1崩溃时,instance-2似乎没有像预期的那样恢复它的定时器。
从日志中我可以看到,instance-2收到了针对instance-1的正确故障转移消息并开始恢复,但是在没有恢复故障实例的任何事务或定时器的情况下完成恢复。
谁能告诉我问题是什么? (我应该提供更多信息吗?)
答案 0 :(得分:0)
经过2周左右的工作,我们终于找到了问题。
当群集中的实例出现故障时,恢复实例似乎通过尝试访问已关闭实例的“node-host”:“admin-node-port”来检查实例是否仍处于运行状态。如果您在DAS上使用标准创建的节点(就像我们一样),则将node-host设置为“localhost”(就像实例-1所做的那样)。
因此,实例-2试图通过尝试连接到“localhost”而不是“instance-1-ip”来查看实例-1是否已关闭。由于它可以连接到localhost,因此实例-1被错误地标记为正在运行,并且恢复没有继续进行。
我们必须更改domain config.xml中instance-1节点的node-host来修复此问题,因为无法通过asadmin或admin console更改默认localhost-的配置。