5

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

但是去年年底我们遇到了一个问题,即我们的辅助服务器硬件出现故障并且辅助服务器不可用。我们得到了以下问题。当我们去Oracle的时候,他们建议多一台服务器或一台高可用性的数据库来保存集群租赁信息,以指出哪个是主服务器。到目前为止,我们没有这个选项可以做,因为放置新服务器意味着会有预算问题,而客户还没有准备好。

我们对集群的 Weblogic 配置是:

  1. 一个带有 2 台托管服务器的集群
  2. 集群消息模式为组播
  3. 迁移基础是共识
  4. 加载算法是循环

这是我找到的日志

LOG:Critical Health BEA-310006 关键子系统 DatabaseLessLeasing 失败。将服务器状态设置为 FAILED。原因:服务器不在多数集群分区>

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

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

谁能帮我解决这个问题。

谢谢

4

2 回答 2

3

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

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

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

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

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

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

在这种情况下,即使一台服务器退出集群,其他两台仍然正常运行,因为它们仍保留在多数集群分区中。第三台将重新加入集群,或者最终重新启动。

在您只有 2 台服务器作为集群一部分的情况下,其中一台从集群中脱落将导致两台服务器都被重新启动,因为它们不是多数集群分区的一部分;这最终会导致一个非常不稳定的环境。

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

于 2013-08-29T06:01:45.697 回答
3

确保集群迁移配置中辅助节点的节点管理器已启动并正在运行。

于 2016-11-12T17:35:13.073 回答