5

DatabaseLessLeasing の問題に直面しています。私たちのものはミドルウェア アプリケーションです。データベースはなく、アプリケーションは WebLogic サーバーで実行されています。1 つのクラスターに 2 つのサーバーがあります。両方のサーバーが稼働していますが、1 つのサーバーのみを使用して処理を行っています。プライマリ サーバーに障害が発生すると、サーバーとサービス全体がセカンダリ サーバーに移行されます。これはうまくいっています。

しかし、昨年末に、セカンダリ サーバー ハードウェアがダウンし、セカンダリ サーバーが利用できないという問題が 1 つ発生しました。以下の問題が発生しました。私たちが Oracle に行ったとき、彼らはもう 1 台のサーバーを用意するか、クラスターのリース情報を保持する高可用性のデータベースを 1 台用意して、どれがマスター サーバーであるかを指摘することを提案しました。現時点では、新しいサーバーを配置するということは、予算の問題が発生し、クライアントがその準備ができていないことを意味するため、そのオプションはありません。

クラスターの Weblogic 構成は次のとおりです。

  1. 2 つの管理対象サーバーを持つ 1 つのクラスター
  2. クラスタ メッセージング モードはマルチキャストです
  3. 移行の基本はコンセンサス
  4. ロードアルゴリズムはラウンドロビンです

これは私が見つけたログです

ログ: クリティカル ヘルス BEA-310006 クリティカル サブシステム DatabaseLessLeasing が失敗しました。サーバーの状態を FAILED に設定しています。理由: サーバーがマジョリティ クラスタ パーティションにない>

クリティカル WebLogicServer BEA-000385 サーバーのヘルスに失敗しました。理由: 重要なサービス 'DatabaseLessLeasing' の状態が失敗しました通知 WebLogicServer BEA-000365 サーバーの状態が FAILED に変更されました

**注: **1 つだけ覚えていますが、これが発生したとき、サーバーはダウンしていませんでした。両方のサーバーが実行されていましたが、突然サーバーが再起動しようとし、再起動できませんでした。再起動に失敗しました。ステータスがfailedToRestartと表示され、アプリケーションがダウンしたことがわかりました。

誰でもこの問題について私を助けてくれませんか。

ありがとうございました

4

2 に答える 2

3

クラスター化された移行構成のセカンダリ ノードのノード マネージャーが稼働中であることを確認します。

于 2016-11-12T17:35:13.073 に答える
3

コンセンサス リースでは、サーバーの大部分が機能し続ける必要があります。ネットワーク パーティションが存在するときはいつでも、マジョリティ パーティション内のサーバーは引き続き実行されますが、マイノリティ パーティション内のサーバーはクラスター リーダーに接続できず、サーバーの過半数を持たないため新しいクラスター リーダーを選択できないため、失敗します。パーティションによってサーバーが均等に分割された場合、クラスター リーダーを含むパーティションは存続し、他のパーティションは失敗します。

上記の機能により、自動サーバー移行が有効になっている場合、サーバーはクラスターリーダーに連絡して定期的にリースを更新する必要があります。リースを更新できない場合、サーバーは自動的にシャットダウンします。障害が発生したサーバーは、マジョリティ パーティション内のマシンに自動的に移行されます。

パーティショニングされた (多数のクラスターの一部ではない) サーバーは、FAILED 状態になります。この動作は、クラスターに 2 つのパーティションがあり、両方がそれらを実際のクラスターと見なすスプリットブレイン シナリオを回避するために導入されています。クラスタがセグメント化されると、最大のセグメントが存続し、小さいセグメントはシャットダウンします。サーバーがクラスター マスターに到達できない場合、サーバーはより大きなパーティションにあるかどうかを判断します。それらがより大きなパーティションにある場合、新しいクラスター マスターが選択されます。そうでない場合、リースの有効期限が切れるとすべてがシャットダウンします。この場合、2 ノード クラスタが問題になります。クラスタが分割された場合、どのパーティションが最大ですか? 2 ノード クラスタでクラスタ マスターがダウンした場合、残りのサーバーは自分が過半数を占めているかどうかを知る方法がありません。その場合、残りのサーバーがクラスター マスターである場合は、引き続き実行されます。マスターでない場合はシャットダウンします。

通常、このエラーは、1 つのクラスターに管理対象サーバーが 2 つしかない場合に表示されます。

この種の問題を解決するには、別のサーバーを作成します。クラスターは 2 つのノードのみであるため、接続が失われたり、クラスター ブロードキャスト メッセージがドロップされたりすると、どのサーバーも過半数のクラスター パーティションから外れます。このシナリオでは、クラスターの他のサーバー部分はありません。

コンセンサス リースの場合、少なくとも 3 つのノードを持つクラスターを作成することが常に推奨されます。そうすれば、ある程度の安定性を確保できます。

そのシナリオでは、1 台のサーバーがクラスターから脱落しても、残りの 2 台は過半数のクラスター パーティションにとどまるため、正常に機能します。3 台目のサーバーはクラスターに再び参加するか、最終的に再起動されます。

クラスターの一部としてサーバーが 2 台しかないシナリオでは、1 台がクラスターから脱落すると、両方のサーバーが再起動されます。これは最終的に非常に不安定な環境になります。

もう 1 つの考えられるシナリオは、管理対象サーバー間に通信の問題があったことです。「lost .* message(s)」のようなメッセージに注意する必要があります [ユニキャストの場合は、「Lost 2 unicast message(s. "] これは、一時的なネットワークの問題が原因である可能性があります

于 2013-08-29T06:01:45.697 に答える