DatabaseLessLeasing失败,并且服务器不在多数群集分区中

use*_*540 5 java weblogic cluster-computing

我面临着DatabaseLessLeasing问题。我们的是一个中间件应用程序。我们没有任何数据库,我们的应用程序正在WebLogic服务器上运行。我们在一个群集中有2台服务器。两台服务器都已启动并正在运行,但是我们仅使用一台服务器来进行处理。当主服务器发生故障时,整个服务器和服务将迁移到辅助服务器。一切正常。

但是去年年底,我们的一个问题是辅助服务器硬件出现故障,辅助服务器不可用。我们得到了以下问题。当我们进入Oracle时,他们建议再增加一台服务器或一个具有高可用性的数据库来保存集群租赁信息,以指出哪个是主服务器。截至目前,我们还没有该选项,因为放置新服务器意味着将出现预算问题,并且客户端尚未准备就绪。

我们的集群Weblogic配置为:

  1. 一个包含2个托管服务器的集群
  2. 群集消息传递模式为“多播”
  3. 移民基础是共识
  4. 加载算法是Round Robin

这是我发现的日志

日志:危急状况BEA-310006危急子系统DatabaseLessLeasing失败。将服务器状态设置为FAILED。原因:服务器不在多数群集分区中>

严重WebLogicServer BEA-000385服务器运行状况失败。原因:关键服务'DatabaseLessLeasing'的运行状况失败通知WebLogicServer BEA-000365服务器状态已更改为FAILED

**注意:**我还记得一件事,发生这种情况时服务器没有关闭。两台服务器都在运行,但是突然服务器尝试重新启动,但无法重新启动。重新启动失败。我看到状态显示为failToRestart并且应用程序已关闭。

谁能帮我解决这个问题。

谢谢

Pra*_*sad 3

共识租赁需要大多数服务器继续运行。每当出现网络分区时,多数分区中的服务器将继续运行,而少数分区中的服务器将失败,因为它们无法联系集群领导者或选举新的集群领导者,因为它们不会拥有多数服务器。如果分区导致服务器均等划分,则包含集群领导者的分区将存活,而另一个分区将失败。

由于上述功能,如果启用自动服务器迁移,服务器需要联系集群领导者并定期更新其租约。如果服务器无法续订租约,它们将自行关闭。然后,故障服务器将自动迁移到多数分区中的计算机。

被分区的服务器(而不是多数集群的一部分)将进入 FAILED 状态。实施此行为是为了避免出现裂脑情况,即集群有两个分区并且都认为它们是真正的集群。当集群被分段时,最大的段将存活下来,而较小的段将自行关闭。当服务器无法到达集群主服务器时,它们会确定自己是否位于较大的分区中。如果它们位于较大的分区中,它们将选举一个新的集群主机。如果没有,他们将在租约到期时全部关闭。在这种情况下,双节点集群会出现问题。当集群被分区时,哪个分区最大?当集群主服务器在双节点集群中出现故障时,剩余的服务器无法知道它是否占多数。在这种情况下,如果剩余的服务器是集群主服务器,它将继续运行。如果不是master,就会关闭。

通常,当一个集群中只有 2 台托管服务器时,就会出现此错误。

要解决此类问题,请创建另一个服务器;由于集群只有 2 个节点,因此如果任何服务器失去连接/丢弃集群广播消息,它将脱离多数集群分区。在这种情况下,集群中没有其他服务器。

对于共识租赁,始终建议创建至少 3 个节点的集群;这样你就可以确保一定的稳定性。

在这种情况下,即使一台服务器脱离集群,另外两台服务器仍然可以正常工作,因为它们保留在大多数集群分区中。第三台服务器将重新加入集群,或者最终重新启动。

在集群中只有 2 台服务器的情况下,其中一台服务器从集群中退出将导致两台服务器重新启动,因为它们不属于多数集群分区;这最终将导致一个非常不稳定的环境。

另一种可能的情况是托管服务器之间存在通信问题,您应该留意诸如“丢失 .* 消息”之类的消息 [如果是单播,则为“丢失 2 个单播消息”之类的消息。 》]这可能是由于临时网络问题造成的