(58)【調査した分野】(Int.Cl.,DB名)
クラスタおよびクォーラム記憶装置により形成されたシステムに適用されるクラスタ・ブレイン分割後の調停処理方法であって、前記クラスタは少なくとも2つのクォーラム・ノードを含み、前記クラスタ内の前記少なくとも2つのクォーラム・ノードの1つは初期マスタ・クォーラム・ノードとして予め記録され、前記方法は、
前記クォーラム記憶装置により、リフレッシュ・パケット検出期間を開始するステップであって、前記リフレッシュ・パケット検出期間は反復実行される期間である、ステップと、
ブレイン分割が前記クラスタ内で行われた後、前記クォーラム記憶装置により、第1のリフレッシュ・パケット検出期間内に、前記クラスタ内の前記少なくとも2つのクォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求を受信し、前記第1のリフレッシュ・パケット検出期間内に受信された前記マスタ・クォーラム・ノード・プリエンプション要求が、前記初期マスタ・クォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求を含むかどうかを判定するステップであって、前記第1のリフレッシュ・パケット検出期間は前記ブレイン分割が前記クラスタ内で発生した時点に対応するリフレッシュ・パケット検出期間である、ステップと、
前記第1のリフレッシュ・パケット検出期間内に受信された前記マスタ・クォーラム・ノード・プリエンプション要求が、前記初期マスタ・クォーラム・ノードにより送信された前記マスタ・クォーラム・ノード・プリエンプション要求を含むと判定したとき、前記クォーラム記憶装置により、前記初期マスタ・クォーラム・ノードがマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードであると判定するステップと、
前記クォーラム記憶装置により、マスタ・クォーラム・ノード・プリエンプション成功応答メッセージをマスタ・クォーラム・ノードのプリエンプションに成功した前記クォーラム・ノードに送信するステップと、
前記第1のリフレッシュ・パケット検出期間内に受信された前記マスタ・クォーラム・ノード・プリエンプション要求が、前記初期マスタ・クォーラム・ノードにより送信された前記マスタ・クォーラム・ノード・プリエンプション要求を含まないと判定したとき、クォーラム記憶装置により、第2のリフレッシュ・パケット検出期間内に受信された第1のマスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードをマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードとして使用し、マスタ・クォーラム・ノード・プリエンプション成功応答メッセージをマスタ・クォーラム・ノードのプリエンプションに成功した前記クォーラム・ノードに送信するステップであって、前記第2のリフレッシュ・パケット検出期間は前記第1のリフレッシュ・パケット検出期間に続くリフレッシュ・パケット検出期間である、ステップと、
を含む、方法。
前記クォーラム記憶装置により、ブレイン分割が前記クラスタ内で行われた後、前記第1のリフレッシュ・パケット検出期間内に受信された前記マスタ・クォーラム・ノード・プリエンプション要求が、前記初期マスタ・クォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求を含むかどうかを判定するステップは特に、
前記ブレイン分割が前記クラスタで行われた後、前記クォーラム記憶装置により、前記第1のリフレッシュ・パケット検出期間内に受信された全てのマスタ・クォーラム・ノード・プリエンプション要求をキャッシュし、前記クォーラム記憶装置により、全ての前記キャッシュされたマスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードが前記初期マスタ・クォーラム・ノードを含むかどうかを判定するステップ、
または
前記ブレイン分割が前記クラスタで行われた後、前記クォーラム記憶装置により、前記第1のリフレッシュ・パケット検出期間内に受信された各マスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードが前記初期マスタ・クォーラム・ノードであるかどうかを逐次的に判定するステップ
を含む、請求項1に記載の方法。
前記クォーラム記憶装置が、前記第1のリフレッシュ・パケット検出期間内に受信された前記マスタ・クォーラム・ノード・プリエンプション要求が、前記初期マスタ・クォーラム・ノードにより送信された前記マスタ・クォーラム・ノード・プリエンプション要求を含まないと判定した後、前記方法はさらに、
前記クォーラム記憶装置により、マスタ・クォーラム・ノードのプリエンプション失敗応答メッセージを前記第1のリフレッシュ・パケット検出期間内に受信された前記マスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードの各々に送信し、その結果、前記第1のリフレッシュ・パケット検出期間内に受信された前記マスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードは新たなマスタ・クォーラム・ノード・プリエンプション要求を前記クォーラム記憶装置に再度送信する、ステップ
を含む、請求項1に記載の方法。
前記クォーラム記憶装置により、マスタ・クォーラム・ノード・プリエンプション成功応答メッセージをマスタ・クォーラム・ノードのプリエンプションに成功した前記クォーラム・ノードに送信した後、前記方法はさらに、
前記クォーラム記憶装置により、マスタ・クォーラム・ノードのプリエンプションに成功した前記クォーラム・ノードにより送信された第1のパーミッション制御メッセージを受信するステップであって、前記第1のパーミッション制御メッセージはマスタ・クォーラム・ノードのプリエンプションに成功した前記クォーラム・ノードに接続しない第1のカテゴリのクォーラム・ノードの識別子を含む、ステップと、
前記クォーラム記憶装置により、アクセス拒否通知メッセージを前記第1のカテゴリのクォーラム・ノードに送信して、ノード再開動作を実施するように前記第1のカテゴリのクォーラム・ノードに指示するステップと、
を含む、請求項1乃至3の何れか1項に記載の方法。
前記クォーラム記憶装置により、マスタ・クォーラム・ノード・プリエンプション成功応答メッセージをマスタ・クォーラム・ノードのプリエンプションに成功した前記クォーラム・ノードに送信した後、前記方法はさらに、
前記クォーラム記憶装置により、マスタ・クォーラム・ノードのプリエンプションに成功した前記クォーラム・ノードにより送信された第2のパーミッション制御メッセージを受信するステップであって、前記第2のパーミッション制御メッセージは、マスタ・クォーラム・ノードのプリエンプションに成功した前記クォーラム・ノードに接続する第2のカテゴリのクォーラム・ノードの識別子を含む、ステップと、
前記クォーラム記憶装置により、マスタ・クォーラム・ノード・プリエンプション失敗通知メッセージを前記第2のカテゴリのクォーラム・ノードに送信して、マスタ・クォーラム・ノード・プリエンプション要求を前記クォーラム記憶装置に送信するのを停止するように前記第2のカテゴリのクォーラム・ノードに指示するステップと、
を含む、請求項1乃至4の何れか1項に記載の方法。
前記クォーラム記憶装置により、マスタ・クォーラム・ノード・プリエンプション成功応答メッセージをマスタ・クォーラム・ノードのプリエンプションに成功した前記クォーラム・ノードに送信した後、前記方法はさらに、
前記クォーラム記憶装置により、マスタ・クォーラム・ノードのプリエンプションに成功した前記クォーラム・ノードにより送信されたパーミッション制御メッセージを受信するステップであって、前記パーミッション制御メッセージは、前記クォーラム記憶装置に対する、前記少なくとも2つのクォーラム・ノード内のマスタ・クォーラム・ノードのプリエンプションに成功した前記クォーラム・ノードを除く別のクォーラム・ノードの識別子と、前記少なくとも2つのクォーラム・ノード内のマスタ・クォーラム・ノードのプリエンプションに成功した前記クォーラム・ノードを除く前記別のクォーラム・ノードのアクセス・パーミッションとを含み、前記アクセス・パーミッションは許可または拒否を含む、ステップと、
前記パーミッション制御メッセージに従って、前記クォーラム記憶装置により、通知メッセージを前記少なくとも2つのクォーラム・ノード内のマスタ・クォーラム・ノードのプリエンプションに成功した前記クォーラム・ノードを除く前記別のクォーラム・ノードに送信するステップと、
を含む、請求項1乃至3の何れか1項に記載の方法。
アクセス・パーミッションが拒否である第1のカテゴリのクォーラム・ノードに対して、前記パーミッション制御メッセージに従って、前記クォーラム記憶装置により、通知メッセージを前記少なくとも2つのクォーラム・ノード内のマスタ・クォーラム・ノードのプリエンプションに成功した前記クォーラム・ノードを除く前記別のクォーラム・ノードに送信するステップは特に、
前記クォーラム記憶装置により、アクセス拒否通知メッセージを前記第1のカテゴリのクォーラム・ノードに送信して、ノード再開動作を実施するように前記第1のカテゴリのクォーラム・ノードに指示するステップ
を含む、請求項6に記載の方法。
アクセス・パーミッションが許可である第2のカテゴリのクォーラム・ノードに対して、前記パーミッション制御メッセージに従って、前記クォーラム記憶装置により、通知メッセージを前記少なくとも2つのクォーラム・ノード内のマスタ・クォーラム・ノードのプリエンプションに成功した前記クォーラム・ノードを除く前記別のクォーラム・ノードに送信するステップは特に、
前記クォーラム記憶装置により、マスタ・クォーラム・ノード・プリエンプション失敗通知メッセージを前記第2のカテゴリのクォーラム・ノードに送信して、マスタ・クォーラム・ノード・プリエンプション要求を前記クォーラム記憶装置に送信するのを停止するように前記第2のカテゴリのクォーラム・ノードに指示するステップ
を含む、請求項6または7に記載の方法。
クラスタおよびクォーラム記憶装置により形成されたシステムに適用されるクラスタ内の調停処理のためのクォーラム記憶装置であって、前記クラスタは少なくとも2つのクォーラム・ノードを含み、前記クラスタ内の前記少なくとも2つのクォーラム・ノードの1つは初期マスタ・クォーラム・ノードとして予め記録され、前記クォーラム記憶装置は、
リフレッシュ・パケット検出期間を開始するように構成された開始ユニットであって、前記リフレッシュ・パケット検出期間は反復実行される期間である、開始ユニットと、
第1のリフレッシュ・パケット検出期間内に、ブレイン分割が前記クラスタ内で行われた後、前記クラスタ内の前記少なくとも2つのクォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求を受信するように構成された受信ユニットであって、前記第1のリフレッシュ・パケット検出期間は前記ブレイン分割が前記クラスタ内で発生した時点に対応するリフレッシュ・パケット検出期間である、受信ユニットと、
前記第1のリフレッシュ・パケット検出期間内に受信された前記マスタ・クォーラム・ノード・プリエンプション要求が、前記初期マスタ・クォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求を含むかどうかを判定するように構成された判定ユニットと、
前記第1のリフレッシュ・パケット検出期間内に受信された前記マスタ・クォーラム・ノード・プリエンプション要求が、前記初期マスタ・クォーラム・ノードにより送信された前記マスタ・クォーラム・ノード・プリエンプション要求を含むと判定されたとき、前記初期マスタ・クォーラム・ノードはマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードであると判定するように構成された実行ユニットと、
マスタ・クォーラム・ノード・プリエンプション成功応答メッセージをマスタ・クォーラム・ノードのプリエンプションに成功した前記クォーラム・ノードに送信するように構成された送信ユニットと、
を備え、
前記実行ユニットはさらに、前記第1のリフレッシュ・パケット検出期間内に受信された前記マスタ・クォーラム・ノード・プリエンプション要求が、前記初期マスタ・クォーラム・ノードにより送信された前記マスタ・クォーラム・ノード・プリエンプション要求を含まないと判定されたとき、第2のリフレッシュ・パケット検出期間内に受信された第1のマスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードをマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードとして使用するように構成され、前記第2のリフレッシュ・パケット検出期間は前記第1のリフレッシュ・パケット検出期間に続くリフレッシュ・パケット検出期間であり、
前記送信ユニットはさらに、マスタ・クォーラム・ノード・プリエンプション成功応答メッセージをマスタ・クォーラム・ノードのプリエンプションに成功した前記クォーラム・ノードに送信するように構成される、
クォーラム記憶装置。
前記判定ユニットは特に、前記ブレイン分割が前記クラスタで行われた後、前記第1のリフレッシュ・パケット検出期間内に受信された全てのマスタ・クォーラム・ノード・プリエンプション要求をキャッシュし、全ての前記キャッシュされたマスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードが前記初期マスタ・クォーラム・ノードを含むかどうかを判定するか、または、前記ブレイン分割が前記クラスタで行われた後、前記第1のリフレッシュ・パケット検出期間内に受信された各マスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードが前記初期マスタ・クォーラム・ノードであるかどうかを逐次的に判定するように構成される、
請求項11に記載のクォーラム記憶装置。
前記実行ユニットはさらに、前記第1のリフレッシュ・パケット検出期間内に受信された前記マスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードが前記初期マスタ・クォーラム・ノードを含まないと判定されたとき、マスタ・クォーラム・ノードのプリエンプション失敗応答メッセージを生成するように構成され、
前記送信ユニットはさらに、前記マスタ・クォーラム・ノードのプリエンプション失敗応答メッセージを前記第1のリフレッシュ・パケット検出期間内に受信された前記マスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードの各々に送信するように構成され、その結果、前記第1のリフレッシュ・パケット検出期間内に受信された前記マスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードは新たなマスタ・クォーラム・ノード・プリエンプション要求を前記クォーラム記憶装置に再度送信する、
請求項11に記載のクォーラム記憶装置。
前記受信ユニットはさらに、前記送信ユニットがマスタ・クォーラム・ノード・プリエンプション成功応答メッセージをマスタ・クォーラム・ノードのプリエンプションに成功した前記クォーラム・ノードに送信した後、マスタ・クォーラム・ノードのプリエンプションに成功した前記クォーラム・ノードにより送信された第1のパーミッション制御メッセージを受信するように構成され、前記第1のパーミッション制御メッセージは、前記クラスタ内の前記少なくとも2つのクォーラム・ノード内のマスタ・クォーラム・ノードのプリエンプションに成功した前記クォーラム・ノードに接続しない第1のカテゴリのクォーラム・ノードの識別子を含み、
前記実行ユニットはさらに、マスタ・クォーラム・ノードのプリエンプションに成功した前記クォーラム・ノードにより送信された前記第1のパーミッション制御メッセージに従ってアクセス拒否通知メッセージを生成するように構成され、
前記送信ユニットはさらに、前記アクセス拒否通知メッセージを前記第1のカテゴリのクォーラム・ノードに送信して、ノード再開動作を実施するように前記第1のカテゴリのクォーラム・ノードに指示するように構成される、
請求項11乃至13の何れか1項に記載のクォーラム記憶装置。
前記受信ユニットはさらに、前記送信ユニットがマスタ・クォーラム・ノード・プリエンプション成功応答メッセージをマスタ・クォーラム・ノードのプリエンプションに成功した前記クォーラム・ノードに送信した後、マスタ・クォーラム・ノードのプリエンプションに成功した前記クォーラム・ノードにより送信された第2のパーミッション制御メッセージを受信するように構成され、前記第2のパーミッション制御メッセージは、前記少なくとも2つのクォーラム・ノード内のマスタ・クォーラム・ノードのプリエンプションに成功した前記クォーラム・ノードに接続する第2のカテゴリのクォーラム・ノードの識別子を含み、
前記実行ユニットはさらに、マスタ・クォーラム・ノードのプリエンプションに成功した前記クォーラム・ノードにより送信された前記第2のパーミッション制御メッセージに従ってマスタ・クォーラム・ノード・プリエンプション失敗通知メッセージを生成するように構成され、
前記送信ユニットはさらに、前記マスタ・クォーラム・ノード・プリエンプション失敗通知メッセージを前記第2のカテゴリのクォーラム・ノードに送信して、マスタ・クォーラム・ノード・プリエンプション要求を前記クォーラム記憶装置に送信するのを停止するように前記第2のカテゴリのクォーラム・ノードに指示するように構成される、
請求項11乃至14の何れか1項に記載のクォーラム記憶装置。
前記受信ユニットはさらに、前記送信ユニットがマスタ・クォーラム・ノード・プリエンプション成功応答メッセージをマスタ・クォーラム・ノードのプリエンプションに成功した前記クォーラム・ノードに送信した後、マスタ・クォーラム・ノードのプリエンプションに成功した前記クォーラム・ノードにより送信されたパーミッション制御メッセージを受信するように構成され、前記パーミッション制御メッセージは、前記クォーラム記憶装置に対する、前記少なくとも2つのクォーラム・ノード内のマスタ・クォーラム・ノードのプリエンプションに成功した前記クォーラム・ノードを除く別のクォーラム・ノードの識別子と、前記少なくとも2つのクォーラム・ノード内のマスタ・クォーラム・ノードのプリエンプションに成功した前記クォーラム・ノードを除く前記別のクォーラム・ノードのアクセス・パーミッションとを含み、前記アクセス・パーミッションは許可または拒否を含み、
前記実行ユニットはさらに、前記パーミッション制御メッセージに従って通知メッセージを生成するように構成され、
前記送信ユニットはさらに、前記通知メッセージを前記少なくとも2つのクォーラム・ノード内のマスタ・クォーラム・ノードのプリエンプションに成功した前記クォーラム・ノードを除く前記別のクォーラム・ノードに送信するように構成され、
請求項11乃至13の何れか1項に記載のクォーラム記憶装置。
前記実行ユニットは特に、アクセス・パーミッションが許可である第2のカテゴリのクォーラム・ノードに対してマスタ・クォーラム・ノード・プリエンプション失敗通知メッセージを生成し、マスタ・クォーラム・ノード・プリエンプション要求を前記クォーラム記憶装置に送信するのを停止するように前記第2のカテゴリのクォーラム・ノードに指示するように構成され、
前記送信ユニットは特に、前記マスタ・クォーラム・ノード・プリエンプション失敗通知メッセージをアクセス・パーミッションが許可である前記第2のカテゴリのクォーラム・ノードに送信するように構成される、
請求項16または17に記載のクォーラム記憶装置。
前記実行ユニットはさらに、前記送信ユニットが前記アクセス拒否通知メッセージを前記第1のカテゴリのクォーラム・ノードに送信した後、前記第1のカテゴリのクォーラム・ノードに対して、ファイアウォール・ポリシを拒否に変更するために使用される通知メッセージを生成するように構成され、ファイアウォール・ポリシを拒否に変更するために使用される前記通知メッセージは、前記第1のカテゴリのクォーラム・ノードのファイアウォール内のファイアウォール・ポリシを拒否に変更して、前記第1のカテゴリのクォーラム・ノードにより前記クォーラム記憶装置に送信されたマスタ・クォーラム・ノード・プリエンプション要求をブロックするように前記第1のカテゴリのクォーラム・ノードに指示するために使用され、
前記送信ユニットはさらに、ファイアウォール・ポリシを拒否に変更するために使用される前記通知メッセージを前記第1のカテゴリのクォーラム・ノードに送信するように構成される、
請求項14または17に記載のクォーラム記憶装置。
前記実行ユニットはさらに、前記第1のカテゴリのクォーラム・ノードが前記再開動作を実施し、前記クラスタに再度参加した後、前記第1のカテゴリのクォーラム・ノードに対して、ファイアウォール・ポリシを許可に変更するために使用される通知メッセージを生成するように構成され、ファイアウォール・ポリシを許可に変更するために使用される前記通知メッセージは、前記第1のカテゴリのクォーラム・ノードの前記ファイアウォール内の前記ファイアウォール・ポリシを許可に変更して、前記第1のカテゴリのクォーラム・ノードがマスタ・クォーラム・ノード・プリエンプション要求を前記クォーラム記憶装置に送信できるようにするように前記第1のカテゴリのクォーラム・ノードに指示するために使用され、
前記送信ユニットはさらに、ファイアウォール・ポリシを許可に変更するために使用される前記通知メッセージを前記第1のカテゴリのクォーラム・ノードに送信するように構成される、
請求項19に記載のクォーラム記憶装置。
クォーラム記憶装置であって、前記クォーラム記憶装置は、プロセッサ、メモリ、通信インタフェース、およびバスを備え、前記プロセッサ、前記メモリ、および前記通信インタフェースは前記バスを用いて互いと通信し、
前記通信インタフェースはクラスタ内の少なくとも2つのクォーラム・ノードと通信するように構成され、
前記メモリはプログラムを格納するように構成され、
前記記憶装置が実行したとき、前記プロセッサは、前記メモリに格納された前記プログラムを実行して請求項1乃至10の何れか1項に記載の方法を実行するように構成される、
クォーラム記憶装置。
【発明を実施するための形態】
【0033】
以下では、本発明の諸実施形態の添付図面を参照して本発明の諸実施形態における技術的解決策を明確かつ十分に説明する。明らかに、説明した実施形態は本発明の諸実施形態の一部であり全部ではない。当業者が創造的努力なしに本発明の諸実施形態に基づいて得る全ての他の実施形態は本発明の保護範囲の保護範囲に入るものとする。
【0034】
一般に、プログラム・モジュールは、特定のタスクを実行するかまたは特定の抽象データ型を実装するために使用されるルーチン、プログラム、コンポーネント、データ構造、および別のタイプの構造を含む。さらに、当該実施形態を、ハンドヘルド装置、マルチプロセッサ・システム、マイクロプロセッサベースのまたはプログラム可能な消費者電子製品、小型コンピュータ、メインフレーム・コンピュータ、および同様なコンピュータ装置を含む、別のコンピュータ・システムにより実装してもよいことは当業者に理解されうる。当該実施形態を、通信ネットワークにより接続されたリモート処理装置によりタスクが実行される分散コンピューティング環境で実装してもよい。分散コンピューティング環境では、プログラム・モジュールを、ローカル・メモリまたはリモート・メモリのような記憶装置に配置してもよい。
【0035】
当該実施形態を、コンピュータ実装されたプロセス、コンピューティング・システム、またはコンピュータ・プログラムを格納するコンピュータ記憶媒体として実装してもよい。コンピュータ・プログラムは、コンピュータ・システムまたはコンピュータ・プログラム製品により実行され例示的なプロセスの命令により形成される。例えば、当該コンピュータ可読記憶媒体を、揮発性コンピュータ・メモリ、不揮発性メモリ、ハード・ディスク・ドライブ、フラッシュ・ドライブ、フロッピ・ディスクまたはコンパクト・ディスク、または同様な媒体のうち1つまたは複数により実装してもよい。
【0036】
本明細書では、「クラスタ(Cluster)」という用語は、高速ネットワークを用いて相互接続された独立なコンピュータのグループを含み、当該コンピュータはグループを形成し、シングルシステム・モードで管理される。クラスタ内の各コンピュータは「ノード」と呼ばれる。
【0037】
本明細書では、「ノード(Node)」という用語は一般にネットワーク環境内で1つまたは複数のソフトウェア・プログラムを実行するために使用されるコンピューティング装置を指し、「ノード」を、ネットワーク内のサーバの1つまたは複数のコンピューティング装置で実行される仮想ノード(ソフトウェア・プログラム)として実装してもよい。特定の実装では、ノードが、物理マシン(Physical Machine)または物理マシンにインストールされた仮想マシンであってもよい。
【0038】
本明細書では、「ブレイン分割(Brain Split)」という用語はネットワークが故障しているので、クラスタが2つまたはそれより多くのノード・グループ(Node Group)に分割されることを指し、当該現象はブレイン分割と呼ばれる。
【0039】
本明細書では、「ブレイン分割調停」という用語は一般に、クラスタ内でブレイン分割が行われた後、元のクラスタがノードにより形成された幾つかのノード・グループに分割されることを指し、クラスタ管理ソフトウェアは一般に、特定のアルゴリズムを用いて、当該幾つかのノード・グループ内のどのノード・グループがマスタ・ノード・グループとして使用されるかを判定し、マスタ・ノード・グループを決定するプロセスはブレイン分割調停プロセスと呼ばれる。
【0040】
本明細書では、「マスタ・ノード・グループ(Master Node Group)」という用語は、ブレイン分割が行われた後、ブレイン分割後のノード・グループがブレイン分割調停方法に従って決定され、元のクラスタの動作を継続するために使用されることを指し、当該ノード・グループはマスタ・ノード・グループと呼ばれる。
【0041】
本明細書では、「クォーラム・ノード(Quorum Node)」という用語は、ブレイン分割がクラスタを(特にネットワーク・パーティションであってもよい)複数のノード・グループに分割させるとき、クラスタ内の特殊な機能を有する幾つかのノードは一般に判定に参加し、ブレイン分割調停を実施して、どのノード・グループが生き延びてクラスタ・サービスを提供し続けることができるかを判定し、他のノード・グループは故障と判定され、クラスタ・サービスを提供し続けることはできず、ブレイン分割調停に参加するこれらのノードはクォーラム・ノードと呼ばれる。一般に、クラスタ内の少数のノードのみがクォーラム・ノードと呼ばれる。クォーラム・ノードをシステムにより事前に構成してもよい。
【0042】
本明細書では、「マスタ・クォーラム・ノード(Master Quorum Node)」という用語は、クラスタ内の複数のクォーラム・ノードの1つを指し、当該マスタ・クォーラム・ノードが配置されるノード・グループがマスタ・ノード・グループであると判定するために使用される。ブレイン分割がクラスタ内で行われたためクラスタが複数のノード・グループに分割されるとき、当該システムは当該マスタ・クォーラム・ノードを決定し、当該マスタ・クォーラム・ノードが配置されたノード・グループは、元のクラスタの動作を継続するためにマスタ・ノード・グループとして使用される。当該マスタ・クォーラム・ノードが決定された後、ネットワーク内のマスタ・クォーラム・ノードに接続するノードがハート・ビート(Heart Beat)またはリース(Lease)による検出を通じて取得され、当該ノードにより形成されるノード・グループは、ブレイン分割がクラスタ内で行われた後、クラスタのサービスを継続するためのマスタ・ノード・グループとして使用される。
【0043】
本明細書では、「マスタ・クォーラム・ノード・プリエンプション要求」という用語は、ブレイン分割がクラスタ内で行われたときにクラスタ内のクォーラム・ノードにより生成され、マスタ・クォーラム・ノードにプリエンプトするためにクォーラム記憶装置に送信された要求を指す。当該要求は一般に当該クォーラム・ノードの識別子を含む。当該識別子が、クラスタ内の当該クォーラム・ノードのIPアドレスまたは数のようなマーキング方式であってもよい。
【0044】
本明細書では、「クォーラム記憶装置」という用語は、調停機能を引き受け、マスタ・クォーラム・ノード選択プロセスにおけるマスタ・クォーラム・ノードを最終的に決定する記憶装置を指す。クォーラム記憶装置が調停機能を実施するとき、クォーラム記憶装置が、クォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求を受信し、マスタ・クォーラム・ノードを当該クォーラム・ノードから決定する。既存のアプリケーション・シナリオにおいて、記憶ディスクは、マスタ・クォーラム・ノードを決定するための調停装置として使用されるので、クォーラム記憶装置が指定される。調停機能を引き受け記憶に使用されない別の装置も「クォーラム記憶装置」の説明範囲に入ることは当業者には理解されうる。
【0045】
本明細書では、「ファイアウォール(Firewall)」という用語は一般に、情報セキュリティを保証することを支援する装置が、特定のルールに従って、送信されたデータが当該装置を通過するのを許可または制限できることを指す。特定の実装では、当該ファイアウォールが、専用のハードウェアまたは汎用ハードウェアにインストールされた1組のソフトウェアであってもよい。
【0046】
本明細書では、「IOアクセス要求」という用語は一般に、記憶装置により受信され、当該記憶装置に格納されたデータを読むかまたは書くために使用される要求を指す。
【0047】
本明細書では、「接続」という用語はネットワーク内の接続を指す。クラスタ内のノードが、ハート・ビート検出またはリース検出により、別のノードと当該ノードの間の接続を決定してもよい。ブレイン分割がクラスタ内で行われた後、元のクラスタが幾つかのノード・グループに分割される。同一のノード・グループ内のノードは、ハート・ビート検出またはリース検出により互いの存在を検出する。これは、当該2つのノードが互いと接続することを表す。異なるノード・グループ内のノードはハート・ビート検出またはリース検出により互いの存在を検出できない。これは、当該2つのノードが互いと接続しないことを表す。
【0048】
本発明の諸実施形態のシステム・アーキテクチャ
本発明の諸実施形態を説明する前に、
図1に示すように、クラスタ・ノードと記憶装置により形成されるクラスタ・システムのアーキテクチャの略図を先ず説明する。当該システムは、N個のノード(N≧1およびNは整数である)により形成されるクラスタ100であって、各ノードを物理ノード(例えば、サーバ)に展開してもよく、または、仮想ノード(例えば、仮想マシン)に展開してもよく、アプリケーションまたはクライアントにより送信されたデータ・アクセス要求を受信し、当該データ・アクセス要求を当該記憶装置に対するIOアクセス要求に変換する責任を負う、クラスタ100と、M個の記憶装置(M≧1およびMは整数である)により形成された記憶装置リソース・プール200とを備える。各記憶装置を、記憶管理ソフトウェアと記憶媒体を含む記憶装置として理解してもよい。記憶装置リソース・プール200内の当該M個の記憶装置は様々な方式で接続される。
図1に示すM個の記憶装置はリング構造接続方式である(これは例示的な説明にすぎない)。実際の適用では、星型構造、バス構造、分散構造、ツリー構造、メッシュ構造、セルラ構造等があってもよく、詳細は本発明の当該実施形態では説明しない。当該記憶装置リソース・プール200において、少なくとも1つの記憶装置をクォーラム記憶装置として使用してもよい。クォーラム記憶装置はクラスタ内のマスタ・クォーラム・ノードの識別子を格納するために使用され、当該識別子がクラスタ内のクォーラム・ノードのIPアドレス、数等であってもよい。
【0049】
クラスタ100内のノードおよび記憶装置リソース・プール200内の記憶装置を直接接続するか、または、ネットワーク(
図1では図示せず)を用いて接続してもよい。これらの接続方式は当業界で公知な技術に属するので、詳細は本発明の当該実施形態では説明しない。
【0050】
クラスタ100に含まれるN個のノード内のP(P≧2、Pは整数であり、P<Nである)個のノードをクォーラム・ノードとして使用してもよく、これらのクォーラム・ノードは管理者または別のシステムにより当該ノードから選択され構成される。ブレイン分割がクラスタ内で行われると、当該P個のクォーラム・ノードは別々にマスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置に送信する。クォーラム記憶装置は、マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードの識別子を記録し、マスタ・クォーラム・ノード・プリエンプション成功応答メッセージを当該識別子に対応するクォーラム・ノードに送信する。当該応答メッセージは、マスタ・クォーラム・ノードのプリエンプションが成功したことを当該識別子に対応するクォーラム・ノードに通知するために使用される。
【0051】
本発明の方法の実施形態
図2A乃至
図2Cは、クラスタ内でブレイン分割が行われた後にクォーラム記憶装置がブレイン分割調停を実装する第1の方法の実施形態を示す。当該方法の実施形態は、クラスタとクォーラム記憶装置により形成される、
図1に示すシステムに適用される。
図2Aを参照すると、当該方法は以下を含む。
【0052】
201:クォーラム記憶装置が、クラスタ内のマスタ・クォーラム・ノードの識別子を事前に記録する。
【0053】
特定の実装では、クラスタが確立された後、クォーラム記憶装置は、記憶空間をクォーラム記憶装置またはサードパーティの記憶装置に設定して、マスタ・クォーラム・ノードの識別子および当該マスタ・クォーラム・ノードのステータスを記録してもよい。初期状態において、当該マスタ・クォーラム・ノードの識別子はヌル(NULL)として記録され、当該マスタ・クォーラム・ノードのステータスはヌル(NULL)または故障として記録される。クラスタが正常に動作を開始する前に、当該マスタ・クォーラム・ノードを管理者による初期設定により指定してもよい。クラスタが正常に動作を開始した後、当該初期設定されたマスタ・クォーラム・ノードが定期的にリフレッシュ・パケットをクォーラム記憶装置に送信してもよい。当該リフレッシュ・パケットは当該マスタ・クォーラム・ノードの識別子を含み、当該識別子が特にクラスタ内の当該マスタ・クォーラム・ノードのIPアドレス、数等であってもよい。クォーラム記憶装置がまた、リフレッシュ・パケット検出期間を設定して、当該マスタ・クォーラム・ノードがリフレッシュ・パケットを送信するかどうかを検出してもよい。リフレッシュ・パケット検出期間では、クォーラム記憶装置は様々なケースに従う以下の処理を実施する。
【0054】
A:リフレッシュ・パケットがリフレッシュ・パケット検出期間内に受信されなかった場合、ノードの記録されたステータスは故障に変更される。当該リフレッシュ・パケットが当該リフレッシュ・パケット検出期間内に受信されなかった場合、クォーラム記憶装置は当該マスタ・クォーラム・ノードが故障であると考えてもよく、レコード内の当該マスタ・クォーラム・ノードのステータスを故障に変更する。
【0055】
B:マスタ・クォーラム・ノードにより送信されたリフレッシュ・パケットが最初に受信されると、クォーラム記憶装置が、当該マスタ・クォーラム・ノードの識別子を記録し、レコード内の当該マスタ・クォーラム・ノードのステータスを「正常」に変更してもよい。
【0056】
C:当該マスタ・クォーラム・ノードにより送信されたリフレッシュ・パケットを受信するのが初めてではない場合、以下の2つのケースが含まれる。
【0057】
C1:当該リフレッシュ・パケットで運搬される識別子が当該ノードの記録された識別子と同じであり、当該マスタ・クォーラム・ノードの記録されたステータスが正常であることが検出されたとき、これは現在のクラスタ内の当該マスタ・クォーラム・ノードが正常であることを示し、クォーラム記憶装置は当該記録された識別子に動作を実施しない。
【0058】
C2:当該リフレッシュ・パケットで運搬される識別子が当該ノードの記録された識別子と同じであるが、当該マスタ・クォーラム・ノードの記録されたステータスがヌルかまたは故障であることが検出されたとき、クォーラム記憶装置はレコード内の当該ノードのステータスを正常に変更する。この場合、2つのアプリケーション・シナリオがあってもよい。1つのシナリオはクラスタ再開である。この場合、全てのノードが再開され、元のマスタ・クォーラム・ノードは、クラスタ再開の後、リフレッシュ・パケット検出期間内にリフレッシュ・パケットを送信できず、当該マスタ・クォーラム・ノードの記録されたステータスは故障に変更される。当該他のシナリオは、元のクォーラム・ノードにより送信されたリフレッシュ・パケットが失われ、クォーラム記憶装置が検出期間内にリフレッシュ・パケットを受信できない場合、クォーラム記憶装置が当該マスタ・クォーラム・ノードの記録されたステータスを故障に変更するというものである。
【0059】
203:ブレイン分割が行われたことが検出された後、各ノード・グループ内の各クォーラム・ノードは、マスタ・クォーラム・ノード・プリエンプション要求を生成し、当該マスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置に送信する。
【0060】
特定の実装では、1つのマスタ・クォーラム・ノードのプリエンプション機構が各クォーラム・ノードに対して設定されてもよい。即ち、ブレイン分割が行われたとクォーラム・ノードが検出した後、当該クォーラム・ノードがマスタ・クォーラム・ノード・プリエンプション要求を生成し、当該マスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置に送信してもよい。当該マスタ・クォーラム・ノード・プリエンプション要求は当該クォーラム・ノードの識別子を含み、当該クォーラム・ノードの識別子が複数の実装方式、例えば、当該クォーラム・ノードのIPアドレス(例えば、10.11.201.12)またはクラスタ内のクォーラム・ノードの一意な識別子(例えば、数字0010)、または別の実装方式を有してもよく、これは本発明の当該実施形態では限定されない。
【0061】
ブレイン分割が行われたことが検出された後、マスタ・クォーラム・ノード・プリエンプション要求を生成し送信したクォーラム・ノードは現在生き残っているクォーラム・ノードであり、これらの故障(例えば、シャットダウン)したクォーラム・ノードはマスタ・クォーラム・ノード・プリエンプション要求を生成も送信もできないことに留意すべきである。特定の実装では、マスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードが全てのクォーラム・ノードであってもよく、または、クラスタ内の幾つかのクォーラム・ノードであってもよい。
【0062】
特定の実装では、各クォーラム・ノードが、リース検出またはハート・ビート検出により、ブレイン分割が行われたことを検出してもよい。リース検出およびハート・ビート検出を使用してノード間の接続を検出してもよいことに留意すべきである。
【0063】
(1)リース(Lease)ベースの検出方法
【0064】
当該方法では、クラスタ内の各ノードを定期的に、リースのためにリース・マネージャ(Lease Manager)に適用してもよい。当該リース・マネージャはノードごとに、当該ノードにより所有されるリースのレコードを維持する。当該ノードがリースを取得した時刻が記録される。リース・マネージャがリース要求を各ノードから受信するたびに、リース・マネージャは、当該ノードにより取得されたリースの最新情報を反映するためにレコードを更新する。リース・マネージャが指定期間(リース期間、Lease Duration)内にノードのリース延長要求を受信しない場合、リース・マネージャは当該ノードのステータスをアクティブに検出してもよい(例えば、ピングにより、当該ノードが故障しているかどうかまたは当該ノードのネットワーク接続ステータスが故障であるかどうかを検出する)。リース・マネージャが複数回連続して当該ノードのステータスを検出しない(例えば、当該ノードがピング・データパケットに応答しない)場合、リース・マネージャは、当該ノードが故障していると考え、当該ノードが故障していることを示す通知をクラスタ内の別のノードに送信する。ノード・グループ内の全てのノードが故障であることを示す通知を当該クォーラム・ノードが受信した場合、当該クォーラム・ノードが、ブレイン分割がクラスタ内で行われたと判定してもよい。
【0065】
(2)ハート・ビート(Heart beat)ベースの検出方法
当該方法では、システムにおいて、ノードが、トポロジ構造に従うハート・ビート・リングを形成してもよく、当該ハート・ビート・リングにより、ハート・ビート情報を当該ノードの間で送信してもよい(ハート・ビート情報を送信する期間は一般にリース期間より短い)。当該ノードのハート・ビート情報が集約されると、当該ハート・ビート情報をクラスタ内のクォーラム・ノードで集約してもよく、ノードのハート・ビート情報が失われたかどうかが識別される。誤判定を避けるため、検出を複数回繰り返して実施してもよい。ノードのハート・ビート情報が複数回受信されない場合、当該ノードが故障しているかもしれないと判定され(この場合、アクティブな検出を実施して、当該ノードが故障しているかどうかを判定してもよい)、当該ノードが故障していることを示す通知がクラスタ内の別のノードに送信される。ノード・グループ内の全てのノードが故障していることを示す通知を当該クォーラム・ノードが受信した場合、当該クォーラム・ノードが、ブレイン分割がクラスタ内で行われたと決定してもよい。
【0066】
205:クォーラム記憶装置が、リフレッシュ・パケット検出期間内に、クラスタ内のクォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求を受信し、クォーラム記憶装置が、当該マスタ・クォーラム・ノードの事前に記録された識別子に従って、受信されたマスタ・クォーラム・ノード・プリエンプション要求が、当該識別子に対応するマスタ・クォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求を含むかどうかを判定し、そうである場合はステップ207を実施し、そうでない場合はステップ209を実施する。
【0067】
特定の実装では、クォーラム記憶装置により受信されたマスタ・クォーラム・ノード・プリエンプション要求がクラスタ内の全てのクォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求であってもよく、または、クラスタ内の幾つかのクォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求であってもよい。
【0068】
当該マスタ・クォーラム・ノード・プリエンプション要求が、記録されたマスタ・クォーラム・ノードのマスタ・クォーラム・ノード・プリエンプション要求を含むかどうかが、リフレッシュ・パケット検出期間内に決定される。当該マスタ・クォーラム・ノード・プリエンプション要求は、当該マスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードの識別子を運搬する。クォーラム記憶装置は、当該マスタ・クォーラム・ノードの事前に記録された識別子を各マスタ・クォーラム・ノード・プリエンプション要求で運搬される識別子と比較する。当該識別子が同じである場合、これは当該マスタ・クォーラム・ノード・プリエンプション要求が当該マスタ・クォーラム・ノードのマスタ・クォーラム・ノード・プリエンプション要求を含むことを示し、この場合、クォーラム記憶装置はステップ207を実施する。比較を通じて各マスタ・クォーラム・ノード・プリエンプション要求で運搬される識別子が当該マスタ・クォーラム・ノードの事前に記録された識別子と異なることが分かった場合、これは当該マスタ・クォーラム・ノード・プリエンプション要求が当該マスタ・クォーラム・ノードのマスタ・クォーラム・ノード・プリエンプション要求を含まないことを示し、この場合、クォーラム記憶装置はステップ209を実施する。
【0069】
207:受信されたマスタ・クォーラム・ノード・プリエンプション要求が当該マスタ・クォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求を含むとき、クォーラム記憶装置は当該マスタ・クォーラム・ノードの事前に記録された識別子を維持し、ステップ213を実施する。
【0070】
特定の実装では、リフレッシュ・パケット検出期間内に、元のマスタ・クォーラム・ノードが優先する処理ポリシが、ステップ207で使用される。即ち、クォーラム記憶装置のリフレッシュ・パケット検出期間内に、元のマスタ・クォーラム・ノードのマスタ・クォーラム・ノード・プリエンプション要求がクォーラム記憶装置に到着した場合、元のマスタ・クォーラム・ノードは優先的に新たなマスタ・クォーラム・ノードとして使用される。実際の適用では、マスタ・クォーラム・ノードは一般にクラスタ内の管理ノードとして使用されクラスタ管理機能を引き受けるので、当該管理ノードが頻繁に切り替えられる場合、サービス割込みが生じるかもしれず、当該管理ノードの切換えがサービス・データおよび/またはステータス・データのバックアップとコピーを生じさせるかもしれない。このように、大きな影響がクラスタのリソース処理に生ずるかもしれない。したがって、元のマスタ・クォーラム・ノードが優先的に新たなマスタ・クォーラム・ノードとして使用されるとき、上述の問題を効果的に防止することができる。
【0071】
209:受信されたマスタ・クォーラム・ノード・プリエンプション要求がマスタ・クォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求を含まないとき、応答するために、クォーラム記憶装置は応答メッセージを、当該マスタ・クォーラム・ノード・プリエンプション要求を送信した各クォーラム・ノードに送信して、当該マスタ・クォーラム・ノード・プリエンプション要求を送信し続けるように当該クォーラム・ノードに指示し、ステップ211を実施する。
【0072】
当該ステップは必須のステップでないことに留意すべきである。特定の実装では、クォーラム記憶装置が応答メッセージを送信しなくてもよいが、マスタ・クォーラム・ノード・プリエンプション要求の定期送信機構をクォーラム・ノードに事前に設定する。当該クォーラム・ノードがクォーラム記憶装置により送信された通知メッセージを受信する前に、各クォーラム・ノードが定期的にマスタ・クォーラム・ノード・プリエンプション要求を送信してもよい。
【0073】
確かに、ブレイン分割調停効率を改善するためにクォーラム記憶装置は応答メッセージを各クォーラム・ノードに送信し、その結果、各クォーラム・ノードはブレイン分割調停の進捗を時間通りに知ることができ、マスタ・クォーラム・ノードのプリエンプションが成功した後、無効なマスタ・クォーラム・ノード・プリエンプション要求の処理が減る。
【0074】
211:リフレッシュ・パケット検出期間の後、クラスタ内の各クォーラム・ノードは、マスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置に送信し続ける。当該クォーラム記憶装置は、マスタ・クォーラム・ノードの事前に記録された識別子を、最初に受信されたマスタ・クォーラム・ノード・プリエンプション要求に対応するクォーラム・ノードの識別子に変更し、ステップ213を実施する。
【0075】
特定の実装では、リフレッシュ・パケット検出期間が終了した後、クォーラム記憶装置はマスタ・クォーラム・ノードを先着順方式で決定する。即ち、クォーラム記憶装置は、最初に受信されたマスタ・クォーラム・ノード・プリエンプション要求に対応するクォーラム・ノードを新たなマスタ・クォーラム・ノードに設定し、その結果、マスタ・クォーラム・ノードを高速に決定でき、ブレイン分割後のマスタ・ノード・グループを高速に決定してクラスタの正常な動作を継続することができる。
【0076】
最初に受信されたマスタ・クォーラム・ノード・プリエンプション要求は、クォーラム記憶装置により受信されリフレッシュ・パケット検出期間の後にクォーラム記憶装置に到着した最初のマスタ・クォーラム・ノード・プリエンプション要求を指す。2つの実装可能性があってもよい。1つ目は、リフレッシュ・パケット検出期間が終了する前に各クォーラム・ノードがマスタ・クォーラム・ノード・プリエンプション要求を既に送信し、当該検出期間の後に当該マスタ・クォーラム・ノード・プリエンプション要求がクォーラム記憶装置に到着するというものである。2つ目は、各クォーラム・ノードが、リフレッシュ・パケット検出期間が終了した後にマスタ・クォーラム・ノード・プリエンプション要求を送信し、当該検出期間の後に当該マスタ・クォーラム・ノード・プリエンプション要求がクォーラム記憶装置に到着するというものである。本発明の当該実施形態は上述の2つの可能性の何れも限定しない。
【0077】
213:クォーラム記憶装置が、マスタ・クォーラム・ノード・プリエンプション成功応答を、記録された識別子に対応するクォーラム・ノードに送信する。当該マスタ・クォーラム・ノード・プリエンプション成功応答は、マスタ・クォーラム・ノードのプリエンプションが成功したことを当該クォーラム・ノードに通知するために使用される。
【0078】
特定の実装では、当該マスタ・クォーラム・ノード・プリエンプション成功応答を受信したクォーラム・ノードはマスタ・クォーラム・ノードとして選択され、当該マスタ・クォーラム・ノードが配置されるノード・グループは、クラスタの動作を継続するためにマスタ・ノード・グループとして使用される。
【0079】
215:クォーラム記憶装置が、マスタ・クォーラム・ノードを除く別のクォーラム・ノードに通知メッセージを送信する。
【0080】
特定の実装では、マスタ・クォーラム・ノードとは異なる接続タイプを有するクォーラム・ノードに対して、クォーラム記憶装置により送信された通知メッセージのタイプは異なる。マスタ・クォーラム・ノードが配置されたノード・グループと異なるノード・グループ内のクォーラム・ノード(即ち、マスタ・クォーラム・ノードに接続しないクォーラム・ノード)に対して、クォーラム記憶装置はアクセス拒否通知メッセージを送信してもよく、その結果、当該クォーラム・ノードが再開され、クラスタに再参加する動作を実施する。マスタ・クォーラム・ノードが配置されたノード・グループと同じであるノード・グループ内のクォーラム・ノード(即ち、マスタ・クォーラム・ノードに接続するクォーラム・ノード)に対して、クォーラム記憶装置はマスタ・クォーラム・ノード・プリエンプション失敗通知メッセージを送信してもよく、その結果、当該クォーラム・ノードが、マスタ・クォーラム・ノード・プリエンプション要求を送信するのを停止する。以下の2つの実装方式が存在する。
【0081】
方式1:別々の送信方式を使用する。
図2Bを参照すると、当該方式は以下のステップを含む。
【0082】
2151:クォーラム記憶装置が、記録されたマスタ・クォーラム・ノードにより送信された第1のパーミッション制御メッセージを受信する。当該第1のパーミッション制御メッセージは、クラスタに含まれる少なくとも2つのクォーラム・ノード内の決定されたマスタ・クォーラム・ノードに接続しない第1のカテゴリのクォーラム・ノードの識別子を含む。
【0083】
特定の実装では、マスタ・クォーラム・ノードは当該マスタ・クォーラム・ノードとクラスタ内の別のクォーラム・ノードとの間の接続をハート・ビート検出またはリース検出により検出し、当該マスタ・クォーラム・ノードに接続しないクォーラム・ノードに対する第1のパーミッション制御メッセージを生成し、当該第1のパーミッション制御メッセージをクォーラム記憶装置に送信する。
【0084】
第1のカテゴリのクォーラム・ノードは、マスタ・クォーラム・ノードと物理的または論理的に通信できないクォーラム・ノードを指す。即ち、当該第1のカテゴリのクォーラム・ノードはマスタ・クォーラム・ノードに接続しない。実際のシナリオでは、当該第1のカテゴリのクォーラム・ノードとマスタ・クォーラム・ノードは異なるノード・グループ内にある。
【0085】
2152:クォーラム記憶装置がアクセス拒否通知メッセージを第1のカテゴリのクォーラム・ノードに送信する。当該アクセス拒否通知メッセージは、ノード再開動作を実施するように第1のカテゴリのクォーラム・ノードに指示するために使用される。
【0086】
1例として、特定の実装では、当該アクセス拒否通知メッセージが(表1に示すように)以下の特定のパケット・フォーマットを使用してもよく、クォーラム記憶装置に対するノード識別子とアクセス・パーミッションを含む。例えば、ノードの識別子は当該ノードのIPアドレスであり、実際には別の表現方式を有してもよく、これは本発明の全ての実施形態では限定されない。クォーラム・ノードが当該アクセス拒否通知メッセージを受信した後、当該クォーラム・ノードがノード再開動作を実施する。
【0088】
第1のカテゴリのクォーラム・ノードがマスタ・クォーラム・ノードに接続しないクォーラム・ノードであるので、例えば、物理的に、当該2つのクォーラム・ノードが物理接続経路を有さないか、または、論理的に、当該2つのクォーラム・ノードの間のスイッチが故障している。実装において、第1のカテゴリのクォーラム・ノードとマスタ・クォーラム・ノードは異なるノード・グループ内にある。当該マスタ・クォーラム・ノードが配置されるノード・グループはブレイン分割調停におけるマスタ・ノード・グループとして使用されるので、第1のカテゴリのクォーラム・ノードは別のノード・グループに属し、当該ノード・グループ内の
クォーラム・ノードを再開する必要があり、クラスタに再参加する動作を実施する。
【0089】
2153:クォーラム記憶装置が、マスタ・クォーラム・ノードにより送信された第2のパーミッション制御メッセージを受信する。当該第2のパーミッション制御メッセージは、クラスタ内の少なくとも2つのクォーラム・ノードにおけるマスタ・クォーラム・ノードに接続する第2のカテゴリのクォーラム・ノードの識別子を含む。
【0090】
特定の実装では、マスタ・クォーラム・ノードは、当該マスタ・クォーラム・ノードと別のクォーラム・ノードの間の接続をハート・ビート検出またはリース検出により検出し、当該第2のパーミッション制御メッセージを生成し、当該第2のパーミッション制御メッセージをクォーラム記憶装置に送信する。
【0091】
第2のカテゴリのクォーラム・ノードは、マスタ・クォーラム・ノードと通信できるクォーラム・ノードを指す。即ち、第2のカテゴリのクォーラム・ノードはマスタ・クォーラム・ノードと接続する。実際のシナリオでは、第2のカテゴリのクォーラム・ノードとマスタ・クォーラム・ノードは同じノード・グループ内にある。
【0092】
2154:クォーラム記憶装置がマスタ・クォーラム・ノード・プリエンプション失敗通知メッセージを第2のカテゴリのクォーラム・ノードに送信する。当該マスタ・クォーラム・ノード・プリエンプション失敗通知メッセージは、マスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置に送信するのを停止するように第2のカテゴリのクォーラム・ノードに指示するために使用される。
【0093】
1例として、特定の実装では、マスタ・クォーラム・ノード・プリエンプション失敗通知メッセージは(表2に示すように)以下の特定のパケット・フォーマットを使用する。当該パケット・フォーマットは、ノード識別子、および、マスタ・クォーラム・ノード・プリエンプション要求を送信するパーミッションを含む。例えば、ノードの識別子は当該ノードのIPアドレスであり、実際には別の表現方式を有してもよく、本発明の諸実施形態では限定されない。クォーラム・ノードがマスタ・クォーラム・ノード・プリエンプション失敗通知メッセージを受信した後、当該クォーラム・ノードはマスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置に送信するのを停止する。
【0095】
方式1に対して、特定の実装方式において、ステップ2151および2152とステップ2153および2154との間の実行順序は限定されない。ステップ2151乃至ステップ2154がステップ2151からステップ2154への順序に従って実行されてもよく、または、ステップ2153と2154を最初に実行してもよく、ステップ2151と2152が次に実行され、これは本発明の当該実施形態では限定されない。
【0097】
方式1との違いは、マスタ・クォーラム・ノードがパーミッション制御メッセージを生成することにある。当該メッセージは、当該マスタ・クォーラム・ノードを除く別のクォーラム・ノードの識別子およびクォーラム記憶装置に対する当該クォーラム・ノードのアクセス・パーミッションを含む。当該アクセス・パーミッションは許可または拒否を含む。マスタ・クォーラム・ノードがパーミッション制御メッセージをクォーラム記憶装置に送信する。クォーラム記憶装置は、当該識別子および当該識別子に対応するアクセス・パーミッションに従って、第1のカテゴリのクォーラム・ノードに対するアクセス拒否通知メッセージと第2のカテゴリのクォーラム・ノードに対するマスタ・クォーラム・ノード・プリエンプション失敗通知メッセージとを別々に生成する。第1のカテゴリのクォーラム・ノードはマスタ・クォーラム・ノードに接続しないクォーラム・ノードであり、第2のカテゴリのクォーラム・ノードはマスタ・クォーラム・ノードに接続するクォーラム・ノードである。2つのクォーラム・ノードが互いと接続するかどうかがハート・ビート検出またはリース検出により判定される。当該アクセス拒否通知メッセージを受信した後、第1のカテゴリのクォーラム・ノードがノード再開とクラスタへの再参加の動作を実施してもよい。マスタ・クォーラム・ノード・プリエンプション失敗通知メッセージを受信した後、第2のカテゴリのクォーラム・ノードが、マスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置に送信するのを停止してもよい。
【0098】
以下のステップを特に含めてもよい。
図2Cを参照すると、当該方式は以下のステップを含む。
【0099】
2155:クォーラム記憶装置が、マスタ・クォーラム・ノードにより送信されたパーミッション制御メッセージを受信する。当該パーミッション制御メッセージは、クォーラム記憶装置に対する、クラスタ内の少なくとも2つのクォーラム・ノードにおいてマスタ・クォーラム・ノードを除く別のクォーラム・ノードの識別子と、当該クラスタ内の当該少なくとも2つのクォーラム・ノードにおいて当該マスタ・クォーラム・ノードを除く当該別のクォーラム・ノードのアクセス・パーミッションとを含み、当該アクセス・パーミッションは許可または拒否を含む。
【0100】
1例として、マスタ・クォーラム・ノードがパーミッション制御メッセージを生成する。当該パーミッション制御メッセージは表3に示すフォーマットを使用する。
【0102】
マスタ・クォーラム・ノードがパーミッション制御メッセージをクォーラム記憶装置に送信する。
【0103】
2156:クォーラム記憶装置が、当該パーミッション制御メッセージに従って、通知メッセージを、クラスタ内の少なくとも2つのクォーラム・ノードにおけるマスタ・クォーラム・ノードを除く別のクォーラム・ノードに送信する。
【0104】
21561:アクセス・パーミッションが拒否である第1のカテゴリのクォーラム・ノードに対して、クォーラム記憶装置がアクセス拒否通知メッセージを第1のカテゴリのクォーラム・ノードに送信する。当該アクセス拒否通知メッセージは、ノード再開動作を実施するように第1のカテゴリのクォーラム・ノードに指示するために使用される。
【0105】
特定の実装では、ステップ2052における表1に示すパケット・フォーマットを使用してもよい。その他は同様であり、詳細についてはここでは説明しない。
【0106】
第1のカテゴリのクォーラム・ノードは、マスタ・クォーラム・ノードと物理的または論理的に通信できないクォーラム・ノードを指す。即ち、第1のカテゴリのクォーラム・ノードはマスタ・クォーラム・ノードに接続しない。実際のシナリオでは、第1のカテゴリのクォーラム・ノードとマスタ・クォーラム・ノードは異なるノード・グループ内にある。
【0107】
21562:アクセス・パーミッションが許可である第2のカテゴリのクォーラム・ノードに対して、クォーラム記憶装置がマスタ・クォーラム・ノード・プリエンプション失敗通知メッセージを第2のカテゴリのクォーラム・ノードに送信する。当該マスタ・クォーラム・ノード・プリエンプション失敗通知メッセージは、マスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置に送信するのを停止するように第2のカテゴリのクォーラム・ノードに指示するために使用される。
【0108】
特定の実装では、ステップ2054における表2に示すパケット・フォーマットを使用してもよい。その他は同様であり、詳細についてはここでは説明しない。
【0109】
第2のカテゴリのクォーラム・ノードは、マスタ・クォーラム・ノードと通信できるクォーラム・ノードを指す。即ち、第2のカテゴリのクォーラム・ノードはマスタ・クォーラム・ノードと接続する。実際のシナリオでは、第2のカテゴリのクォーラム・ノードとマスタ・クォーラム・ノードは同じノード・グループ内にある。
【0110】
上述の2つの実装方式により、クラスタ内のマスタ・クォーラム・ノードを除く別のクォーラム・ノードが、クォーラム記憶装置により送信されたメッセージに従って対応する処理を実施することができる。特に、マスタ・クォーラム・ノードに接続しないクォーラム・ノード(ブレイン分割後の別のノード・グループ内のクォーラム・ノード)が再開動作を実施してもよい。マスタ・クォーラム・ノードに接続するクォーラム・ノード(ブレイン分割後のマスタ・ノード・グループ内のクォーラム・ノード)がマスタ・クォーラム・ノード・プリエンプション要求を送信するのを停止する。上述の処理により、マスタ・クォーラム・ノードが決定された後、他のクォーラム・ノードは、ブレイン分割後にマスタ・クォーラム・ノードのプリエンプションから高速に復元することができ、その結果、クラスタの通常のサービスの高速な復元を効果的に実装することができる。
【0111】
2157:アクセス拒否通知メッセージを第1のカテゴリのクォーラム・ノードに送信した後、クォーラム記憶装置はまた、ファイアウォール・ポリシを変更するために使用される通知メッセージを第1のカテゴリのクォーラム・ノードに送信する。当該通知メッセージは、第1のカテゴリのクォーラム・ノードに対応するファイアウォール内のファイアウォール・ポリシを変更して、第1のカテゴリのクォーラム・ノードによりクォーラム記憶装置に送信されたマスタ・クォーラム・ノード・プリエンプション要求をブロックするように第1のカテゴリのクォーラム・ノードに指示するために使用される。
【0112】
特定の実装では、マスタ・クォーラム・ノードと異なるノード・グループ内のクォーラム・ノード、即ち、第1のカテゴリのクォーラム・ノードに対して、クォーラム・ノードがマスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置に送信し続けるのを避けるために、クォーラム記憶装置が、ファイアウォール・ポリシを変更するために使用される通知メッセージをクォーラム・ノードに送信する。当該通知メッセージを受信した後、当該クォーラム・ノードは、当該クォーラム・ノードに対応するファイアウォール内のファイアウォール・ポリシを変更して、当該クォーラム・ノードによりクォーラム記憶装置に送信されたマスタ・クォーラム・ノード・プリエンプション要求をブロックしてもよい。
【0113】
第1のカテゴリのクォーラム・ノードを再開する前に、第1のカテゴリのクォーラム・ノードはさらにマスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置に送信することに留意すべきである。当該ステップの設定は、当該クォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求を効果的にブロックして、クォーラム記憶装置が無効なマスタ・クォーラム・ノード・プリエンプション要求に関する処理能力を無駄にするのを回避することができる。
【0114】
上述の解決策は、ブレイン分割がクラスタ内で行われた後、調停を通じてマスタ・ノード・グループを決定できないという先行技術の問題を効果的に解決することができる。
【0115】
クラスタ・ブレイン分割が終了した後の調停処理の後、クラスタ内のクォーラム・ノードを除く別のノードが、ハート・ビート検出またはリース検出により、当該ノードとマスタ・クォーラム・ノードの間の接続を決定してもよい。当該ノードがマスタ・クォーラム・ノードと接続すると判定されたとき、これは当該ノードとマスタ・クォーラム・ノードが同じノード・グループ内にあり、当該ノードが動作し続けることを示す。当該ノードがマスタ・クォーラム・ノードに接続しないと判定されたとき、これは当該ノードとマスタ・クォーラム・ノードは異なるノード・グループ内にあることを示し、当該ノードは再開をトリガし、マスタ・クォーラム・ノードが配置されたノード・グループに再参加するプロセスを実施する。
【0116】
対応して、本発明はさらにクラスタ・ブレイン分割後の調停方法の第2の実施形態を提供する。マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードに対して、処理プロセスは、以下のステップを含む。
【0117】
301:クォーラム・ノードが、クォーラム記憶装置により送信されたマスタ・クォーラム・ノード・プリエンプション成功応答メッセージを受信する。当該マスタ・クォーラム・ノード・プリエンプション成功応答メッセージは、マスタ・クォーラム・ノードのプリエンプションが成功したことをクォーラム・ノードに通知するために使用される。
【0118】
303:マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードが、クラスタ内の少なくとも2つのクォーラム・ノードにおけるクォーラム・ノードを除く別のクォーラム・ノードのアクセス・パーミッションを決定する。当該アクセス・パーミッションは許可または拒否を含む。
【0119】
305:マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードが、パーミッション制御メッセージをクォーラム記憶装置に送信する。当該パーミッション制御メッセージは、クラスタ内の少なくとも2つのクォーラム・ノードにおけるクォーラム・ノードを除く別のクォーラム・ノードの識別子と、クォーラム記憶装置に対する当該識別子に対応するクォーラム・ノードのアクセス・パーミッションとを含む。
【0120】
上述の実施形態の処理プロセスについては、上述の実施形態におけるステップ205の説明を参照されたい。詳細についてはここでは説明しない。
【0121】
本発明の装置の実施形態
図4を参照すると、本発明はさらに、クラスタとクォーラム記憶装置400により形成されたシステムに適用される、クラスタ内の調停処理に使用されるクォーラム記憶装置400を提供する。当該クラスタは、少なくとも2つのクォーラム・ノードを含み、クォーラム記憶装置400は、クラスタ内のマスタ・クォーラム・ノードの識別子を事前に記録し、マスタ・クォーラム・ノードは当該少なくとも2つのクォーラム・ノードの1つである。クォーラム記憶装置400は、検出期間内に、クラスタ内のクォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求を受信するように構成された受信ユニット401であって、各マスタ・クォーラム・ノード・プリエンプション要求はクォーラム・ノードの識別子を含む、受信ユニット401と、当該マスタ・クォーラム・ノードの識別子に従って、受信ユニット401により受信されたマスタ・クォーラム・ノード・プリエンプション要求が当該マスタ・クォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求を含むかどうかを判定するように構成される判定ユニット402と、当該受信されたマスタ・クォーラム・ノード・プリエンプション要求が当該マスタ・クォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求を含むとき、当該ノードの記録された識別子を維持するか、または、当該受信されたマスタ・クォーラム・ノード・プリエンプション要求が当該マスタ・クォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求を含まないとき、第1のリフレッシュ・パケット検出期間の後、当該記録された識別子を、クォーラム記憶装置に最初に到着したマスタ・クォーラム・ノード・プリエンプション要求に対応するクォーラム・ノードの識別子に変更するように構成された実行ユニット403と、マスタ・クォーラム・ノード・プリエンプション成功応答メッセージを当該記録された識別子に対応するクォーラム・ノードに送信するように構成された送信ユニット404であって、当該応答メッセージは、マスタ・クォーラム・ノードのプリエンプションに成功したことを、当該記録された識別子に対応するクォーラム・ノードに通知するために使用される、送信ユニット404とを備える。
【0122】
さらに、クォーラム記憶装置400において、実行ユニット403はさらに、受信されたマスタ・クォーラム・ノード・プリエンプション要求がマスタ・クォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求を含まないとき、応答メッセージを生成するように構成される。当該応答メッセージは、当該マスタ・クォーラム・ノード・プリエンプション要求を送信し続け、送信ユニット404をトリガするように、当該マスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードに指示するために使用される。送信ユニット404はさらに、当該応答メッセージを、当該マスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードに送信するように構成される。
【0123】
さらに、クォーラム記憶装置400において、受信ユニット401はさらに、送信ユニット404が、マスタ・クォーラム・ノード・プリエンプション成功応答メッセージを当該記録された識別子に対応するクォーラム・ノードに送信した後、当該記録された識別子に対応するクォーラム・ノードにより送信された第1のパーミッション制御メッセージを受信するように構成される。当該第1のパーミッション制御メッセージは、クラスタに含まれる少なくとも2つのクォーラム・ノード内の当該記録された識別子に対応するクォーラム・ノードに接続しない第1のカテゴリのクォーラム・ノードの識別子を含む。実行ユニット403はさらに、当該第1のパーミッション制御メッセージに従ってアクセス拒否通知メッセージを生成し、送信ユニット404をトリガするように構成される。当該アクセス拒否通知メッセージは、ノード再開動作を実施するように第1のカテゴリのクォーラム・ノードに指示するために使用される。送信ユニット404はさらに、当該アクセス拒否通知メッセージを第1のカテゴリのクォーラム・ノードに送信するように構成される。
【0124】
さらに、クォーラム記憶装置400において、受信ユニット401はさらに、送信ユニット404が、マスタ・クォーラム・ノード・プリエンプション成功応答メッセージを当該記録された識別子に対応するクォーラム・ノードに送信した後、当該記録された識別子に対応するクォーラム・ノードにより送信された第2のパーミッション制御メッセージを受信するように構成される。当該第2のパーミッション制御メッセージは、クラスタ内の少なくとも2つのクォーラム・ノードにおける当該記録された識別子に対応するクォーラム・ノードに接続する第2のカテゴリのクォーラム・ノードの識別子を含む。実行ユニット403はさらに、第2のパーミッション制御メッセージに従ってマスタ・クォーラム・ノード・プリエンプション失敗通知メッセージを生成し、送信ユニット404をトリガするように構成される。当該マスタ・クォーラム・ノード・プリエンプション失敗通知メッセージは、マスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置400に送信するのを停止するように第2のカテゴリのクォーラム・ノードに指示するために使用される。送信ユニット404はさらに、当該マスタ・クォーラム・ノード・プリエンプション失敗通知メッセージを第2のカテゴリのクォーラム・ノードに送信するように構成される。
【0125】
さらに、クォーラム記憶装置400において、受信ユニット401はさらに、送信ユニット404が、マスタ・クォーラム・ノード・プリエンプション成功応答メッセージを当該記録された識別子に対応するクォーラム・ノードに送信した後、当該記録された識別子に対応するクォーラム・ノードにより送信されたパーミッション制御メッセージを受信するように構成される。当該パーミッション制御メッセージは、クォーラム記憶装置400に対する、クラスタ内の少なくとも2つのクォーラム・ノードにおける当該記録された識別子に対応するクォーラム・ノードを除く別のクォーラム・ノードの識別子と、当該少なくとも2つのクォーラム・ノード内の当該記録された識別子に対応するクォーラム・ノードを除く別のクォーラム・ノードのアクセス・パーミッションとを含み、当該アクセス・パーミッションは許可または拒否を含む。実行ユニット403はさらに、当該パーミッション制御メッセージに従って通知メッセージを生成し、送信ユニット404をトリガするように構成される。送信ユニット404はさらに、当該少なくとも2つのクォーラム・ノード内の当該記録された識別子に対応するクォーラム・ノードを除く別のクォーラム・ノードに当該通知メッセージを送信するように構成される。
【0126】
さらに、クォーラム記憶装置400において、実行ユニット403は特に、アクセス・パーミッションが拒否である第1のカテゴリのクォーラム・ノードに対してアクセス拒否通知メッセージを生成するように構成される。当該アクセス拒否通知メッセージは、ノード再開動作を実施するように第1のカテゴリのクォーラム・ノードに指示するために使用され、送信ユニット404は特に、当該アクセス拒否通知メッセージを第1のカテゴリのクォーラム・ノードに送信するように構成される。
【0127】
さらに、クォーラム記憶装置400において、実行ユニット403は特に、アクセス・パーミッションが許可である第2のカテゴリのクォーラム・ノードに対してマスタ・クォーラム・ノード・プリエンプション失敗通知メッセージを生成するように構成される。当該マスタ・クォーラム・ノード・プリエンプション失敗通知メッセージは、マスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置400に送信するのを停止するように第2のカテゴリのクォーラム・ノードに指示するために使用され、送信ユニット404は特に、当該マスタ・クォーラム・ノード・プリエンプション失敗通知メッセージを第2のカテゴリのクォーラム・ノードに送信するように構成される。
【0128】
さらに、クォーラム記憶装置400において、実行ユニット403はさらに、送信ユニット404がアクセス拒否通知メッセージを第1のカテゴリのクォーラム・ノードに送信した後、第1のカテゴリのクォーラム・ノードに対して、ファイアウォール・ポリシを変更するために使用される通知メッセージを生成するように構成される。ファイアウォール・ポリシを変更するために使用される当該通知メッセージは、当該第1のカテゴリのクォーラム・ノードのファイアウォールに対応するファイアウォール・ポリシを変更して、当該第1のカテゴリのクォーラム・ノードによりクォーラム記憶装置400に送信されたマスタ・クォーラム・ノード・プリエンプション要求をブロックするように当該第1のカテゴリのクォーラム・ノードに指示するために使用される。送信ユニット404はさらに、ファイアウォール・ポリシを変更するために使用される当該通知メッセージを当該第1のカテゴリのクォーラム・ノードに送信するように構成される。
【0129】
図5を参照すると、本発明はさらにクォーラム記憶装置の第2の実施形態を提供する。クォーラム記憶装置500は、プロセッサ501、メモリ502、通信インタフェース503、およびバス504を備え、プロセッサ501、メモリ502、および通信インタフェース503はバス504を用いて互いと通信し、通信インタフェース503はクラスタ内の少なくとも2つのクォーラム・ノードと通信するように構成され、メモリ502はプログラムを格納するように構成され、クォーラム記憶装置500が実行したとき、プロセッサ501は、メモリ502に格納されたプログラムを実行して、ブレイン分割調停方法の第1の実施形態の方法のプロセスを実行するように構成される。
【0130】
図6を参照すると、本発明はさらにクォーラム・ノードの第1の実施形態を提供する。クォーラム・ノード600は、クォーラム記憶装置により送信されたマスタ・クォーラム・ノード・プリエンプション成功応答メッセージを受信するように構成された受信ユニット601であって、当該応答メッセージは、マスタ・クォーラム・ノードのプリエンプションが成功したことを当該ノードに通知するために使用される、受信ユニット601と、クラスタ内の少なくとも2つのクォーラム・ノード内のクォーラム・ノード600を除く別のクォーラム・ノードのアクセス・パーミッションを決定するように構成された判定ユニット602であって、当該アクセス・パーミッションは許可または拒否を含む、判定ユニット602と、パーミッション制御メッセージをクォーラム記憶装置に送信するように構成された送信ユニット603であって、当該パーミッション制御メッセージは、クラスタ内の当該少なくとも2つのクォーラム・ノード内のクォーラム・ノード600を除く当該別のクォーラム・ノードの識別子とクォーラム記憶装置に対する当該識別子に対応するクォーラム・ノードのアクセス・パーミッションとを含む、送信ユニット603とを備える。
【0131】
図7を参照すると、本発明はさらにクォーラム・ノードの第2の実施形態を提供する。クォーラム・ノード700は、プロセッサ701、メモリ702、通信インタフェース703、およびバス704を備える。プロセッサ701、メモリ702、および通信インタフェース703はバス704を用いて互いと通信する。通信インタフェース703はクラスタ内の別のクォーラム・ノードおよびクォーラム記憶装置と通信するように構成される。メモリ702はプログラムを格納するように構成され、クォーラム・ノード700が実行したとき、プロセッサ701は、メモリ702に格納されたプログラムを実行して、ブレイン分割調停方法の第2の実施形態の方法のプロセスを実行するように構成される。
【0132】
図8を参照すると、本発明はさらにクラスタ・ブレイン分割後の調停処理システムを提供する。システム800は、第1の実施形態に示したクラスタ810およびクォーラム記憶装置820または当該調停装置の第2の実施形態を備える。クラスタ810は少なくとも2つのクォーラム・ノード811を備え、当該少なくとも2つのクォーラム・ノードはマスタ・クォーラム・ノード8111を備え、クォーラム記憶装置820が、クラスタ内のマスタ・クォーラム・ノード8111の識別子を事前に記録する。
【0133】
本発明の全ての実施形態を、1つのクォーラム記憶装置が存在する例を用いて説明する。N個の(N≧3およびNは奇数である)クォーラム記憶装置があるとき、クラスタ内の少なくとも2つのクォーラム・ノードは、マスタ・クォーラム・ノード・プリエンプション要求を当該N個のクォーラム記憶装置内の各クォーラム記憶装置に送信する。Round(N/2)+1個のクォーラム記憶装置により送信されたマスタ・クォーラム・ノード・プリエンプション成功通知メッセージを取得できるクォーラム・ノードはマスタ・クォーラム・ノードと呼ばれる。当該マスタ・クォーラム・ノードが配置されるノード・グループはマスタ・ノード・グループである。他のクォーラム・ノード内のマスタ・クォーラム・ノードと通信できるクォーラム・ノードは、マスタ・クォーラム・ノード・プリエンプション失敗通知メッセージを受信し、マスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置に送信するのを停止してもよい。マスタ・クォーラム・ノードと通信できないクォーラム・ノードがアクセス拒否通知メッセージを受信してもよい。当該アクセス拒否通知メッセージは、ノード再開動作を実施するようにクォーラム・ノードに指示するために使用される。具体的な処理プロセスは1つのクォーラム記憶装置があるときの処理プロセスと同様であるので、詳細は本発明の当該実施形態では説明しない。
【0134】
本発明の第3の方法の実施形態
図9A乃至
図9Cは、クラスタ内でブレイン分割が行われた後にクォーラム記憶装置がブレイン分割調停を実装する第3の方法の実施形態を示す。当該方法の実施形態は、クラスタおよびクォーラム記憶装置により形成された
図1に示すシステムに適用される。クラスタは少なくとも2つのクォーラム・ノードを含む。
図9Aを参照すると、当該方法は以下を含む。
【0135】
901:クラスタ内の少なくとも2つのクォーラム・ノードの
1つを初期マスタ・クォーラム・ノードとして事前に記録し、リフレッシュ・パケット検出期間を開始する。当該リフレッシュ・パケット検出期間は反復実行される期間である。
【0136】
特定の実装では、クラスタが確立された後、クォーラム記憶装置は、記憶空間をクォーラム記憶装置またはサードパーティの記憶装置に設定して、初期マスタ・クォーラム・ノードの識別子および初期マスタ・クォーラム・ノードのステータスを記録してもよい。クラスタ内の少なくとも2つのクォーラム・ノードの
1つを、本方式で初期マスタ・クォーラム・ノードに事前に構成してもよい。初期状態において、マスタ・クォーラム・ノードの識別子はヌル(NULL)として記録され、マスタ・クォーラム・ノードのステータスはヌル(NULL)または故障として記録される。クラスタが正常に動作を開始する前に、初期マスタ・クォーラム・ノードを、初期設定により管理者またはクォーラム記憶装置により指定してもよく、クラスタ内の少なくとも2つのクォーラム・ノードの
1つを初期マスタ・クォーラム・ノードとして選択してもよい。クォーラム記憶装置がリフレッシュ・パケット検出期間を開始する。当該リフレッシュ・パケット検出期間は反復実行される期間である。クラスタが正常に動作を開始した後、初期設定されたマスタ・クォーラム・ノードが定期的にリフレッシュ・パケットをクォーラム記憶装置に送信してもよい。当該リフレッシュ・パケットはマスタ・クォーラム・ノードの識別子を含み、当該識別子が特にクラスタ内のマスタ・クォーラム・ノードのIPアドレス、数等であってもよい。クォーラム記憶装置はまた、リフレッシュ・パケット検出期間を設定して、マスタ・クォーラム・ノードがリフレッシュ・パケットを送信するかどうかを検出してもよい。リフレッシュ・パケット検出期間において、クォーラム記憶装置は様々なケースに従う以下の処理を実施する。
【0137】
A:リフレッシュ・パケットがリフレッシュ・パケット検出期間内に受信されなかった場合、ノードの記録されたステータスは故障に変更される。リフレッシュ・パケットがリフレッシュ・パケット検出期間内に受信されなかった場合、クォーラム記憶装置はマスタ・クォーラム・ノードが故障であると考えてもよく、レコード内のマスタ・クォーラム・ノードのステータスを故障に変更する。
【0138】
B:マスタ・クォーラム・ノードにより送信されたリフレッシュ・パケットが最初に受信されると、クォーラム記憶装置が、マスタ・クォーラム・ノードの識別子を記録し、レコード内のマスタ・クォーラム・ノードのステータスを「正常」に変更してもよい。
【0139】
C:マスタ・クォーラム・ノードにより送信されたリフレッシュ・パケットを受信するのが初めてではない場合、以下の2つのケースが含まれる。
【0140】
C1:リフレッシュ・パケットで運搬される識別子がノードの記録された識別子と同じであり、マスタ・クォーラム・ノードの記録されたステータスが正常であることが検出されたとき、これは現在のクラスタ内のマスタ・クォーラム・ノードが正常であることを示し、クォーラム記憶装置は当該記録された識別子に動作を実施しない。
【0141】
C2:リフレッシュ・パケットで運搬される識別子がノードの記録された識別子と同じであるが、マスタ・クォーラム・ノードの記録されたステータスがヌルであるかまたは故障であることが検出されたとき、クォーラム記憶装置はレコード内のノードのステータスを正常に変更する。この場合、2つのアプリケーション・シナリオがあってもよい。1つのシナリオはクラスタ再開である。この場合、全てのノードが再開され、元のマスタ・クォーラム・ノードは、クラスタ再開の後、リフレッシュ・パケット検出期間内にリフレッシュ・パケットを送信することができず、マスタ・クォーラム・ノードの記録されたステータスは故障に変更される。他のシナリオは、元のクォーラム・ノードにより送信されたリフレッシュ・パケットが失われ、クォーラム記憶装置が検出期間内にリフレッシュ・パケットを受信できない場合、クォーラム記憶装置がマスタ・クォーラム・ノードの記録されたステータスを故障に変更するというものである。
【0142】
903:ブレイン分割が行われたことが検出された後、各ノード・グループ内の各クォーラム・ノードは、マスタ・クォーラム・ノード・プリエンプション要求を生成し、当該マスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置に送信する。
【0143】
特定の実装では、1つのマスタ・クォーラム・ノードのプリエンプション機構が各クォーラム・ノードに対して設定されてもよい。即ち、ブレイン分割が行われたとクォーラム・ノードが検出した後、当該クォーラム・ノードがマスタ・クォーラム・ノード・プリエンプション要求を生成し、当該マスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置に送信してもよい。当該マスタ・クォーラム・ノード・プリエンプション要求は、当該クォーラム・ノードの識別子を含み、当該クォーラム・ノードの当該識別子が複数の実装方式、例えば、クォーラム・ノードのIPアドレス(例えば、10.11.201.12)またはクラスタ内のクォーラム・ノードの一意な識別子(例えば、数字0010)、または別の実装方式を有してもよく、これは本発明の当該実施形態では限定されない。
【0144】
ブレイン分割が行われたことが検出された後、マスタ・クォーラム・ノード・プリエンプション要求を生成し送信したクォーラム・ノードは現在生き残っているクォーラム・ノードであり、これらの故障(例えば、シャットダウン)したクォーラム・ノードはマスタ・クォーラム・ノード・プリエンプション要求を生成も送信もできないことに留意すべきである。特定の実装では、マスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードが全てのクォーラム・ノードであってもよく、または、クラスタ内の幾つかのクォーラム・ノードであってもよい。
【0145】
特定の実装では、各クォーラム・ノードが、リース検出またはハート・ビート検出により、ブレイン分割が行われたことを検出してもよい。リース検出およびハート・ビート検出を使用してノード間の接続を検出してもよいことに留意すべきである。リース(Lease)ベースの検出方法およびハート・ビート(Heart beat)ベースの検出方法は本明細書の上述の実施形態で説明されており、詳細についてはここでは説明しない。
【0146】
905:クォーラム記憶装置が第1のリフレッシュ・パケット検出期間内に受信されたマスタ・クォーラム・ノード・プリエンプション要求が初期マスタ・クォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求を含むかどうかを判定する。第1のリフレッシュ・パケット検出期間はクラスタ・ブレイン分割が行われた時点に対応するリフレッシュ・パケット検出期間であり、そうである場合はステップ907を実施し、または、そうでない場合はステップ909を実施する。
【0147】
特定の実装では、クォーラム記憶装置は、初期マスタ・クォーラム・ノードの事前に記録された識別子を受信されたマスタ・クォーラム・ノード・プリエンプション要求内の識別子と比較して、当該受信されたマスタ・クォーラム・ノード・プリエンプション要求が初期マスタ・クォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求を含むどうかを判定する。
【0148】
特定の実装プロセスでは、第1のリフレッシュ・パケット検出期間内に受信されたマスタ・クォーラム・ノード・プリエンプション要求が初期マスタ・クォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求を含むかどうかをクォーラム記憶装置が判定する2つの実装方式があってもよい。
【0149】
方式1:クォーラム記憶装置が第1のリフレッシュ・パケット検出期間内に受信された全てのマスタ・クォーラム・ノード・プリエンプション要求をキャッシュし、クォーラム記憶装置が、全てのキャッシュされたマスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードが初期マスタ・クォーラム・ノードを含むかどうかを判定する。
【0150】
クォーラム記憶装置は記憶装置を有し、マスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードの識別子をキャッシュするために、クォーラム記憶装置は初期マスタ・クォーラム・ノードの識別子を当該マスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードの識別子と比較して、初期マスタ・クォーラム・ノードが含まれるかどうかを判定することに留意すべきである。
【0151】
方式2:クォーラム記憶装置は逐次的に、第1のリフレッシュ・パケット検出期間内に受信された各マスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードが初期マスタ・クォーラム・ノードであるかどうかを判定する。
【0152】
特定の実装では、クォーラム記憶装置により受信されたマスタ・クォーラム・ノード・プリエンプション要求が、クラスタ内の全てのクォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求であってもよく、または、クラスタ内の幾つかのクォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求であってもよい。
【0153】
マスタ・クォーラム・ノード・プリエンプション要求が初期マスタ・クォーラム・ノードのマスタ・クォーラム・ノード・プリエンプション要求を含むかどうかが第1のリフレッシュ・パケット検出期間内に判定される。当該第1のリフレッシュ・パケット検出期間は、ブレイン分割が行われた時点のリフレッシュ・パケット検出期間であり、または、当該第1のリフレッシュ
・パケット検出期間またはブレイン分割が行われた時点のリフレッシュ・パケット検出期間の後の第2のリフレッシュ・パケット検出期間であってもよい。当該マスタ・クォーラム・ノード・プリエンプション要求は、当該マスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードの識別子を運搬する。クォーラム記憶装置は、初期マスタ・クォーラム・ノードの識別子を各マスタ・クォーラム・ノード・プリエンプション要求で運搬される識別子と比較する。当該識別子が同じである場合、これは当該マスタ・クォーラム・ノード・プリエンプション要求が、初期マスタ・クォーラム・ノードのマスタ・クォーラム・ノード・プリエンプション要求を含むことを示し、この場合、クォーラム記憶装置はステップ907を実施する。比較を通じて各マスタ・クォーラム・ノード・プリエンプション要求で運搬される識別子が初期マスタ・クォーラム・ノードの識別子と異なることが分かった場合、これはマスタ・クォーラム・ノード・プリエンプション要求が初期マスタ・クォーラム・ノードのマスタ・クォーラム・ノード・プリエンプション要求を含まないことを示し、この場合、クォーラム記憶装置はステップ909を実施する。
【0154】
907:受信されたマスタ・クォーラム・ノード・プリエンプション要求が初期マスタ・クォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求を含むとき、クォーラム記憶装置は、初期マスタ・クォーラム・ノードはマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードであると判定し、ステップ913を実施する。
【0155】
特定の実装では、初期マスタ・クォーラム・ノードがマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードである、即ち、初期マスタ・クォーラム・ノードの事前に記録された識別子が不変のままであると判定される。
【0156】
第1のリフレッシュ・パケット検出期間内に、初期マスタ・クォーラム・ノードが優先する処理ポリシが、ステップ907で使用される。即ち、クォーラム記憶装置の第1のリフレッシュ・パケット検出期間内に、初期マスタ・クォーラム・ノードのマスタ・クォーラム・ノード・プリエンプション要求がクォーラム記憶装置に到着した場合、初期マスタ・クォーラム・ノードはマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノード、即ち、新たなマスタ・クォーラム・ノードとして優先的に使用される。実際の適用では、マスタ・クォーラム・ノードは一般にクラスタ内の管理ノードとして使用されクラスタ管理機能を引き受けるので、当該管理ノードが頻繁に切り替えられる場合、サービス割込みが生じるかもしれず、当該管理ノードの切換えがサービス・データおよび/またはステータス・データのバックアップとコピーを生じさせるかもしれない。このように、大きな影響がクラスタのリソース処理に及ぶかもしれない。したがって、初期マスタ・クォーラム・ノードが優先的に新たなマスタ・クォーラム・ノードとして使用されるとき、上述の問題を効果的に防止することができる。
【0157】
909:受信されたマスタ・クォーラム・ノード・プリエンプション要求が初期マスタ・クォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求を含まないとき、応答するために、クォーラム記憶装置が、マスタ・クォーラム・ノードのプリエンプション失敗応答メッセージをマスタ・クォーラム・ノード・プリエンプション要求を送信した各クォーラム・ノードに送信して、マスタ・クォーラム・ノード・プリエンプション要求を送信し続けるようにマスタ・クォーラム・ノード・プリエンプション要求を送信した各クォーラム・ノードに指示し、ステップ911を実施する。
【0158】
特定の実装では、ステップ905に関して、初期マスタ・クォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求が第1のリフレッシュ・パケット検出期間内に受信されたかどうかをクォーラム記憶装置が判定する2つの実装方式が存在する。ここで、クォーラム記憶装置が、マスタ・クォーラム・ノードのプリエンプション失敗応答メッセージをマスタ・クォーラム・ノード・プリエンプション要求を送信した各クォーラム・ノードに送信する2つの方式も存在する。
【0159】
方式1:クォーラム記憶装置が、マスタ・クォーラム・ノードのプリエンプション失敗応答メッセージを、全てのキャッシュされたマスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードの各々に送信する。その結果、当該全てのキャッシュされたマスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードは新たなマスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置に再度送信する。
【0160】
方式2:クォーラム記憶装置が、マスタ・クォーラム・ノードのプリエンプション失敗応答メッセージを第1のリフレッシュ・パケット検出期間内に受信された各マスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードに送信し、その結果、第1のリフレッシュ・パケット検出期間内に受信された各マスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードは、新たなマスタ・クォーラム・ノード・プリエンプション要求を当該クォーラム・ノードに再度送信する。
【0161】
当該ステップは必須のステップでないことに留意すべきである。特定の実装では、クォーラム記憶装置が応答メッセージを送信しなくてもよいが、マスタ・クォーラム・ノード・プリエンプション要求定期送信機構を当該クォーラム・ノードに事前に設定する。当該クォーラム・ノードがクォーラム記憶装置により送信された通知メッセージを受信する前に、各クォーラム・ノードが定期的に当該マスタ・クォーラム・ノード・プリエンプション要求を送信してもよい。
【0162】
確かに、ブレイン分割調停効率を改善するためにクォーラム記憶装置は応答メッセージを各クォーラム・ノードに送信し、その結果、各クォーラム・ノードはブレイン分割調停の進捗を時間通りに知ることができ、マスタ・クォーラム・ノードのプリエンプションが成功した後、無効なマスタ・クォーラム・ノード・プリエンプション要求に対する処理が減る。
【0163】
911:第1のリフレッシュ・パケット検出期間に続く第2のリフレッシュ・パケット検出期間内に、クラスタ内の各クォーラム・ノードは、マスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置に送信し続け、クォーラム記憶装置は、第2のリフレッシュ・パケット検出期間内に受信された対応する第1のマスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードはマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードであると判定し、ステップ913を実施する。
【0164】
特定の実装では、クォーラム記憶装置が、初期マスタ・クォーラム・ノードの識別子を、第2のリフレッシュ・パケット検出期間内に受信された第1のマスタ・クォーラム・ノード・プリエンプション要求に対応するクォーラム・ノードの識別子に変更する。
【0165】
リフレッシュ・パケット検出期間が終了した後、クォーラム記憶装置はマスタ・クォーラム・ノードを先着順方式で決定する。即ち、クォーラム記憶装置は、第2のリフレッシュ・パケット検出期間内に受信された第1のマスタ・クォーラム・ノード・プリエンプション要求に対応するクォーラム・ノードを新たなマスタ・クォーラム・ノードとして設定し、その結果、マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードを高速に決定でき、ブレイン分割後のマスタ・ノード・グループを高速に決定してクラスタの正常な動作を継続することができる。
【0166】
第2のリフレッシュ・パケット検出期間内に受信された第1のマスタ・クォーラム・ノード・プリエンプション要求は、クォーラム記憶装置により受信され、第1のリフレッシュ・パケット検出期間に続く第2のリフレッシュ・パケット検出期間内にクォーラム記憶装置に到着した第1のマスタ・クォーラム・ノード・プリエンプション要求を指す。2つの実装可能性があってもよい。1つ目は、リフレッシュ・パケット検出期間が終了する前に各クォーラム・ノードがマスタ・クォーラム・ノード・プリエンプション要求を既に送信し、当該検出期間の後にマスタ・クォーラム・ノード・プリエンプション要求がクォーラム記憶装置に到着するというものである。2つ目は、各クォーラム・ノードが、リフレッシュ・パケット検出期間が終了した後、マスタ・クォーラム・ノード・プリエンプション要求を送信し、当該検出期間の後、マスタ・クォーラム・ノード・プリエンプション要求がクォーラム記憶装置に到着するというものである。本発明の当該実施形態は上述の2つの可能性の何れにも限定されない。
【0167】
913:クォーラム記憶装置がマスタ・クォーラム・ノード・プリエンプション成功応答メッセージをマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードに送信する。
【0168】
特定の実装では、マスタ・クォーラム・ノード・プリエンプション成功応答を受信したクォーラム・ノードがマスタ・クォーラム・ノードとして選択され、マスタ・クォーラム・ノードが配置されるノード・グループは、クラスタの動作を継続するためのマスタ・ノード・グループとして使用される。
【0169】
915:クォーラム記憶装置が、マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードを除く別のクォーラム・ノードに通知メッセージを送信する。
【0170】
特定の実装では、マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードと異なる接続タイプを有するクォーラム・ノードに対して、クォーラム記憶装置により送信された通知メッセージのタイプは異なる。マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードが配置されるノード・グループと異なるノード・グループ内のクォーラム・ノード(即ち、マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードに接続しないクォーラム・ノード)に対して、クォーラム記憶装置はアクセス拒否通知メッセージを送信してもよく、その結果、当該クォーラム・ノードが再開され、クラスタに再参加する動作を実施する。マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードが配置されるノード・グループと同じであるノード・グループ内のクォーラム・ノード(即ち、マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードに接続するクォーラム・ノード)に対して、クォーラム記憶装置はマスタ・クォーラム・ノード・プリエンプション失敗通知メッセージを送信してもよく、その結果、当該クォーラム・ノードが、マスタ・クォーラム・ノード・プリエンプション要求を送信するのを停止する。以下の2つの実装方式が存在する。
【0171】
方式1:別々の送信方式を使用する。
図9Bを参照すると、当該方式は以下のステップを含む。
【0172】
9151:クォーラム記憶装置が、マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードにより送信された第1のパーミッション制御メッセージを受信する。当該第1のパーミッション制御メッセージは、クラスタ内の少なくとも2つのクォーラム・ノード内のマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードに接続しない第1のカテゴリのクォーラム・ノードの識別子を含む。
【0173】
特定の実装では、マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードが、ハート・ビート検出またはリース検出により、クラスタ内のクォーラム・ノードと別のクォーラム・ノードの間の接続を検出してもよく、当該マスタ・クォーラム・ノードに接続しないクォーラム・ノードに対する第1のパーミッション制御メッセージを生成し、第1のパーミッション制御メッセージをクォーラム記憶装置に送信する。
【0174】
第1のカテゴリのクォーラム・ノードはマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードと物理的または論理的に通信できないクォーラム・ノードを指す。即ち、第1のカテゴリのクォーラム・ノードはマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードに接続しない。実際のシナリオでは、第1のカテゴリのクォーラム・ノードとマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードとは異なるノード・グループ内にある。
【0175】
9152:クォーラム記憶装置がアクセス拒否通知メッセージを第1のカテゴリのクォーラム・ノードに送信する。当該アクセス拒否通知メッセージは、ノード再開動作を実施するように第1のカテゴリのクォーラム・ノードに指示するために使用される。
【0176】
1例として、特定の実装では、当該アクセス拒否通知メッセージが(表1に示すように)以下の特定のパケット・フォーマットを使用してもよく、クォーラム記憶装置に対するノード識別子およびアクセス・パーミッションを含む。例えば、ノードの識別子は当該ノードのIPアドレスであり、実際には別の表現方式を有してもよく、これは本発明の全ての実施形態では限定されない。クォーラム・ノードがアクセス拒否通知メッセージを受信した後、当該クォーラム・ノードがノード再開動作を実施する。
【0178】
第1のカテゴリのクォーラム・ノードはマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードに接続しないクォーラム・ノードであるので、例えば、物理的に、2つのクォーラム・ノードが物理接続経路を有さないか、または、論理的に、2つのクォーラム・ノードの間のスイッチが故障している。実装において、第1のカテゴリのクォーラム・ノードとマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードとは異なるノード・グループ内にある。マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードが配置されるノード・グループがブレイン分割調停におけるマスタ・ノード・グループとして使用されるので、第1のカテゴリのクォーラム・ノードは別のノード・グループに属し、当該ノード・グループ内の
クォーラム・ノードを再開する必要があり、クラスタに再参加する動作を実施する。
【0179】
9153:クォーラム記憶装置がマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードにより送信された第2のパーミッション制御メッセージを受信する。当該第2のパーミッション制御メッセージはクラスタ内の少なくとも2つのクォーラム・ノード内のマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードに接続する第2のカテゴリのクォーラム・ノードの識別子を含む。
【0180】
特定の実装では、マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードはハート・ビート検出またはリース検出により当該クォーラム・ノードと別のクォーラム・ノードの間の接続を検出し、第2のパーミッション制御メッセージを生成し、当該第2のパーミッション制御メッセージをクォーラム記憶装置に送信する。
【0181】
第2のカテゴリのクォーラム・ノードとは、マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードと通信できるクォーラム・ノードのことをいう。即ち、第2のカテゴリのクォーラム・ノードはマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードに接続する。実際のシナリオでは、第2のカテゴリのクォーラム・ノードとマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードとは同じノード・グループ内にある。
【0182】
9154:クォーラム記憶装置がマスタ・クォーラム・ノード・プリエンプション失敗通知メッセージを第2のカテゴリのクォーラム・ノードに送信する。当該マスタ・クォーラム・ノード・プリエンプション失敗通知メッセージは、マスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置に送信するのを停止するように第2のカテゴリのクォーラム・ノードに指示するために使用される。
【0183】
1例として、特定の実装では、当該マスタ・クォーラム・ノード・プリエンプション失敗通知メッセージは(表2に示すように)以下の特定のパケット・フォーマットを使用する。当該パケット・フォーマットは、ノード識別子とマスタ・クォーラム・ノード・プリエンプション要求の送信パーミッションとを含む。例えば、ノードの識別子は当該ノードのIPアドレスであり、実際には別の表現方式を有してもよく、本発明の諸実施形態では限定されない。クォーラム・ノードがマスタ・クォーラム・ノード・プリエンプション失敗通知メッセージを受信した後、当該クォーラム・ノードが、マスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置に送信するのを停止する。
【0185】
方式1に対して、特定の実装方式において、ステップ9151および9152とステップ9153および9154の間の実行順序は限定されない。ステップ9151乃至ステップ9154がステップ9151からステップ9154への順序に従って実行してもよく、または、ステップ9153および9154を最初に実行してもよく、ステップ9151および9152が次に実行され、これは本発明の当該実施形態では限定されない。
【0187】
方式1との違いは、マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードがパーミッション制御メッセージを生成することにある。当該メッセージは、マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードを除く別のクォーラム・ノードの識別子とクォーラム記憶装置に対するクォーラム・ノードのアクセス・パーミッションとを含む。当該アクセス・パーミッションは許可または拒否を含む。マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードが当該パーミッション制御メッセージをクォーラム記憶装置に送信する。クォーラム記憶装置は別々に、当該識別子および当該識別子に対応するアクセス・パーミッションに従って、第1のカテゴリのクォーラム・ノードに対するアクセス拒否通知メッセージおよび第2のカテゴリのクォーラム・ノードに対するマスタ・クォーラム・ノード・プリエンプション失敗通知メッセージを生成する。第1のカテゴリのクォーラム・ノードはマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードに接続しないクォーラム・ノードであり、第2のカテゴリのクォーラム・ノードはマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードに接続するクォーラム・ノードである。2つのクォーラム・ノードが互いと接続するかがハート・ビート検出またはリース検出により判定される。当該アクセス拒否通知メッセージを受信した後、第1のカテゴリのクォーラム・ノードがノード再開とクラスタへの再参加の動作を実施してもよい。当該マスタ・クォーラム・ノード・プリエンプション失敗通知メッセージを受信した後、第2のカテゴリのクォーラム・ノードが、マスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置に送信するのを停止してもよい。
【0188】
以下のステップを特に含めてもよい。
図9Cを参照すると、当該方式は、以下のステップを含む。
【0189】
9155:クォーラム記憶装置はマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードにより送信されたパーミッション制御メッセージを受信する。当該パーミッション制御メッセージは、クォーラム記憶装置に対する、クラスタ内の少なくとも2つのクォーラム・ノードにおけるマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードを除く別のクォーラム・ノード内の識別子と、該クラスタ内の当該少なくとも2つのクォーラム・ノードにおけるマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードを除く別のクォーラム・ノードのアクセス・パーミッションとを含み、当該アクセス・パーミッションは許可または拒否を含む。
【0190】
1例として、マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードがパーミッション制御メッセージを生成する。当該パーミッション制御メッセージは表3に示すフォーマットを使用する。
【0192】
マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードがパーミッション制御メッセージをクォーラム記憶装置に送信する。
【0193】
9156:クォーラム記憶装置が、当該パーミッション制御メッセージに従って、クラスタ内の少なくとも2つのクォーラム・ノードにおけるマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードを除く別のクォーラム・ノードに通知メッセージを送信する。
【0194】
91561:アクセス・パーミッションが拒否である第1のカテゴリのクォーラム・ノードに対して、クォーラム記憶装置がアクセス拒否通知メッセージを第1のカテゴリのクォーラム・ノードに送信する。当該アクセス拒否通知メッセージは、ノード再開動作を実施するように第1のカテゴリのクォーラム・ノードに指示するために使用される。
【0195】
特定の実装では、ステップ9052における表1に示すパケット・フォーマットを使用してもよい。その他は同様であり、詳細についてはここでは説明しない。
【0196】
第1のカテゴリのクォーラム・ノードとは、マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードと物理的または論理的に通信できないクォーラム・ノードを指す。即ち、第1のカテゴリのクォーラム・ノードは、マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードに接続しない。実際のシナリオでは、第1のカテゴリのクォーラム・ノードとマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードとは異なるノード・グループ内にある。
【0197】
91562:アクセス・パーミッションが許可である第2のカテゴリのクォーラム・ノードに対して、クォーラム記憶装置がマスタ・クォーラム・ノード・プリエンプション失敗通知メッセージを第2のカテゴリのクォーラム・ノードに送信する。当該マスタ・クォーラム・ノード・プリエンプション失敗通知メッセージは、マスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置に送信するのを停止するように第2のカテゴリのクォーラム・ノードに指示するために使用される。
【0198】
特定の実装では、ステップ9054における表2に示すパケット・フォーマットを使用してもよい。その他は同様であり、詳細についてはここでは説明しない。
【0199】
第2のカテゴリのクォーラム・ノードとは、マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードと通信できるクォーラム・ノードのことをいう。即ち、第2のカテゴリのクォーラム・ノードがマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードに接続する。実際のシナリオでは、第2のカテゴリのクォーラム・ノードとマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードとは同じノード・グループ内にある。
【0200】
上述の2つの実装方式により、クラスタ内のマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードを除く別のクォーラム・ノードが、クォーラム記憶装置により送信されたメッセージに従って対応する処理を実施することができる。特に、マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードに接続しないクォーラム・ノード(ブレイン分割後の別のノード・グループ内のクォーラム・ノード)が再開動作を実施してもよい。マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードに接続するクォーラム・ノード(ブレイン分割後のマスタ・ノード・グループ内のクォーラム・ノード)がマスタ・クォーラム・ノード・プリエンプション要求を送信するのを停止する。上述の処理により、マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードが決定された後、他のクォーラム・ノードは、ブレイン分割後にマスタ・クォーラム・ノードのプリエンプションから高速に復元することができる、その結果、クラスタの通常のサービスの高速な復元を効果的に実装することができる。
【0201】
9157:アクセス拒否通知メッセージを第1のカテゴリのクォーラム・ノードに送信した後、クォーラム記憶装置はまた、ファイアウォール・ポリシを拒否に変更するために使用される通知メッセージを第1のカテゴリのクォーラム・ノードに送信する。当該通知メッセージは、第1のカテゴリのクォーラム・ノードのファイアウォール内のファイアウォール・ポリシを拒否に変更して、第1のカテゴリのクォーラム・ノードによりクォーラム記憶装置に送信されたマスタ・クォーラム・ノード・プリエンプション要求をブロックするように第1のカテゴリのクォーラム・ノードに指示するために使用される。
【0202】
特定の実装では、マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードと異なるノード・グループ内のクォーラム・ノード、即ち、第1のカテゴリのクォーラム・ノードに対して、当該クォーラム・ノードがマスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置に送信し続けるのを避けるため、当該クォーラム記憶装置が、ファイアウォール・ポリシを変更するために使用される通知メッセージを当該クォーラム・ノードに送信する。当該通知メッセージを受信した後、当該クォーラム・ノードは、当該クォーラム・ノードに対応するファイアウォール内のファイアウォール・ポリシを変更して、当該クォーラム・ノードによりクォーラム記憶装置に送信されたマスタ・クォーラム・ノード・プリエンプション要求をブロックしてもよい。
【0203】
第1のカテゴリのクォーラム・ノードが再開動作を実施し、クラスタに再度参加した後、当該方法の実施形態はさらに、クォーラム記憶装置により、ファイアウォール・ポリシを許可に変更するために使用される通知メッセージを第1のカテゴリのクォーラム・ノードに送信するステップを含むことに留意すべきである。ファイアウォール・ポリシを許可に変更するために使用される当該通知メッセージは、第1のカテゴリのクォーラム・ノードのファイアウォール内のファイアウォール・ポリシを許可に変更して、第1のカテゴリのクォーラム・ノードがマスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置に送信できるようにするように第1のカテゴリのクォーラム・ノードに指示するために使用される。
【0204】
第1のカテゴリのクォーラム・ノードを再開する前に、第1のカテゴリのクォーラム・ノードはさらにマスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置に送信することに留意すべきである。当該ステップの設定は効果的に、当該クォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求をブロックして、クォーラム記憶装置が無効なマスタ・クォーラム・ノード・プリエンプション要求に関する処理能力を無駄にするのを回避することができる。
【0205】
上述の解決策は、ブレイン分割がクラスタ内で行われた後、調停を通じてマスタ・ノード・グループを決定できないという先行技術の問題を効果的に解決することができる。
【0206】
クラスタ・ブレイン分割が終了した後の調停処理の後、クラスタ内のクォーラム・ノードを除く別のノードが、ハート・ビート検出またはリース検出により、当該ノードとマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードとの間の接続を決定してもよい。当該ノードがマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードに接続すると判定されたとき、これは、当該ノードとマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードとは同じノード・グループ内にあり、当該ノードが動作し続けることを示す。当該ノードがマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードに接続しないと判定されたとき、これは、当該ノードとマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードとが異なるノード・グループ内にあることを示し、当該ノードは再開をトリガし、マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードが配置されるノード・グループに再参加するプロセス実施する。
【0207】
本発明の第3の装置の実施形態
図10を参照すると、本発明はさらに、クラスタおよびクォーラム記憶装置1000により形成されたシステムに提供される、当該クラスタ内の調停処理に使用されるクォーラム記憶装置1000を提供する。当該クラスタは少なくとも2つのクォーラム・ノードを含み、クォーラム記憶装置1000は、当該クラスタ内の少なくとも2つのクォーラム・ノードの
1つを初期マスタ・クォーラム・ノードに予め構成する。クォーラム記憶装置1000は、リフレッシュ・パケット検出期間を開始するように構成された開始ユニット1005であって、当該リフレッシュ・パケット検出期間は反復実行される期間であり、当該開始ユニットをタイマを設定することにより実装してもよい、開始ユニット1005と、第1のリフレッシュ・パケット検出期間内に、ブレイン分割がクラスタ内で行われた後、クラスタ内の少なくとも2つのクォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求を受信するように構成された受信ユニット1001であって、第1のリフレッシュ・パケット検出期間はブレイン分割がクラスタ内で行われた時点に対応するリフレッシュ・パケット検出期間であり、当該受信ユニットの受信方式を有線または無線の方式で実装してもよく、無線方式を実装に使用するとき、当該受信ユニットを無線周波数モジュールを用いて実装してもよく、有線方式を実装に使用するとき、当該受信ユニットを有線インタフェースを用いて実装してもよい、受信ユニット1001と、初期マスタ・クォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求が第1のリフレッシュ・パケット検出期間内に受信されたかどうかを判定するように構成された判定ユニット1002であって、当該判定ユニットを判定ロジックにより実装してもよい、判定ユニット1002と、初期マスタ・クォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求が第1のリフレッシュ・パケット検出期間内に受信されたと判定されたとき、初期マスタ・クォーラム・ノードはマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードであると判定するように構成された実行ユニット1003であって、当該実行ユニットをプロセッサ(Processor)を用いて実装してもよい、実行ユニット1003と、マスタ・クォーラム・ノード・プリエンプション成功応答メッセージをマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードに送信するように構成された送信ユニット1004であって、当該送信ユニットは当該受信ユニットと同様であり、有線方式または無線方式で実装してもよく、無線方式(例えば、無線周波数)が実装に使用されるとき、当該送信ユニットを無線周波数モジュールを用いて実装してもよく、有線方式(例えば、Ethernet)が実装に使用されるとき、当該送信ユニットを有線インタフェースを用いて実装してもよい、送信ユニット1004とを備える。
【0208】
さらに、クォーラム記憶装置1000において、実行ユニット1003はさらに、初期マスタ・クォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求が第1のリフレッシュ・パケット検出期間内に受信されないと判定されたとき、第2のリフレッシュ・パケット検出期間内に受信された第1のマスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードをマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードとして使用し、送信ユニット1004をトリガするように構成され、第2のリフレッシュ・パケット検出期間は第1のリフレッシュ・パケット検出期間に続くリフレッシュ・パケット検出期間である。送信ユニット1004はさらに、マスタ・クォーラム・ノード・プリエンプション成功応答メッセージをマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードに送信するように構成される。
【0209】
さらに、判定ユニット1002は特に、ブレイン分割がクラスタ内で行われた後、第1のリフレッシュ・パケット検出期間内に受信された全てのマスタ・クォーラム・ノード・プリエンプション要求をキャッシュし、全てのキャッシュされたマスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードが初期マスタ・クォーラム・ノードを含むかどうかを判定するか、または、ブレイン分割がクラスタ内で行われた後、第1のリフレッシュ・パケット検出期間内に受信された各マスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードが初期マスタ・クォーラム・ノードであるかどうかを逐次的に判定するように構成される。
【0210】
さらに、実行ユニット1003はさらに、判定ユニット1002が当該全てのキャッシュされたマスタ・クォーラム・ノード・プリエンプション要求を送信するクォーラム・ノードが初期マスタ・クォーラム・ノードを含まないと判定した後、マスタ・クォーラム・ノードのプリエンプション失敗応答メッセージを生成するように構成され、送信ユニット1004はさらに、マスタ・クォーラム・ノードのプリエンプション失敗応答メッセージを当該全てのキャッシュされたマスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードの各々に送信するように構成され、その結果、当該全てのキャッシュされたマスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードは新たなマスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置に再度送信する。
【0211】
さらに、実行ユニット1003はさらに、第1のリフレッシュ・パケット検出期間内に受信された各マスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードが初期マスタ・クォーラム・ノードを含まないと判定されたとき、マスタ・クォーラム・ノードのプリエンプション失敗応答メッセージを生成するように構成され、送信ユニット1004はさらに、当該マスタ・クォーラム・ノードのプリエンプション失敗応答メッセージを第1のリフレッシュ・パケット検出期間内に受信された各マスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードに送信するように構成され、その結果、第1のリフレッシュ・パケット検出期間内に受信された各マスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードが新たなマスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置に再度送信する。
【0212】
さらに、クォーラム記憶装置1000において、受信ユニット1001はさらに、送信ユニット1004がマスタ・クォーラム・ノード・プリエンプション成功応答メッセージをマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードに送信した後、マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードにより送信された第1のパーミッション制御メッセージを受信するように構成され、当該第1のパーミッション制御メッセージは、クラスタ内の少なくとも2つのクォーラム・ノード内のマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードに接続しない第1のカテゴリのクォーラム・ノードの識別子を含む。実行ユニット1003はさらに、当該第1のパーミッション制御メッセージに従ってアクセス拒否通知メッセージを生成し、送信ユニット1004をトリガするように構成され、送信ユニット1004はさらに、当該アクセス拒否通知メッセージを第1のカテゴリのクォーラム・ノードに送信して、ノード再開動作を実施するように第1のカテゴリのクォーラム・ノードに指示するように構成される。
【0213】
さらに、クォーラム記憶装置1000において、受信ユニット1001はさらに、送信ユニット1004がマスタ・クォーラム・ノード・プリエンプション成功応答メッセージをマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードに送信した後、マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードにより送信された第2のパーミッション制御メッセージを受信するように構成され、第2のパーミッション制御メッセージはクラスタ内の少なくとも2つのクォーラム・ノード内のマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードに接続する第2のカテゴリのクォーラム・ノードの識別子を含み、実行ユニット1003はさらに、第2のパーミッション制御メッセージに従ってマスタ・クォーラム・ノード・プリエンプション失敗通知メッセージを生成し、送信ユニット1004をトリガするように構成され、送信ユニット1004はさらに、当該マスタ・クォーラム・ノード・プリエンプション失敗通知メッセージを第2のカテゴリのクォーラム・ノードに送信して、マスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置1000に送信するのを停止するように第2のカテゴリのクォーラム・ノードに指示するように構成される。
【0214】
さらに、クォーラム記憶装置1000において、受信ユニット1001はさらに、送信ユニット1004がマスタ・クォーラム・ノード・プリエンプション成功応答メッセージをマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードに送信した後、マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードにより送信されたパーミッション制御メッセージを受信するように構成され、当該パーミッション制御メッセージは、クォーラム記憶装置1000に対する、少なくとも2つのクォーラム・ノード内のマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードを除く別のクォーラム・ノードの識別子と、当該少なくとも2つのクォーラム・ノード内のマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードを除く別のクォーラム・ノードのアクセス・パーミッションとを含み、当該アクセス・パーミッションは許可または拒否を含む。実行ユニット1003はさらに、当該パーミッション制御メッセージに従って通知メッセージを生成し、送信ユニット1004をトリガするように構成される。送信ユニット1004はさらに、当該通知メッセージを当該少なくとも2つのクォーラム・ノード内のマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードを除く別のクォーラム・ノードに送信するように構成される。
【0215】
さらに、クォーラム記憶装置1000において、実行ユニット1003は特に、アクセス・パーミッションが拒否である第1のカテゴリのクォーラム・ノードに対してアクセス拒否通知メッセージを生成するように構成され、当該アクセス拒否通知メッセージは、ノード再開動作を実施するように第1のカテゴリのクォーラム・ノードに指示するために使用される。送信ユニット1004は特に、当該アクセス拒否通知メッセージを第1のカテゴリのクォーラム・ノードに送信するように構成される。
【0216】
さらに、クォーラム記憶装置1000において、実行ユニット1003は特に、アクセス・パーミッションが許可である第2のカテゴリのクォーラム・ノードに対してマスタ・クォーラム・ノード・プリエンプション失敗通知メッセージを生成するように構成される。当該マスタ・クォーラム・ノード・プリエンプション失敗通知メッセージは、マスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置1000に送信するのを停止するように第2のカテゴリのクォーラム・ノードに指示するために使用される。送信ユニット904は特に、当該マスタ・クォーラム・ノード・プリエンプション失敗通知メッセージを第2のカテゴリのクォーラム・ノードに送信するように構成される。
【0217】
さらに、クォーラム記憶装置1000において、実行ユニット1003はさらに、送信ユニット1004がアクセス拒否通知メッセージを第1のカテゴリのクォーラム・ノードに送信した後、第1のカテゴリのクォーラム・ノードに対して、ファイアウォール・ポリシを拒否に変更するために使用される通知メッセージを生成するように構成され、ファイアウォール・ポリシを拒否に変更するために使用される通知メッセージは、第1のカテゴリのクォーラム・ノードのファイアウォール内のファイアウォール・ポリシを拒否に変更して、第1のカテゴリのクォーラム・ノードによりクォーラム記憶装置1000に送信されたマスタ・クォーラム・ノード・プリエンプション要求をブロックするように第1のカテゴリのクォーラム・ノードに指示するために使用される。送信ユニット1004はさらに、ファイアウォール・ポリシを変更するために使用される当該通知メッセージを第1のカテゴリのクォーラム・ノードに送信するように構成される。
【0218】
さらに、クォーラム記憶装置1000において、実行ユニット1003はさらに、第1のカテゴリのクォーラム・ノードが再開動作を実施し、クラスタに再度参加した後、第1のカテゴリのクォーラム・ノードに対して、ファイアウォール・ポリシを許可に変更するために使用される通知メッセージを生成するように構成され、ファイアウォール・ポリシを許可に変更するために使用される当該通知メッセージは、第1のカテゴリのクォーラム・ノードのファイアウォール内のファイアウォール・ポリシを許可に変更して、第1のカテゴリのクォーラム・ノードがマスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置に送信できるようにするように第1のカテゴリのクォーラム・ノードに指示するために使用される。送信ユニット1004はさらに、ファイアウォール・ポリシを許可に変更するために使用される当該通知メッセージを第1のカテゴリのクォーラム・ノードに送信するように構成される。
【0219】
本発明の全ての実施形態を、1つのクォーラム記憶装置が存在する例を用いて説明する。N個の(N≧3およびNは奇数である)クォーラム記憶装置があるとき、クラスタ内の少なくとも2つのクォーラム・ノードは、マスタ・クォーラム・ノード・プリエンプション要求を当該N個のクォーラム記憶装置内の各クォーラム記憶装置に送信する。Round(N/2)+1個のクォーラム記憶装置により送信されたマスタ・クォーラム・ノード・プリエンプション成功通知メッセージを取得できるクォーラム・ノードは、マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードと呼ばれる。マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードが配置されるノード・グループはマスタ・ノード・グループである。他のクォーラム・ノード内のマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードと通信できるクォーラム・ノードは、マスタ・クォーラム・ノード・プリエンプション失敗通知メッセージを受信してもよく、マスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置に送信するのを停止してもよい。マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードと通信できないクォーラム・ノードがアクセス拒否通知メッセージを受信してもよい。当該アクセス拒否通知メッセージは、ノード再開動作を実施するように当該クォーラム・ノードに指示するために使用される。具体的な処理プロセスは1つのクォーラム記憶装置があるときの処理プロセスと同様であるので、詳細は本発明の当該実施形態では説明しない。
【0220】
本発明における特定の例は、当業者が本発明の諸実施形態をより良く理解するのを支援するためのものであるが、本発明の諸実施形態の範囲を限定するためのものではないことは理解されるべきである。
【0221】
上述のプロセスのシーケンス番号は本発明の様々な実施形態における実行順序を意味しないことも理解されるべきである。プロセスの実行順序は当該プロセスの機能および内部ロジックに従って決定されるべきであり、本発明の諸実施形態の実装プロセスに対する限定として解釈されるべきではない。
【0222】
本発明の当該実施形態における「および/または」という用語は、関連付けられたオブジェクトを説明するための関連付け関係のみを示し、3つの関係が存在しうることを表すこともさらに理解されるべきである。例えば、Aおよび/またはBが以下の3つのケース、即ち、Aのみが存在すること、AおよびBの両方が存在すること、およびBのみが存在することを表してもよい。さらに、本明細書における「/」という文字は一般に、関連付けられたオブジェクトの間の「または」の関係を示す。
【0223】
本明細書で開示した実施形態で説明した例と組み合わせて、ユニットおよびアルゴリズムのステップを電子ハードウェア、コンピュータ・ソフトウェア、またはそれらの組合せにより実装してもよいことを当業者は認識しうる。ハードウェアとソフトウェアの間の交換可能性を明確に説明するために、以上では機能に従う各例の構成とステップを一般的に説明した。当該機能がハードウェアまたはソフトウェアにより実施されるかどうかは技術的解決策の特定の適用と設計制約条件に依存する。当業者は様々な方法を使用して特定のアプリケーションごとに説明した機能を実施してもよいが、当該実装が本発明の範囲を越えるとは考えるべきではない。
【0224】
便宜上および説明の簡単さのため、上述の装置およびユニットの詳細な動作プロセス、および方法の詳細なプロセスについては上述のシステムの実施形態における対応する説明を参照できることは当業者により明確に理解でき、詳細についてはここでは説明しない。
【0225】
本願で提供した幾つかの実施形態において、開示したシステム、装置、および方法を他の方式で実装してもよいことは理解されるべきである。例えば、説明した装置の実施形態は例示的なものにすぎない。例えば、ユニット分割は論理的な機能分割にすぎず、実際の実装では他の分割であってもよい。例えば、複数のユニットまたはコンポーネントを別のシステムに組み合わせるかまたは統合してもよく、または、幾つかの機能を無視するかまたは実施しなくてもよい。さらに、幾つかのインタフェースを用いて、説明または議論した相互結合または直接結合または通信接続を実装してもよい。当該装置またはユニットの間の間接結合または通信接続を、電気、機械、または他の形態で実装してもよい。
【0226】
別々の部分として説明されたユニットが物理的に分離されていてもいなくてもよく、ユニットとして表示した部分が物理ユニットであってもなくてもよく、1つの位置に配置されてもよく、または、複数のネットワーク・ユニットに分散されてもよい。当該ユニットの一部または全部を、本発明の諸実施形態の解決策の目的を実現するための実際のニーズに従って選択してもよい。
【0227】
さらに、本発明の諸実施形態における機能ユニットを1つの処理ユニットに統合してもよく、または、当該ユニットの各々が物理的に単体で存在してもよく、または、2つまたはそれより多くのユニットが1つのユニットに統合される。当該統合されたユニットをハードウェアの形態で実装してもよく、または、ソフトウェア機能ユニットの形態で実装してもよい。
【0228】
統合されたユニットがソフトウェア機能ユニットの形態で実装され、独立な製品として販売または使用されるとき、当該統合されたユニットをコンピュータ可読記憶媒体に格納してもよい。かかる理解に基づいて、本発明の技術的解決策を本質的に、または、先行技術に寄与する部分、または、当該技術的解決策の全部もしくは一部をソフトウェア製品の形で実装してもよい。当該コンピュータ・ソフトウェア製品は記憶媒体に格納され、本発明の諸実施形態で説明した方法のステップの全部または一部を実施するように(パーソナル・コンピュータ、サーバ、またはネットワーク装置であってもよい)コンピュータ装置に指示するための幾つかの命令を含む。上述の記憶媒体は、USBフラッシュ・ドライブ、取外し可能ハード・ディスク、読取専用メモリ(ROM、Read−Only Memory)、ランダム・アクセス・メモリ(RAM、Random Access Memory)、磁気ディスク、または光ディスクのような、プログラム・コードを格納できる任意の媒体を含む。
【0229】
以上の説明は本発明の特定の実施形態にすぎず、本発明の保護範囲を限定しようとするものではない。本発明で開示した技術的範囲内で当業者が容易に想到する任意の修正または置換えは本発明の保護範囲内に入るものとする。したがって、本発明の保護範囲は特許請求の範囲の保護範囲に支配されるべきである。