(57)【要約】  スケーリングされたクラスタ環境において動作するクライアントおよびサーバのためのシステムおよび方法が開示される。複数のサーバとの接続を並行して試みる能力をクライアントに与えることによって、クライアントをクラスタ化環境に接続する処理に効率性が導入される。クラスタ化環境において動作するサーバはまた、ファイルハンドルおよび他の状態情報を持続的に格納することができる。状態情報および持続的ハンドルのオーナーシップは、サーバ間で転送され得、それによって、１つのサーバから別のサーバへと移動する機会がクライアントに与えられると同時に、クラスタ化環境内のリソースへのアクセスが維持される。
2014532210.tif 000002
【特許請求の範囲】
【請求項１】
クラスタ化(clustered)サーバ環境とのセッションを確立する(establishing)ための方法であって、
クライアントで(at)、前記クラスタ化サーバ環境内の複数のサーバを特定する複数のアドレスを受信するステップと、
前記クライアントから、前記複数のアドレスのうちの第１のアドレスによって特定される(identified)第１のサーバに接続するための初期(initial)要求を送信するステップと、
前記第１のサーバに接続する前に、前記クライアントから、前記複数のアドレスのサブセットに１つまたは複数の追加の(additional)要求を送信するステップであって、複数のアドレスの前記サブセットが、前記クラスタ化サーバ環境内の少なくとも第２のサーバを特定する、送信するステップと、
前記第２のサーバから、上首尾な(successful)接続の指示(indication)を受信するステップと、
前記第２のサーバに接続するステップと
を含む方法。
【請求項２】
前記複数のアドレスの前記サブセットをランダムに選択するステップをさらに含む、請求項１に記載の方法。
【請求項３】
前記１つまたは複数の追加の要求が、前記初期要求を送信した後、所定の(predetermined)期間に続いて送信される、請求項１に記載の方法。
【請求項４】
前記第２のサーバとの前記接続を失うステップと、
前記第２のサーバに再接続要求を送信するステップと、
前記第２のサーバに接続するステップと
をさらに含む、請求項１に記載の方法。
【請求項５】
サーバ性能に関連している前記第２のサーバからの状態(status)メッセージを受信するステップと、
前記状態メッセージの受信に応答して、前記クライアントから、少なくとも第３のサーバに新規接続要求を送信するステップであって、前記第３のサーバが前記クラスタ化環境の一部である、送信するステップと、
前記第３のサーバに接続するステップと
をさらに含む、請求項１に記載の方法。
【請求項６】
少なくとも１つのプロセッサによって実行されると、クラスタ化サーバ環境とのセッションを確立するための方法を実行するコンピュータ実行可能命令を符号化する(encoding)コンピュータストレージ媒体であって、前記方法が、
前記クラスタ化サーバ環境内の複数のサーバを特定する複数のアドレスを受信するステップと、
前記複数のアドレスのうちの第１のアドレスによって特定される第１のサーバに接続するための初期要求を送信するステップと、
前記第１のサーバに接続する前に、前記複数のアドレスのサブセットに１つまたは複数の追加の要求を送信するステップであって、複数のアドレスの前記サブセットが、前記クラスタ化サーバ環境内の少なくとも第２のサーバを特定する、送信するステップと、
前記第２のサーバから、上首尾な接続の指示を受信するステップと、
前記第２のサーバに接続するステップと
を含む、コンピュータストレージ媒体。
【請求項７】
前記方法が、
前記複数のアドレスから前記複数のアドレスの前記サブセットをランダムに選択するステップ
をさらに含む、請求項６に記載のコンピュータストレージ媒体。
【請求項８】
前記方法が、
サーバ性能に関連している前記第２のサーバからの状態メッセージを受信するステップと、
前記状態メッセージの受信に応答して、少なくとも第３のサーバに新規接続要求を送信するステップであって、前記第３のサーバが前記クラスタ化環境の一部である、送信するステップと
前記第３のサーバに接続するステップと
をさらに含む、請求項６に記載のコンピュータストレージ媒体。
【請求項９】
持続的ハンドルを提供するためのコンピュータシステムであって、
少なくともクラスタ内の第１のサーバおよび第２のサーバを備え、
前記第１のサーバが、
の前記第２のサーバとの先に確立された(established)セッションを特定するセッションセットアップ要求を含む接続要求を、クライアントから受信し、
前記第２のサーバに、前記先に(previously)確立されたセッションのオーナーシップ要求を送信する
ように構成され、
前記第２のサーバが、
前記第１のサーバから前記要求を受信し、
ハンドル(handles)の前記セットに関して保留中操作(pending operation)を完了し、
ハンドルの前記セットを無効にする
ように構成されている、
コンピュータシステム。
【請求項１０】
前記第２のサーバが、
前記第１のサーバにハンドルの前記セットを転送するようにさらに構成され、ハンドルの前記セットがまとめて(in bulk)転送される、請求項９に記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本願発明の一実施例は、例えば、ＳＭＢ２スケールアウトに関する。
【背景技術】
【０００２】
[0001]サーバクラスタは、一般に、クライアントにフェイルオーバー、および情報の高い可用性を提供するに用いられる。従来、クラスタ環境は、クライアントサーバプロトコルに従って設計されており、クライアントは、サーバに接続してサーバに利用可能なリソースにアクセスする。従来のクラスタ化環境では、環境を構成する相異なるサーバが、相異なるファイルシステムにアクセスすることがある。共通のファイルシステムにアクセスできないことにより、従来のファイルシステムクラスタの機能性が制限されている。
【０００３】
[0002]諸実施形態は、これらおよび他の考慮すべき事柄に関して作成されたものである。また、比較的具体的な問題について論じているが、諸実施形態は、背景において特定されたこれらの具体的な問題を解決することに限定すべきでないことを理解されたい。
【０００４】
[0003]この概要は、「発明を実施するための形態」の項でさらに後述する概念の選択を簡略化した形態で紹介するために与えられる。この概要は、特許請求される主題の重要な特徴または本質的な特徴を特定するように意図するものでも、また特許請求される主題の範囲を決定する際の助けとして使用すべきであるように意図するものでもない。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本願発明の一実施例は、例えば、ＳＭＢ２スケールアウトに関する。
【課題を解決するための手段】
【０００６】
[0004]本開示の諸実施形態は、スケールアウトされたクラスタ化環境を提供し、ここで、ファイルシステムが、クラスタ内の各ノードがクラスタ内に常駐するすべてのリソースにアクセスできるように論理的にクラスタ化され得る。ファイルシステムは、クラスタ化環境内の各ノードにアクセスできるので、クライアントは、クライアントがどのノードに接続するかに関係なく、クラスタのリソースにアクセスすることができる。そのような環境により、クライアントには、クラスタ化環境に接続している際の選択肢が与えられる。クライアントは、サーバクラスタに効率的に接続するように、スケーリングされたクラスタノードの柔軟性を活用することができる。
【０００７】
[0005]他の諸実施形態では、スケーリングされたクラスタ化環境により、クライアントは、クライアントが接続を確立する実際のノードに関係なく、クラスタにわたってリソースにアクセスすることが可能になる一方、一旦クライアントがノードとの接続を確立すると、クライアントは、クラスタ環境のそのときのノード間で転送される状態情報の量を抑えるために、同じノードとのその接続を維持しようと試みる。
【０００８】
[0006]しかしながら、いくつかの事例では、クライアントは、同じノードとの接続を維持できないこともあるが、スケーリングされたクラスタ化環境内の異なるノードに接続することが求められる。さらなる環境では、スケーリングされたクラスタ環境は、あるノードから別のノードへのクライアントの移動を容易にするために、セッション情報、状態情報、およびまたはハンドルを格納し、維持することを行う。クラスタのノードは、クライアント接続の移動を容易にするために、相互間でそのような情報を通信できる。
【０００９】
[0007]諸実施形態は、コンピュータ処理、コンピューティングシステムとして、またはコンピュータプログラム製品もしくはコンピュータ可読媒体などの製造物品として実装可能である。コンピュータプログラム製品は、コンピュータシステムによって読取り可能な、かつコンピュータ処理を実行するための命令のコンピュータプログラムを符号化するコンピュータストレージ媒体とすることができる。コンピュータプログラム製品はまた、コンピューティングシステムによって読取り可能な、かつコンピュータ処理を実行するための命令のコンピュータプログラムを符号化する搬送波における伝搬信号とすることができる。
【００１０】
[0008]非限定的な包括的でない諸実施形態を以下の図を参照して説明する。
【図面の簡単な説明】
【００１１】
【図１】[0009]本明細書に説明される諸実施形態を実施するのに使用され得るシステムを示す図である。
【図２】[0010]クライアントが、サーバクラスタに接続する際、実行することができる方法の一実施形態の図である。
【図３】[0011]クライアントが、クラスタ化環境内のノード間で接続を転送する際、実行することができる方法の一実施形態の図である。
【図４】[0012]持続的ハンドルを維持および転送するためにクラスタ化環境内のノードによって実行される方法の一実施形態の図である。
【図５】[0013]先に確立されたセッションのオーナーシップを要求するためにクラスタ化環境内のノードによって実行される方法の一実施形態の図である。
【図６】[0014]諸実施形態を実施するのに適しているコンピューティング環境を示すブロック図である。
【発明を実施するための形態】
【００１２】
[0015]様々な実施形態は、本明細書の一部を形成し具体的な例示的実施形態を示す、添付の図面を参照して以下により完全に説明される。しかしながら、諸実施形態は、多数の相異なる形態で実施可能であり、本明細書に記述される実施形態に限定されるものと見なすべきではなく、むしろ、これらの実施形態は、本開示が完全であり十分であるように、かつ当業者に実施形態の範囲を十分に伝えるように与えられるものである。諸実施形態は、方法、システムまたはデバイスとして実施可能である。したがって、諸実施形態は、ハードウェアの実装形態、全体としてソフトウェアの実装形態、またはソフトウェアおよびハードウェアの側面を組み合わせた実装形態の形をとり得る。そのため、以下の詳細な説明は、限定する意味で解釈すべきではない。
【００１３】
[0016]図１は、本明細書に開示される実施形態のいくつかを実施するのに使用され得るシステム１００を示している。システム１０６は、１つまたは複数のノードを含んでいる例示的なクラスタ化システムとすることができる。クラスタ化システムの一例は、図１に示す、１つまたは複数のサーバを備えたサーバクラスタである。システム１００は、クライアント１０２および１０４と、サーバクラスタ１０６とを含む。クライアント１０２および１０４は、ネットワーク１０８を介してサーバクラスタ１０６と通信する。諸実施形態では、ネットワーク１０８は、インターネット、ＷＡＮ、ＬＡＮ、または当技術分野に知られている任意の他のタイプのネットワークであってもよい。サーバクラスタ１０６は、クライアント１０２および１０４におけるアプリケーションによってアクセスされるリソースを格納する。クライアント１０２および１０４は、クラスタ１０６におけるリソースにアクセスするようにクラスタ１０６とのセッションを確立する。図１では、クライアント１０２および１０４のみがクラスタ１０６と通信するように示されているが、他の諸実施形態では、サーバクラスタ１０６からの情報にアクセスする２つ以上のクライアントが存在することもある。諸実施形態では、クライアント１０２および１０４は、ＳＭＢ２プロトコルに従って、サーバクラスタ１０６にアクセスすること、またはサーバクラスタ１０６と通信することが可能である。
【００１４】
[0017]図１に示すように、サーバクラスタ１０６は、クラスタ１０６において格納された情報についての高い可用性と冗長性の両方をもたらす１つまたは複数のノード、例えば、サーバ１０６Ａ、１０６Ｂ、および１０６Ｃを含む。サーバクラスタ１０６の１つまたは複数のノードは、インターネット、ＷＡＮ、ＬＡＮなどのネットワーク、または当技術分野に知られている任意の他のタイプのネットワークを介して相互に通信することができる。諸実施形態では、クラスタ１０６は、クライアント１０２および１０４によってアクセスされるファイルシステム、データベース、または他の情報を有することができる。図１には３つのサーバが示されているが、他の諸実施形態では、クラスタ１０６が、４つ以上のサーバを含むことも、または２つ以下のサーバを含むこともある。
【００１５】
[0018]諸実施形態では、サーバクラスタ１０６は、スケールアウトされたサーバクラスタである。諸実施形態では、スケールアウトされたサーバクラスタは、サーバクラスタ内の各ノード（例えば、サーバ１０６Ａ、１０６Ｂ、および１０６Ｃ）によってアクセス可能なファイルシステム１０８を含む。一例として、スケールアウトされたクラスタでは、ファイルシステムは、ファイルシステムを構成する１つまたは複数のディスクが、サーバクラスタ内の各サーバから見えるように、論理的にクラスタ化される。そのような環境では、スケーリングされたサーバクラスタは、クラスタ内のノードにわたってリソースの共有化を可能にする。１つのそのような実施形態では、サーバクラスタ１０６は、サーバクラスタ１０６内の各サーバがアクセスできる１つまたは複数のデータストアを含んだ中央データリポジトリを含む。そのような実施形態では、中央リポジトリにリソースを格納することにより、各サーバは、ファイルシステムにアクセスすることが可能になる。別の実施形態では、共有ファイルシステムは、サーバクラスタ１０６内の各サーバのローカルファイルシステムにわたってリソースを複製することによって実現可能である。そのような諸実施形態では、当技術分野に知られているデータを複製するいずれのやり方も、クラスタを構成するサーバにわたってクラスタリソースを複製するのに用いることができる。
【００１６】
[0019]サーバクラスタ１０６など、スケールアウトされたサーバクラスタ内に論理的にクラスタ化されたファイルシステムを含めることにより、従来のサーバクラスタでは利用できない追加の機能性が提供される。一実施形態では、論理的にクラスタ化されたファイルシステムは、クラスタ化環境の一部である各ノードが、この環境におけるいずれのリソースにもアクセスすることができることを確実にする。諸実施形態では、リソースは、クラスタ化環境において提供されるアプリケーション、ファイル、オブジェクト、データ、または任意の他のタイプのリソースとすることができる。これにより、クライアントは、クライアントがどのノード（例えば、サーバ１０６Ａ、１０６Ｂ、および／または１０６Ｃ）との接続を確立するかに関係なく、ファイルシステムにおけるいずれのリソースにもアクセスする、かつ／またはそうでなければ、操作することが可能になる。諸実施形態では、ファイルサーバ１０６は、名前解決機構を使用して共通の名前で、あらゆるノードを登録することができる。名前解決機構の非限定的な例は、ドメインネームシステム（ＤＮＳ）である。例えば、サーバクラスタ１０６は、ＤＮＳサーバ（図１には示さず）における共通の名前でサーバ１０６Ａ、１０６Ｂ、および１０６Ｃを登録することができる。ＤＮＳサーバは、サーバクラスタ１０６の一部であっても、またはサーバクラスタ１０６の外部にあってもよい。
【００１７】
[0020]クライアントは、サーバクラスタ１０６内のサーバにアクセスしようと試みる際、名前解決機構にアクセスして、サーバのアドレスを取得することができる。例えば、クライアントは、ＤＮＳサーバとコンタクトをとって、サーバクラスタ１０６内のサーバのアドレスを取得することができる。サーバシステムは、共通の名前ですべてのサーバを登録済みであるので、ＤＮＳサーバは、サーバクラスタ１０６を構成する各サーバ（例えば、サーバ１０６Ａ、１０６Ｂ、および１０６Ｃ）のアドレスのリストを返信することができる。諸実施形態では、アドレスは、ＩＰアドレス、ＵＲＬ、ＵＲＩ、または当技術分野に知られている任意の他のタイプのアドレスとすることができる。複数のアドレスが返信されるので、クライアントには、どのサーバと接続するかの選択肢が与えられる。諸実施形態では、クライアントは、サーバから受信するリスト内の第１のアドレスに接続するように選択することが可能である。いくつかの事例では、クライアントは、第１のアドレスによって特定された第１のサーバ（例えば、サーバ１０６Ａ）に接続することがうまくいかない場合がある。サーバクラスタ１０６内の各サーバは、同様の機能性をクライアントに提供できるので、クライアントは、サーバクラスタ１０６内の別のサーバに接続するように決めることが可能である。クライアントは、第１のサーバに首尾よく接続することができない場合、所定の期間、待機した後、名前解決機構から受信したアドレスのサブセット（例えば、サーバ１０６Ｂおよびサーバ１０６Ｃ）に接続し、上首尾である接続を選ぶように１つまたは複数の要求を発することができる。１つまたは複数の要求は、並行して行われてもよく、この場合、クライアントは、上首尾な接続が確立される第１のサーバに接続することができる。
【００１８】
[0021]アドレスのリストの具体的な順序付けは、上記に規定したが（例えば、第１のリストのアドレスとしてサーバ１０６Ａ）、当業者には、アドレスのリストはいずれの順序であってもよいことが認識されよう。諸実施形態では、ラウンドロビン技法が、名前解決機構とともに用いられることがあり、例えば、ＤＮＳラウンドロビンは、ネットワークにわたって負荷バランスを行うのに活用され得る。複数のクライアント（例えば、クライアント１０２および１０４）がサーバクラスタ１０６に同時に接続することがあるので、ラウンドロビン技法は、相異なるクライアントに与えられる第１のアドレスが変わることを確実にする。したがって、初期接続要求は、クラスタ化環境のすべてのノードにわたって広められる。さらには、クライアントは、アドレスのサブセットをランダムに選定することができ、第１のサーバとの接続における試みが失敗した後、追加の訂正要求を発し、それによって、追加の負荷バランスの仕組みがもたらされる。
【００１９】
[0022]諸実施形態では、一旦クライアントがサーバクラスタ１０６内のサーバに接続されると、クライアントは、同じサーバに接続されたままでいることを確実にし得る。各サーバ（例えば、サーバ１０６Ａ、１０６Ｂ、および１０６Ｃ）は、論理的にクラスタ化されたファイルシステムを共有するが、クライアントのセッション状態は、それが接続されているサーバによってハンドリングされ得る。したがって、サーバにわたって状態同期トラフィックを最小限にするために、クライアントは、同じサーバに接続されたままでいることを確実にし得る。例えば、クライアント１０２がサーバ１０６Ａに接続される場合、クライアント１０２は、その接続およびリソース使用量のすべて（例えば、オープンファイル）がサーバ１０６Ａに関するものであることを確実にするように試みることができる。そのような諸実施形態では、クライアント１０２は、サーバ１０６Ａへのその接続を失った場合、サーバクラスタ１０６に再接続する際、サーバ１０６Ｂまたは１０６Ｃではなく、サーバ１０６Ａに再接続するように試みることになり、それによって、サーバクラスタ１０６内の相異なるサーバ間のセッション状態を転送する必要性が抑えられる。諸実施形態では、クライアントは、接続を失うと、同じサーバに再接続するように試みるので、サーバは、クライアントとの通信を失った後でも、クライアントのセッション状態を維持することが可能である。例えば、クライアント１０２がサーバ１０６Ａとの接続を失った場合、サーバ１０６Ａは、クライアント１０２のセッション状態を維持することが可能である。クライアント１０２がその接続を再確立する際、セッション状態の持続性により、クライアント１０２は、サーバ１０６Ａとの再接続時にそのセッション情報（例えば、状態情報）を再使用することが可能になる。
【００２０】
[0023]しかしながら、いくつかの状況では、クライアントがサーバクラスタ１０６内の単一のサーバとその接続を維持することは効率的でないことも、または可能でないこともある。例えば、サーバノード障害、所与のサーバとの失われた接続、もしくはサーバの負荷バランス、パッチなどの管理上の動作、または任意の他のタイプの管理上の動作は、クライアントが同じノードに再接続することを不可能にする可能性がある。ノードの変更を容易にするために、サーバクラスタ１０６は、クライアントによってアクセスされるリソースへの持続的ハンドルをサポートすることが可能である。持続的ハンドルにより、クライアントは、第２のノードに接続する際、第１のノードにおいて確立済みのハンドルを再開することが可能になる。例えば、クライアント１０２がその初期接続をサーバ１０６Ａからサーバ１０６Ｃへと変更する場合、クライアント１０２によってサーバ１０６Ａにおいて使用されたハンドルは、サーバ１０６Ｃに転送され得る。
【００２１】
[0024]諸実施形態では、サーバクラスタ１０６は、持続的状態ストアを用いて、持続的ハンドルを提供することが可能である。例示的な持続的状態ストアは、サーバクラスタ１０６の１つまたは複数のノード内に存在し得るレジュームキーマネージャである。しかしながら、当業者には、任意のタイプのキャッシュまたはデータストアをサーバクラスタ１０６が利用して、持続的ハンドルを容易にし得ることが認識されよう。一実施形態では、サーバクラスタ１０６は、集中型持続的状態ストアを備える。そのような諸実施形態では、サーバクラスタ１０６内の単一のノード（例えば、サーバ１０６Ｂ）は、クライアントセッションのためのオープンハンドルの持続的状態を維持する。そのような諸実施形態では、その全体が参照によって本明細書に組み込まれている２０１１年９月９日に出願された「Ｃｌｕｓｔｅｒｅｄ  Ｃｌｉｅｎｔ  Ｆａｉｌｏｖｅｒ（クラスタ化されたクライアントフェイルオーバー）」（代理人整理番号第１４９１７．１８４０ＵＳ０１号）という名称の同一出願人による同時係属中の米国特許出願第１３／２２８，７３２号に記載されている無効化技法など、先のセッションの無効化ロジックを用いることによって、クライアントが１つのノードから別のノードに切り替える（例えば、サーバ１０６Ａから１０６Ｃへの切替えの）たびに、クライアントセッションの一部であるハンドルのオーナーシップは、ノード間で転送され得る（例えば、サーバ１０６Ａからサーバ１０６Ｃにオーナーシップが転送される）。他の諸実施形態では、ハンドルのオーナーシップは、ハンドルごとにクライアントによって明示的に転送され得る。
【００２２】
[0025]別の実施形態では、持続的状態ストアは、分散型状態ストアであってもよい。そのような諸実施形態では、持続的状態ストアは、サーバクラスタ１０６のノードにわたって分布され得る。そのような諸実施形態では、各ノードは、持続的状態ストアを格納することができる。クラスタワイド状態複製アルゴリズムは、分散型状態ストアにわたって状態を複製するために使用され得る。そのような諸実施形態では、サーバクラスタ１０６は、ノードのサブセットが機能しない場合には、状態情報を維持する。
【００２３】
[0026]上述のように、スケーリングされたクラスタの各ノードは、論理的にクラスタ化されたファイルシステムに接続される。複数のクライアントが同じリソースにアクセスする際の競合を回避するために、サーバクラスタ１０６は、１つまたは複数のノード（例えば、１０６Ａ、１０６Ｂ、および／または１０６Ｃ）に、リソースに対する便宜的ロックまたはリースを採る能力を与えることによって、分散された状態解決法を行うことが可能である。諸実施形態では、共有リーダは、複数のリーダがクラスタの複数のノードにおける同じファイルにアクセスできるようにするＲＨ便宜的ロックを使用することによって、サポートされ得る。さらなる諸実施形態では、書込みロックもまた、サーバクラスタ１０６によってサポートされ得る。
【００２４】
[0027]本明細書に説明されているように、当業者には、スケーリングされたサーバクラスタは、スケーリングされていないサーバクラスタでは利用できない追加の機能性をもたらすことが認識されよう。追加の機能性の具体的な例は、図１に関して与えられたが、当業者には、これらは、スケーリングされたサーバクラスタによってもたらされる利点および機能性の非限定的な例であることが認識されよう。
【００２５】
[0028]図２は、クライアントが、クラスタ化環境に接続する際、実行することができる方法２００の一実施形態である。例えば、クライアント１０２（図１）などのクライアントは、方法２００を用いて、クラスタ化環境に接続する際、どのノード（例えば、１０６Ａ、１０６Ｂ、および／または１０６Ｃ）との接続を確立すべきであるかを判定することができる。フローは動作２０２から開始し、ここで、クライアントは、ＤＮＳサーバなどの名前解決機構からアドレスリストを受信する。図１に関して論じたように、諸実施形態では、クラスタ化環境内の各ノードは、クライアントに類似の機能性を提供でき得る。したがって、クライアントは、クライアントがどのノードに接続するかに関係なく、首尾よく、所望の動作を実行する、またはクラスタ化環境内の所望のリソースにアクセスすることができる。
【００２６】
[0029]フローは動作２０４へと続き、ここで、クライアントは、動作２０２で受信したアドレスのリスト内の第１のアドレスによって特定された第１のノードに接続しようと試みる。クライアントは、動作２０４で、第１のアドレスによって特定されたノードに初期接続要求を送信することによって、第１のノードに接続しようと試みることができる。しかしながら、当業者には、動作２０３でノード（例えば、サーバ）との接続を試みるいかなるやり方も認識されよう。諸実施形態では、クライアントは、動作２０６によって示されるように、所定の期間、第１の試みが成功するのを待つことができる。しかしながら、クラスタ化環境内のいずれのノードもクライアントに代わっていずれのリソースにアクセスできるので、クライアントは、第１の試みが失敗した場合、または長い時間かかっている場合、他のサーバクラスタに試み要求を発することができる。動作２０６には、所定の期間、クライアントが待つことが記載されているが、その時間は、クライアントによって動的に決定され得る。
【００２７】
[0030]別の実施形態では、サーバに接続する第１の試みが上首尾になり得る一方で、ノードはクラスタ化環境のリソースにアクセスできないことがある。例えば、アドレスのリストは、不正確なアドレス、またはもはやクラス化環境の一部ではないノードのアドレスを含んでいる場合がある。さらなる実施形態では、エラーにより、クラスタ化環境リソースへのノードのアクセスが妨げられる場合がある。クライアントは、そのような状況を特定するために必要なロジックを使用することができる。これらの状況では、クライアントは、障害時の上首尾な試みを処理し、方法２００の実行を継続することができる。
【００２８】
[0031]第１の試みが失敗すると、または期間が満了した後、フローは動作２０８へと続き、ここで、クライアントは、アドレスのリストからアドレスのサブセットをランダムに選定する。諸実施形態では、サブセットアドレスをランダムに選定することより、クラスタ化環境に負荷バランスの利点がもたらされ、それは、複数のクライアントがたった１回でそのノードと接続しようとする試みを可能にする。各クライアントが接続すべきノードのサブセットをランダムに選定する場合、より良い接続バランスがクラスタ化環境にわたって確立され得る。しかしながら、他の諸実施形態では、クライアントは、ランダムにサブセットを選定しなくてもよく、リストに登場する順序でアドレスを選定してもよい。さらなる諸実施形態では、クライアントは、動作２０８でアドレスのリストのサブセットを選定するのではなく、リスト内のすべてのアドレスを選定してもよい。
【００２９】
[0032]フローは動作２１０へと続き、ここで、クライアントは、選定されたサブセット内のアドレスによって特定された１つまたは複数のノードに接続しようと試みる。一実施形態では、クライアントは、動作２１０で並行して複数のノードに接続しようと試みることができ、それによって、接続処理の速度が上がる。諸実施形態では、クライアントは、動作２１０で相異なるノードに１つまたは複数の追加の接続要求を送信することができるが、動作２０４に関して説明したように、接続を試みるいずれのやり方も、本明細書に説明される諸実施形態とともに用いることができる。
【００３０】
[0033]フローは動作２１２へと続き、ここで、クライアントは、上首尾な接続の指示を受信する。諸実施形態では、この指示は、クライアントがノードに接続できることを示した、クライアントがノードから受信するメッセージとすることができる。諸実施形態では、クライアントは、動作２１０で並行の試みを行う場合、動作２１２で、クライアントに首尾よく応答する第１のノードに接続しようと決めることができる。他の諸実施形態では、クライアントは、クラスタ化環境内の相異なるノードから上首尾な試みの複数の指示を受信することができる。そのような諸実施形態では、クライアントは、どのノードに接続すべきかを選択することができる。さらなる諸実施形態では、これらの指示は、ノードの現在の負荷など、ノードについての性能を提供することができる。クライアントは、そのような情報を使用して、どのノードへの接続を確立すべきかを判定することができる。例えば、クライアントは、より軽い負荷、具体的なハードウェア構成などを有するノードに接続することを選択することができる。一旦クライアントがノードを選定すると、フローは動作２１４へと進み、クライアントは、そのノードに接続する。
【００３１】
[0034]ノードに接続した後、クライアントは、このノードとのセッションを確立し、クラスタ化環境内のリソースにアクセスできる。図１に関して説明したように、クライアントは、一旦ノードへの接続を確立すると、同じノードとのその接続を維持しようと試みる。これにより、クライアントが１つのノードから別のノードに接続を転送する際に発生し得る状態情報の伝送が抑えられる。そのような諸実施形態では、クライアントが、例えば、ネットワーク障害またはクライアントクラッシュなどのエラーを起因として、ノードとの接続を切った場合、クライアントは、エラーからの回復後、同じノードに再接続しようと試みることがある。
【００３２】
[0035]しかしながら、クライアントが同じノードに再接続することは必ずしもできるとは限らない。例えば、ノードに障害が生じた場合、クライアントは、ノードとの接続性を失った場合、またはノードが管理上の目的で（例えば、負荷バランスの要件、ノードのパッチなどを起因として）利用可能でない場合、クライアントは、その接続を異なるノードを介してクラスタ化環境へ再確立することができる。図３は、クライアントがクラスタ化環境内のノード間の接続を転送する際に行うことができる方法３００の一実施形態である。
【００３３】
[0036]フローは動作３０２から開始し、ここで、クライアントは、新規ノードとの接続が求められていることを判定する。例えば、ネットワークまたはノードの障害を起因としてノードとの接続を失うと、クライアントは、クラスタ化環境内の同じノードに再接続することはできないと判定することができる。別の実施形態では、クライアントは、ノードからの性能情報を受信することができる。性能情報に基づいて、クライアントは、より良いサービスをクライアントに提供することができる別のノードに接続を転送するように決めることができる。例えば、クライアントは、ノードが重いトラフィック状態に置かれていることを示す情報を受信することができる。そのような状況では、クライアントは、別のノードに再接続することが求められていないこともあるが、任意選択で、性能上の理由でそうするように決めてもよい。同様に、ノードからの性能情報を受信せずに、例えば、ノードが要求を実行するのにどれだけ長くかかるのかを監視することによって、クライアントは、自身でこの情報を判定してもよい。
【００３４】
[0037]別の実施形態では、ノードは、クライアントがその接続をクラスタ内の異なるノードに転送することを求めることができる。例えば、ノードがパッチまたは負荷バランスの目的でオフラインにしようとしている場合、ノードは、その接続を異なるノードに転送するようにクライアントに求めることができる。そのような諸実施形態では、ノードは、クライアントがその接続を転送しなくてはならないことを示すメッセージをクライアントに送信することができる。そのような通信を実行する諸実施形態は、その全体が参照によって本明細書に組み込まれている２０１１年３月２９日に出願された「Ｐｒｏｖｉｄｉｎｇ  ａ  Ｗｉｔｎｅｓｓ  Ｓｅｒｖｉｃｅ（ウィットネスサービスの提供）」という名称の同一出願人による同時係属中の特許出願（米国特許出願第１３／０７４，９２０号）に記載されている。
【００３５】
[0038]ノード間の接続転送が求められていることが判定された後、フローは動作３０４へと続く。動作３０４で、クライアントは、クラスタ化環境内の異なるノードに接続しようと試みる。例えば、クライアントは、クラスタ化環境内の１つまたは複数のノードに接続要求を送信することができる。諸実施形態では、クライアントは、方法２００に関して説明したステップのすべてまたはサブセットを実行することによって、クラスタ化環境内の第２のノードに接続することができる。別の実施形態では、クライアントは、クラスタ化環境によって特定のノードに接続するように指向されてもよい。首尾よく試みがなされると、フローは動作３０６へと続き、クライアントは、クラスタ化環境内の第２のノードに接続する。
【００３６】
[0039]しかしながら、クライアントは、先に確立されたセッションを既に有するので、セッションは、異なるノードに転送可能である。動作３０８で、クライアントは、第２のノードにセッションセットアップ要求を送信する。諸実施形態では、セッションセットアップ要求は、クライアントが先に接続を確立したことを示すセッション識別子を含んだメッセージとすることができる。図５に関してさらに論じるように、セッションセットアップ要求の受信に応答して、第２のノードは、先に確立された接続のオーナーシップを取ることができる。方法３００には、慎重なステップとしてセッションセットアップ要求を送信することが記載されているが、当業者には、クライアントは、動作３０４で第２のノードに接続する要求とともにセッションセットアップ要求またはセッション識別子を送信してもよいことが認識されよう。
【００３７】
[0040]スケールアウトされたクラスタ化環境に接続する際、クライアントが用いることができる方法についてこれまで説明してきたが、次に、本開示では、そのような環境内の１つまたは複数のノードによって用いられ得る機能性について説明する。図４は、クラスタ化サーバ環境内の持続的ハンドルを維持し、転送するように、クラスタ化環境内のノードによって実行される方法４００の一実施形態である。例えば、方法４００は、サーバ１０６Ａ、１０６Ｂ、および１０６Ｃなど、クラスタ化サーバ環境（例えば、サーバクラスタ１０６）の一部であるサーバによって実行可能である。フローは動作４０２から開始し、ここで、ノードは、クライアントからの接続要求を受諾し、それによって、ノードとクライアントとの間の接続が確立される。初期接続は、クライアントがこのノードに対して、またはクラスタ化環境内の別のノードに対して先に確立された接続を有していないことを示している。諸実施形態では、ノードは、クライアントの接続要求の一部としてクライアントからセッションセットアップ要求を受信しないとき、またはクライアントとの接続を確立した後間もなく、クライアントとの接続を確立していることを判定することができる。
【００３８】
[0041]フローは動作４０４へと続き、ここで、ノードは、クライアントとのセッションを作成する。動作４０４で、ノードは、そのセッションにセッション識別子を割り当てることができる。セッション識別子は、クラスタ化環境内のすべてのノードにわたってグロバール一意識別子（ＧＵＩＤ）とすることができる。セッションを作成すると、ノードは、クライアントに代わってリソースを割り当て、かつ／またはリソースへの動作を実行することができる。そうする際、例えば、状態情報などのセッション情報が作成され得る。ノードは、セッション情報を格納することができる。状態情報に加えて、ノードは、１つまたは複数のハンドルを格納することができる。例えば、クライアントがファイルを開く場合、ファイルに対するハンドルが、クライアントに提供され得る。ノードは、セッション情報と一緒に、またはセッション情報に加えて、ハンドルを格納することができる。
【００３９】
[0042]フローは動作４０６へと続き、ここで、ノードは、クライアントへのその接続性を失う。例えば、クライアントは、エラー（例えば、ネットワーク接続のクラッシュまたは損失）に悩まされることがある。クライアントが再接続し得ることを予想して、サーバは、動作４０８でセッションおよび／または情報を維持することになる。例えば、ノードは、セッションおよび／または状態情報をローカルメモリに、集中型持続的ストアに、または分散型状態ストアに書き込むことができる。前述したように、クライアントは、単一のノードとの接続を維持しようと試みることになる。諸実施形態では、クライアントは、エラーから回復後、ノードに再接続することができる。再接続すると、ノードは、クライアントが、例えば、クライアントからセッション識別子を受信することによって、先に確立された状態を既に有することを特定することができる。そのような諸実施形態では、維持されたセッション状態により、クライアントは、その先に確立されたセッションを継続することが可能になる。
【００４０】
[0043]しかしながら、ある状況においては、クライアントは、ノードに再接続できないこともある。そうではなく、クライアントは、クラスタ化環境内の異なるノードに再接続することができる。そのような状況の下で、フローは動作４１０へと続き、ここで、ノードは、クラスタ化環境内の別のノードからセッション情報を転送するための要求を受信する。諸実施形態では、別のノードは、クライアントについてのセッションを再確立するために、セッション情報のオーナーシップを要求し、このクライアントは、オーナーシップを要求するノードに接続される。セッションオーナーシップの要求は、方法４００を実行するノードが、所有する、かつ／または維持する先に確立されたセッションを特定するために使用することができるセッション識別子を含み得る。
【００４１】
[0044]セッションオーナーシップの要求を受信すると、フローは動作４１２へと続き、ここで、ノードは先に確立されたセッションと関連付けられるリソースに対して実行される未処理の入力／出力（Ｉ／Ｏ）操作が存在しないことを確実にする。諸実施形態では、未処理のＩ／Ｏ操作が存在する場合、ノードは、これらの操作が完了するのを待ってから、動作４１４へと進む。他の諸実施形態では、ノードは、動作４１０でセッションリソースに対する保留中のＩ／Ｏ操作をキャンセルしてもよい。ノードは、保留中のＩ／Ｏ操作を待つことも、および／またはキャンセルすることもでき、リソース完全性を維持する。
【００４２】
[0045]ノードが、すべてのＩ／Ｏが完了した（またはキャンセルされた）ことを確実にした後、フローは動作４１４へと続く。動作４１４で、ノードは、先の確立されたセッションを無効にする。セッションを無効にすることは、セッションの一部である任意のオープンハンドルをクローズすることを含むことができる。他の諸実施形態では、セッションを無効にすることは、リソースに存在し得る任意のロックを解除することを含み得る。諸実施形態では、セッションの無効化はまた、図１に関して説明した無効化ロジックを含み得る。さらには、諸実施形態では、単一のステップの無効化が、実行されてもよく、ここで、ノードは、ノードが各ファイルハンドルを個々に無効にする必要性をなくすために、先に確立されたセッションについてのすべてのハンドルおよび／またはロックを無効にする。
【００４３】
[0046]先に確立されたセッションが無効にされた後、フローは動作４１６へと続き、ここで、ノードは、セッションのオーナーシップを要求側ノードに転送する。諸実施形態では、セッションのオーナーシップの転送は、セッションに関連するすべての関連リソースのオーナーシップを転送することを含み得る。動作４１６で転送され得る例示的リソースはファイルハンドルであるが、他のリソースのオーナーシップも、動作４１６で転送することができる。さらなる諸実施形態では、セッションに関連するリソースのオーナーシップを転送することは、１つのノードから別のノードへのリソースの転送を含み得る。効率性のため、すべてのセッション情報は、動作４１６でまとめて転送することができ、それによって、ノード間に必要な通信の数が抑えられる。
【００４４】
[0047]図５は、先に確立されたセッションのオーナーシップを要求するために、クラスタ化環境内のノードによって実行される方法５００の一実施形態である。例えば、方法４００は、サーバ１０６Ａ、１０６Ｂ、および１０６Ｃなど、クラスタ化サーバ環境（例えば、サーバクラスタ１０６）の一部であるサーバによって実行可能である。フローは動作５０２から開始し、ここで、ノードは、クライアントの接続を確立する。例えば、ノードは、動作５０２でクライアントから接続要求のための要求を受信することができる。ノードは、接続要求を受諾し、クライアントに接続することができる。
【００４５】
[0048]フローは動作５０４へと続き、ここで、ノードは、クライアントがクラスタ化環境内の別のノードとのセッションを先に確立したことを特定する。諸実施形態では、ノードは、クライアントからセッションセットアップ要求を受信することができる。セッションセットアップ要求は、接続要求とともに、またはクライアントに接続後、受信され得る。諸実施形態では、セッションセットアップ要求は、先に確立された接続を特定するセッション識別子を含んでいる。
【００４６】
[0049]フローは動作５０６へと続き、ここで、ノードは、クライアントの先に確立されたセッションを現在所有する、クラスタ化環境内の第２のノードにオーナーシップ要求を送信する。オーナーシップ要求は、先のセッションと関連付けられたハンドルを無効にし、かつセッション情報をノードに転送する命令を含んでいることができる。諸実施形態では、オーナーシップ要求は、セッションセットアップ要求および／または動作５０４で受信したセッションｉｄを含み得る。
【００４７】
[0050]フローは動作５０８へと続き、ここで、ノードは、先に確立されたセッションについてのセッションおよび／または状態情報を受信する。諸実施形態では、セッションおよび／または状態情報は、第２のノードから、中央リポジトリから、またはクラスタ環境内の別の場所から受信可能である。別の実施形態では、動作５０８でセッションおよび／または状態情報を受信するのではなく、ノードは、動作５０８で集中型リポジトリ内に常駐するセッションおよび／または状態情報にアクセスすることが許可され得る。次いで、フローは動作５１０へと続き、ここで、ノードは、受信したかつ／またはアクセスしたセッションもしくは状態情報を使用して、クライアントのセッションを再確立し、クライアントがクラスタ化環境内のリソースにアクセスし続けることを可能にする。
【００４８】
[0051]方法３００〜５００は、単に諸実施形態により実行可能な動作フローのいくつかの例にすぎない。諸実施形態は、図３〜図５に関して上記に与えた具体的な説明に限定するものでなく、追加の動作を含み得る。さらには、示されている動作のステップは、他のステップに組み合わせられても、かつ／または再構成されてもよい。さらには、より少ないステップまたは追加のステップが、図３〜図５に説明されている方法と共に使用されても用いられてもよい。
【００４９】
[0052]図６は、本明細書に説明されている諸実施形態を実施するために使用され得る汎用コンピュータシステム６００を示している。コンピュータシステム６００は、コンピューティング環境のほんの一例にすぎず、コンピュータおよびネットワークのアーキテクチャの使用または機能性の範囲についていかなる限定をも提案するように意図されるものでない。また、コンピュータシステム６００は、例示的なコンピュータシステム６００に示されている構成要素のうちのいずれかのものまたは構成要素の組合せに関連する何らかの依存性または要件を有するものと解釈すべきものでもない。諸実施形態では、システム６００は、図１に関して上述したクライアントおよび／またはサーバとして使用され得る。
【００５０】
[0053]システム６００は、そのもっとも基本的な構成では、典型的には、少なくとも１つの処理装置６０２およびメモリ６０４を含む。コンピューティングデバイスの正確な構成およびタイプに応じて、メモリ６０４は、揮発性であっても（ＲＡＭなど）、非揮発性であっても（ＲＯＭ、フラッシュメモリなど）、または何らかの組合せであってもよい。このもっとも基本的な構成は、図６に破線６０６で示されている。システムメモリ６０４は、本明細書に開示されるスケーリングされたクラスタ環境の方法につながるための命令などの命令６２０、およびストレージ６０８などのストレージとともにファイルストレージシステムに格納され得るセッション状態情報などのデータ６２２を格納する。
【００５１】
[0054]本明細書に使用されるコンピュータ可読媒体という用語は、コンピュータストレージ媒体を含み得る。コンピュータストレージ媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報を格納するために、任意の方法および技術で実装される揮発性および不揮発性の、取外し可能および取外し不可能な媒体を含み得る。システムメモリ６０４、取外し可能なストレージおよび取外し不可能なストレージ６０８はすべて、コンピュータストレージ媒体の例（例えば、メモリストレージ）である。コンピュータストレージ媒体として、ＲＡＭ、ＲＯＭ、電気的消去可能なリードオンリメモリ（ＥＥＰＲＯＭ）、フラッシュメモリもしくは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）もしくは他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、または情報を格納するために使用可能な、かつコンピューティングデバイス６００によってアクセス可能な任意の他の媒体を挙げることができるが、これらに限定されるものではない。任意のそのようなコンピュータストレージ媒体は、デバイス６００の一部とすることができる。コンピューティングデバイス６００はまた、キーボード、マウス、ペン、音声入力デバイス、タッチ入力デイバスなどの入力デバイス（複数可）６１４を有することもできる。ディスプレイ、スピーカ、プリンタなどの出力デバイス（複数可）６１６もまた含められ得る。前述のデバイスは、例であり、他のデバイスも使用可能である。
【００５２】
[0055]本明細書に使用されるコンピュータ可読媒体という用語はまた、通信媒体を含み得る。通信媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、または搬送波もしくは他の輸送機構など、変調されたデータ信号における他のデータによって具現化可能であり、任意の情報送達媒体を含んでいる。用語「変調されたデータ信号」は、信号内の情報を符号化するようなやり方で、１つまたは複数の特性が設定または変更された信号を説明することができる。限定するものではないが、例として、通信媒体は、ワイヤードネットワークまたは直接ワイヤード接続などのワイヤード媒体、ならびに音響、無線周波数（ＲＦ）、赤外線、および他のワイヤレス媒体など、ワイヤレス媒体を含み得る。
【００５３】
[0056]本発明の諸実施形態は、システムオンチップ（ＳＯＣ）を介して実施可能であり、ここで、図６に示されている構成要素の各々または多くは、単一の集積回路上に集積化され得る。そのようなＳＯＣデバイスは、１つまたは複数の処理装置、グラフィック装置、通信装置、システム可視化装置、および様々なアプリケーション機能を含み得、それらのすべては、単一の集積回路としてチップ基板上に集積化される（または焼かれる）。リソースへの継続的なアクセスを可能にすることに関して本明細書に説明されている機能は、ＳＯＣを介して動作する際、単一の集積回路（チップ）上のコンピューティングデバイス／システム６００の他の構成要素と集積化される特定用途向けのロジックを介して動作し得る。
【００５４】
[0057]本明細書全体を通じて、具体的に説明された特徴、構造、または特性が少なくとも１つの実施形態に含まれていることを意味する「１つの実施形態」または「一実施形態」について参照がなされている。したがって、そのようなフレーズの使用では、まさに１つの実施形態というよりも複数の実施形態が示されている場合がある。さらには、説明された特徴、構造、または特性は、１つまたは複数の実施形態において、ならんかの適切なやり方で組み合わせることも可能である。
【００５５】
[0058]しかしながら、当業者には、諸実施形態が、具体的な詳細のうちの１つまたは複数がなくても、または他の方法、リソース、情報などを用いて実施可能であることが認識できる。他の事例では、よく知られている構造、リソース、または動作については、単に諸実施形態の態様を曖昧にしないようにするために詳細に図示または説明していない。
【００５６】
[0059]例示的な諸実施形態および適用例を図示し説明してきたが、諸実施形態は、上述の正確な構成およびリソースに限定されるものでないことを理解すべきである。当業者に明らかな様々な修正、変更、および変形は、特許請求される諸実施形態の範囲から逸脱することなく、本明細書に開示される方法ならびにシステムの構成、動作、および詳細において行われ得る。
【図１】
2014532210.tif 000003
【図２】
2014532210.tif 000004
【図３】
2014532210.tif 000005
【図４】
2014532210.tif 000006
【図５】
2014532210.tif 000007
【図６】
2014532210.tif 000008
【国際調査報告】
2014532210.tif 000009
2014532210.tif 000010
2014532210.tif 000011