(57)【要約】【課題】  セッション管理を行っているサーバの一部を計画的に停止する場合に、そのサーバへの継続リクエストを別のサーバへ振り分け処理を継続させる。【解決手段】  本発明は停止時間超過後の停止対象サーバ宛の継続リクエストを判定して、新規振り分けサーバを決定し、新規振り分けサーバが停止対象サーバ上のメモリ情報を取得し、その後に継続リクエストを新規振り分けサーバに送信する。また、停止時間を一定時間経過しても継続リクエストを出さないクライアントを特定して、強制的にメモリ情報を移動する。【選択図】  図１
2012108685.tif 000002
【特許請求の範囲】
【請求項１】
複数サーバと複数クライアントからの接続要求を分散して前記複数サーバに振り分けを行う負荷分散装置を備えた負荷分散システムであって、
前記複数サーバのうち特定のサーバを計画的に停止させるために停止対象サーバ、停止時間およびメモリ情報強制移動までの待ち時間を入力できる入力手段と、
前記停止対象サーバの停止予定時間を監視し停止予定時間になると前記停止対象サーバに接続禁止フラグをセットし新規の振り分けサーバを決定する振り分け管理手段と、
前記クライアントからの接続要求を解析して前記停止対象サーバへ接続するか新規サーバへ振り分けるか等の処理内容を分類する接続情報管理手段と、
前記接続情報管理手段によって振り分けるサーバの変更が必要と判定された場合に前記振り分け管理手段によって選択された前記サーバに対して前記停止対象サーバからメモリ情報を取得するよう指示を出し、メモリ情報の移動が終了すると保留していた継続リクエストを新規サーバへ送信するサーバ決定手段と、
前記サーバ決定部から送付されたデータをＬＡＮへ送信する送受信手段と、
前記サーバ決定部からメモリ情報取得の指示を受け取ると前記停止対象サーバに対してメモリ情報取得リクエストを発行するメモリ情報取得手段と、
前記メモリ情報取得手段からメモリ情報移動のリクエストを受け取るとメモリ情報を返信するメモリ情報返信手段を備えた負荷分散システム。
【請求項２】
請求項１の負荷分散システムにおいて、前記入力手段によって入力された待ち時間を経過しても継続リクエストが送信されない場合に前記負荷分散装置内に記録されている接続情報に基づきメモリ情報の移動が必要な前記クライアントを特定して前記クライアント用に確保されている前記停止対象サーバ上のメモリ情報を強制的に、新規振り分け先に決した前記サーバに移動し、前記負荷分散装置内の接続情報を変更する手段とを備えた負荷分散システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は複数クライアント、前記クライアントからのリクエストをセッション管理している複数サーバと前記複数サーバの負荷を分散させる負荷分散装置から構成される負荷分散システムに関する。
【背景技術】
【０００２】
複数クライアント、複数サーバと負荷分散装置から構成される負荷分散システムにおいて、クライアントはサーバ上のページを順に読み出し、それぞれのページで必要なデータ入力してサーバに送信する。このため、サーバ上で稼働するアプリケーションはクライアントからのリクエストと、メモリ上のデータを関連づけるためセッション管理している。セッション管理の方法としては各サーバがページごとにセッションＩＤを生成してレスポンスデータに埋め込んでクライアントに返し、クライアントは次のリクエスト時にサーバが埋め込んだセッションＩＤをリクエストデータに入れてサーバに送信する。
【０００３】
クライアントから送信されたセッションＩＤを調べることで、認証が終了しているのか、自身が生成したセッションＩＤなのか等を判断することができ、正当なセッションＩＤを持つリクエストの処理を進めて行くことができる。しかし、セッション管理されているシステムにおいては、メンテナンス等で特定のサーバを停止したい場合に、新規のリクエストは振り分け先を停止予定サーバ以外にすることで、クライアントへの影響を防止出来るが、停止時間前からの継続リクエストは他のサーバに振り分けることができない。単純に振り分け先を変更すると、変更後のサーバにリクエストしたクライアントのセッション情報(メモリ情報)がないためエラーになってしまう。
【０００４】
そこで継続リクエストに対応するセッション情報を他のサーバに移動し、移動したサーバへリクエストを割り振る方法が特許文献１で開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−２１９９６４
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、従来のセッション情報移動方法による振り分け先変更には以下のような問題がある。従来の技術では停止時間超過後の継続リクエストは、一度それまで接続していたサーバに振り分け当該サーバで処理させる。処理終了後に当該サーバから次回振り分けるサーバへセッション情報を移動する。セッション情報の移動が終了すると当該サーバはレスポンスデータ内に負荷分散装置が振り分けサーバを識別するCookie情報を埋め込みクライアントに返す。このCookie情報には次回の振り分け先サーバが記載されている。
【０００７】
この方法ではサーバがCookieを生成してレスポンスデータに埋め込むことになり、一般的に利用されている負荷分散装置がCookieを生成する機能を使用できなくなる。一般的には負荷分散装置はクライアントから最初のリクエストが届くと振り分けるサーバを決定してサーバにリクエストを送信する。サーバが処理を行いレスポンスデータをクライアントに返信するときに負荷分散装置がCookieを生成してレスポンスデータ内に埋め込む。クライアントは次回のリクエスト時に負荷分散装置が生成したCookieを付加してリクエストを送信してくる。負荷分散装置はリクエスト中のcookieを解析して接続すべきサーバを決定し、Cookieを削除してリクエストをサーバに送信する。
【０００８】
このような処理を行っている中でサーバが振り分け先を指示するCookieをレスポンスデータ内に埋め込んで負荷分散装置に理解させるには、負荷分散装置でのCookie生成を停止しなければ、２つの異なる振り分け先がレスポンスデータ内に入る可能性が高く正確な振り分けができない。
【０００９】
また従来の技術は停止時間を超過してから継続リクエストが来た場合はセッション情報の移動が可能であるが、停止時間超過後しばらくリクエストが来ない場合にはセッション情報を移動することができず、クライアントを救済するにはサーバを停止できない。
【００１０】
強制的に全てのセッション情報を移動したとしても次の振り分け先を示したCookieをクライアントに返す手段がないため、クライアントは引き続き停止予定サーバに振り分けられる。また、新たに振り分け先に選択されたサーバは、自身の中で管理していない新しいクライアントから突然リクエストが届くため処理できなくなってしまう。
【００１１】
本発明はこのような問題点を解決するためになされるものであり、クライアントに影響を与えることなく継続リクエストを別サーバに振り分けることができる負荷分散システムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記の目的を達成するために、本発明では以下のような手段を講じる。
【００１３】
請求項１の発明は、複数クライアントと、複数サーバと、複数クライアントからのリクエストを分散してサーバに振り分ける負荷分散装置を備え、停止対象サーバの選択と停止時間およびメモリ情報強制移動までの待ち時間を入力することのできる入力手段と、停止対象サーバの停止予定時間を監視し停止予定時間になると停止対象サーバに接続禁止フラグをセットし新規の振り分けサーバを決定する振り分け管理手段と、クライアントからの接続要求を解析して停止対象サーバへ接続するか新規サーバへ振り分けるか等の処理内容を分類する接続情報管理手段と、前記接続情報管理手段によって振り分けるサーバの変更が必要と判定された場合に前記サーバ振り分け管理手段によって選択されたサーバに対して停止対象サーバからメモリ情報を取得するよう指示を出し、メモリ情報の移動が終了すると保留していた継続リクエストを新規サーバへ送信するサーバ決定手段と、前記サーバ決定部から送付されたデータをＬＡＮへ送信する送受信手段と、前記サーバ決定部からメモリ情報取得の指示を受け取ると停止対象サーバに対してメモリ情報取得リクエストを発行するメモリ情報取得手段と、前記メモリ情報取得手段からメモリ情報取得のリクエストを受け取るとメモリ情報を返信する手段を備える。
【００１４】
請求項２の発明は、入力手段によって入力された待ち時間を経過しても継続リクエストが送信されない場合に負荷分散装置内に記録されている接続情報に基づきメモリ情報の移動が必要なクライアントを特定して、そのクライアント用に確保されている停止対象サーバ上のメモリ情報を強制的に新規振り分け先に決定したサーバに移動する手段を備える。
【発明の効果】
【００１５】
本発明によれば停止時間超過後に停止対象サーバへの継続リクエストを中断することな
く、新規に選択したサーバに振り分け、処理を継続できる。
【図面の簡単な説明】
【００１６】
【図１】負荷分散システムの構成例を示す構成図
【図２】負荷分散装置のブロック図
【図３】負荷分散装置機能ブロック図
【図４】送受信部のフローチャート
【図５Ａ】接続情報管理部のフローチャート１
【図５Ｂ】接続情報管理部のフローチャート２
【図６Ａ】サーバ決定部のフローチャート１
【図６Ｂ】サーバ決定部のフローチャート２
【図６Ｃ】サーバ決定部のフローチャート３
【図６Ｄ】サーバ決定部のフローチャート４
【図７】振り分け管理部のフローチャート
【図８】状態管理テーブル
【図９】サーバ管理テーブル
【図１０】サーバ間通信状態テーブル
【図１１】概略動作のシーケンス図
【発明を実施するための形態】
【００１７】
以下に、本発明を実施するための形態について図面を参照しながら説明する。
【実施例１】
【００１８】
本実施の形態に係わる負荷分散システムは図１のように複数のクライアント１００（＃１，＃２，・・・＃ｎ）と複数のサーバ１０２（＃１，＃２，・・・＃ｎ）とクライアント１００（＃１，＃２，・・・＃ｎ）からの接続要求をサーバ１０２（＃１，＃２，・・・＃ｎ）の負荷を分散させるように各サーバに振り分ける負荷分散装置１０１を備えた負荷分散システム１０に適用される。
【００１９】
クライアントがサーバ上のページを順次呼び出し、各ページでデータを入力していくタイプのアプリケーションが多いため、業務開始から終了まで同一クライアントからのリクエストは同一サーバに接続する必要がある。このようなタイプのアプリケーションで業務途中に他のサーバに接続するとクライアントが入力したデータが無くエラーになってしまう。このように同一クライアントからのリクエストを同一サーバに接続することをセッション維持という。
【００２０】
このようにセッション維持を行っている業務システムで、メンテナンスのために特定サーバの停止を予定している場合において、負荷分散システム１０は停止時間監視を行い、停止予定時間になった場合に停止予定サーバに接続禁止フラグをセットし、新規リクエスト、継続リクエスト共に、以降そのサーバに接続することを禁止する。また、負荷分散アルゴリズムにより選択対象になっているサーバに対して接続禁止フラグをセットした場合は、そのサーバは選択対象から外し、新規振り分け先として別のサーバを決定する。
【００２１】
新規振り分け先として決定した別のサーバを以下、新サーバという。
【００２２】
また接続禁止フラグをセットしたサーバ宛に継続リクエストが届いた場合に、新サーバに対して、それまで接続していたサーバ（以下、旧サーバという）からメモリ情報を取得する指示を出す。メモリ情報取得の指示を受けて新サーバは旧サーバにメモリ情報取得の要求を出しメモリ情報を取得する。メモリ情報取得完了後に負荷分散装置１０１は保留していていたクライアントからの継続リクエストを新サーバに送信する。
【００２３】
クライアント１００（＃１，＃２，・・・＃ｎ）、負荷分散装置１０１およびサーバ１０２（＃１，＃２，・・・＃ｎ）はＬＡＮ１０３に接続されルータ等を介して複数のサブネットから構成されることもある。これを実現するために負荷分散装置１０１は図２および図３に示す構成をしている。
【００２４】
まず、本実施例の動作概要を図１１を使用して説明する。
【００２５】
ここでの説明は旧サーバ１２０３が停止予定サーバであり、シーケンス５５とシーケンス５６の間で停止時間に達した場合の例である。
【００２６】
セッション維持を行っている業務システムにおいて、１２０１はリクエストを送信するクライアント、１２０２は処理を振り分ける負荷分散装置、１２０３は旧サーバ、１２０４は新サーバである。クライアント１２０１から負荷分散装置１２０２の仮想ＩＰアドレス宛に接続要求が来ると接続を確立する（シーケンス５０）。接続確立後にクライアント１２０１から新規のリクエストが仮想ＩＰアドレス宛に送信される（シーケンス５１）。負荷分散装置１２０２は新規のリクエストを受け取ると、旧サーバ１２０３に接続要求を出し接続を確立（シーケンス５２）し、クライアントからのリクエストを旧サーバ１２０３に送信する（シーケンス５３）。旧サーバはリクエストを受け取ると、それに応じてレスポンスを負荷分散装置１２０２に返信する（シーケンス５４）。負荷分散装置１２０２は旧サーバ１２０３からのレスポンスをクライアント１２０１に返信する（シーケンス５５）。
【００２７】
この時点で旧サーバ１２０３は停止時間に達するため振り分け禁止になる。そして新サーバ１２０４が新規の振り分けサーバとして決定される。
【００２８】
クライアントは継続のリクエスト（シーケンス５６）を仮想ＩＰアドレス宛に送信するが、旧サーバ１２０３への振り分けは禁止になっているので、負荷分散装置１２０２はリクエストを一旦保留して、新サーバ１２０４に対してリクエストしてきたクライアントのために確保された旧サーバ上のメモリ情報を取得するように指示を出す（シーケンス５７、シーケンス５８）。新サーバ１２０４は指示に従い、仮想ＩＰアドレス宛に旧サーバのメモリ情報取得の接続要求を出す（シーケンス５９）。接続が確立するとメモリ情報取得のリクエストを同じく仮想ＩＰアドレス宛に送信する（シーケンス６０）。
【００２９】
負荷分散装置１２０２は新サーバからのメモリ取得リクエストを受け取ると、旧サーバに対して接続要求を出し接続を確立する（シーケンス６１）。接続確立後にメモリ取得リクエストを旧サーバ１２０３に送信する（シーケンス６２）。旧サーバ１２０３はリクエストを受け取るとリクエストデータ内にあるクライアント１２０１のセッション情報を見て、対応するメモリ情報をレスポンスする（シーケンス６３）。このレスポンスを新サーバが受け取ることで（シーケンス６４）、メモリ情報の取得ができる。
【００３０】
メモリ情報の取得が終了すると負荷分散装置１２０２は、新サーバに接続要求を出して接続を確立する（シーケンス６５）。その後保留していたクライアントからリクエストを送信する（シーケンス６６）。リクエストを受け取った新サーバ１２０４は処理を行いレスポンスを返信する（シーケンス６７）。負荷分散装置１２０２は新サーバ１２０４からのレスポンスをクライアントに返信する（シーケンス６８）。
【００３１】
以下に本実施例の詳細を説明する。
【００３２】
図２は負荷分散装置１０１の概略構成図であり、クライアント１００（＃１，＃２，・
・・＃ｎ）およびサーバ１０２（＃１，＃２，・・・＃ｎ）をＬＡＮ１０３で接続するためのスイッチ部２００、スイッチ部２００を制御するコントローラ２０１、クライアントからの接続要求に対する振り分けサーバ決定、新サーバに対する旧サーバからのメモリ情報の取得指示、停止予定サーバの停止予定時間の監視、パケットを解析して処理内容を決定するＣＰＵ部２０２、ＣＰＵ部２０２が使用するメモリ２０３，各種情報を格納しておくディスク部２０４から構成される。
【００３３】
図３はパケットの送受信、パケットの解析、振り分け先サーバの決定、停止時間監視、設定情報入力を行う負荷分散装置１０１に備えられる機能ブロック図である。送受信部３０１の動作は図４のフローチャートを使用して説明する。
【００３４】
負荷分散装置１０１に入力される負荷分散装置１０１の仮想ＩＰアドレス宛のパケット、サーバからのレスポンスおよび負荷分散装置１０１を通過するパケットを受け取り（ステップＳ１）、接続情報管理部３０２に送信する（ステップＳ２）。また、サーバ決定部３０３で処理されたパケットおよびデータを受け取り（ステップＳ３）、コネクション確立済みであるかを図８の状態管理テーブルの接続元ＩＰアドレス８０１および接続元ポート番号８０２を参照して判定する（ステップＳ４）。接続元ＩＰアドレス８０１および接続元ポート番号８０２はコネクション確立直後に登録するため、登録されていれば確立済みであると判定する。
【００３５】
コネクションが確立済みの場合はサーバ決定部３０３から受け取ったパケットをＬＡＮ１０３に送信する（ステップＳ５）。コネクションが確立済みでない場合はクライアントまたはサーバとコネクション確立処理を行い（ステップＳ６）、サーバ決定部３０３から受け取ったデータをＬＡＮ１０３に送信する（ステップＳ５）。
【００３６】
コネクション確立の例としてＴＣＰの３ウェイハンドシェイクがある。
【００３７】
接続情報管理部３０２の動作は図５Ａ、図５Ｂのフローチャートを使用して説明する。
【００３８】
接続情報管理部３０２は、送受信部３０１から送られたパケットを受け取り（ステップＳ１１）、パケットを解析する（ステップＳ１２）。まず負荷分散装置１０１の仮想ＩＰアドレス宛のパケットか否かを判定する（ステップＳ１３）する。
【００３９】
仮想ＩＰアドレスはＶＩＰと略して表記されることもありクライアント１００（＃１，＃２，・・・＃ｎ）に対してサーバ１０２（＃１，＃２，・・・＃ｎ）の複数ＩＰアドレスを１つのＩＰアドレスと見せる役割を持つ。
【００４０】
仮想ＩＰアドレス宛で無い場合は負荷分散装置１０１を通過するパケットかサーバからのレスポンスであるため、パケットを通過させるフォワードフラグに１をセット（ステップＳ２０）して、サーバ決定部３０３に通知する（ステップＳ１９）。
【００４１】
サーバ決定部３０３の動作を図６Ａ、図６Ｂ、図６Ｃのフローチャートを使用して説明する。
【００４２】
サーバ決定部３０３は、接続情報管理部３０２から処理内容フラグをセットしたデータを受け取る（ステップＳ４１）とセットされたフラグの解析を行う（ステップＳ４２）。
【００４３】
フォワードフラグが１の場合（ステップＳ４３）負荷分散装置１０１を通過するパケットか、サーバからのレスポンスであるかを切り分ける（ステップＳ４４）。
【００４４】
ステップ４４での判定の結果、サーバからのレスポンスでなかった場合、負荷分散装置１０１を単純に通過するパケットであるので、何も処理を行わずに送受信部３０１に通知する（ステップＳ４６）。サーバからのレスポンスか否かは図８の状態管理テーブルの接続先ＩＰアドレス８０４と接続先ポート番号８０５を参照し登録されているＩＰアドレスおよびポート番号が、ソースＩＰアドレスおよびソースポート番号として使用されているかどうかで判定できる。
【００４５】
負荷分散装置１０１はクライアントから仮想ＩＰアドレス宛のリクエストを受信すると、宛先ＩＰアドレスを選択したサーバのＩＰアドレスに変換してサーバに送信する。レスポンス時はソースＩＰアドレスはサーバのＩＰアドレス、宛先ＩＰアドレスはクライアントのＩＰアドレスが指定されている。ポート番号についても同様である。このため、接続したサーバのＩＰアドレスがソースＩＰとして使用されていれば、サーバからのレスポンスと判定できる。
【００４６】
ステップ４４での判定の結果、レスポンスであればレスポンス返送処理をおこなう（ステップＳ４５）。サーバからのレスポンスには、旧サーバからのメモリ情報移動のレスポンス（例：シーケンス６３）と、クライアントからのリクエストに対するサーバからのレスポンス（例：シーケンス５４）の２種類がある。このため、どちらのレスポンスであるかを切り分ける。
【００４７】
レスポンスのソースＩＰアドレスと接続先ＩＰアドレス８０４、ソースポート番号と接続先ポート番号８０５を比較し、一致していて、かつ宛先ＩＰアドレスが負荷分散対象サーバ１０２（＃１，＃２，・・・＃ｎ）であれば、旧サーバからのメモリ情報移動のレスポンスと判定できる。
【００４８】
宛先ＩＰアドレスが負荷分散対象サーバ１０２（＃１，＃２，・・・＃ｎ）でなければクライアントのリクエストに対するレスポンスであると判定できる。
【００４９】
クライアントからのリクエストに対するレスポンス返送処理としては、ソースＩＰアドレスをサーバのＩＰアドレスから負荷分散装置１０１の仮想ＩＰアドレスへの付け替えを行う。ＭＡＣアドレスについても同様の付け替え処理を行い、送受信部３０１に通知する（ステップＳ４６）。クライアントは負荷分散装置１０１の仮想ＩＰアドレス宛にリクエストを出すため、レスポンス時にソースＩＰアドレスを仮想ＩＰアドレスに変換しないとクライアントは別の装置からレスポンスが来たと認識しレスポンスを受け取れない。ＭＡＣアドレスについても同様である。
【００５０】
メモリ情報移動のための旧サーバからのレスポンス返送処理も同じである。
【００５１】
接続情報管理部３０２は、ステップ１３での判定の結果、仮想ＩＰアドレス宛のパケットである場合はクライアントからの接続要求か、メモリ情報取得のための新サーバからの接続要求であるから、ソースＩＰアドレスが負荷分散対象サーバ１０２（＃１，＃２，・・・＃ｎ）のＩＰアドレスであるか否かを判定する（ステップＳ１４）。負荷分散対象サーバ１０２（＃１，＃２，・・・＃ｎ）のＩＰアドレスは図９のサーバ管理テーブルの接続先サーバＩＰアドレス９０２を参照することで取得する。
【００５２】
ソースＩＰアドレスが負荷分散対象サーバ１０２（＃１，＃２，・・・＃ｎ）のアドレスでない場合は、クライアント１０１（＃１，＃２，・・・＃ｎ）からの接続要求であるで、新規リクエストか継続リクエストかを判定（ステップＳ１５）する。状態管理テーブルの接続先サーバ名８０３〜接続先ポート番号８０５は新規クエストをサーバに振り分けたときに登録されるので、登録されていなければ新規リクエストであると判定できる。
【００５３】
ステップＳ１５での判定の結果、新規リクエストでなければ継続リクエストになるので、振り分け管理部３０４からの通知を元に停止時間が超過しているか否かを判定（ステップＳ１６）する。停止時間になると振り分け管理部３０４より通知がくるため、通知の有無で停止時間超過を判定する。
【００５４】
停止時間に達していなければ継続リクエストの処理を実行するため負荷分散フラグに１をセットし（ステップＳ１８）、サーバ決定部３０３に通知する（ステップＳ１９）。
【００５５】
サーバ決定部３０３は、受け取ったデータのフラグを解析し、負荷分散フラグが１であることを認識し（ステップＳ６７）、状態管理テーブルの接続元ＩＰアドレス８０１と接続元ポート番号８０２を参照して、どのクライアントからのリクエストであるか特定し（ステップＳ６８）、８０４を参照して接続するサーバを特定する（ステップＳ６９）。
【００５６】
サーバ決定後はサーバへの転送処理としてソースＩＰアドレスの変換およびＭＡＣアドレスの変換を行い（ステップＳ７０）、負荷分散処理フラグを０にして（ステップＳ７１）、送受信部３０１へ通知する（ステップＳ４６）。
【００５７】
接続情報管理部３０２は、ステップＳ１６の判定の結果、停止時間を超過している場合は、振り分け先を変更する必要があるため、クライアントからの継続リクエストをメモリまたはディスク上に、一時保留して、サーバ変更フラグに１をセットし（ステップＳ１７）、サーバ決定部３０３に通知する（ステップＳ１９）。一時保留した継続リクエストは新サーバと旧サーバ間のメモリ移動終了後に処理される。
【００５８】
サーバ決定部３０３でサーバ変更フラグが１と判定されると（ステップＳ８１）、サーバ管理テーブルの振り分け対象サーバ９０４を参照し（ステップＳ８２）、振り分け先サーバを決定する（ステップＳ８３）。選択されるサーバは振り分け対象サーバ９０４で１がセットされているサーバであり、ラウンドロビンの場合は順番に選択するサーバが変更される。なお、負荷分散方式は他の方式を指定しても良い。
【００５９】
振り分け管理部３０４の動作を図７のフローチャートを使用して説明する。
【００６０】
振り分け管理部３０４は、入力部３０５を通して入力された停止時間を監視していて（ステップＳ２０１）、停止時間になると接続情報管理部３０２とサーバ決定部３０３に停止時間超過の通知を出し（ステップＳ２０２）、停止対象サーバに対して図９のサーバ管理テーブルの接続禁止フラグ９０５に９をセットする（ステップＳ２０３）。接続禁止フラグをセットしたサーバが、選択対象（振り分け対象サーバ９０４に１がセットされている）になっている場合は（ステップＳ２０４）、振り分けサーバ９０４に０をセットする。振り分け対象サーバ９０４を１から０に変更し選択対象サーバが無くなった場合、新しい選択対象として次のサーバが選択されるように１をセットする（ステップＳ２０５）。
【００６１】
サーバ決定部３０３は、新サーバ決定後に新サーバに対して旧サーバのメモリ上にある継続リクエストを出したクライアントのメモリ情報を取得するための指示を行うサーバ間通信起動パケットを作成する（ステップＳ８４）。この指示パケットには、保留中のクライアントリクエストから取り出した、サーバが発行したセッション情報およびサーバ決定部３０３がセットするメモリ情報取得指示フラグが含まれる。サーバ間通信起動パケット作成後にサーバ変更フラグを０にセットして（ステップＳ８５）、送受信部３０１に通知する（ステップ４６）。
【００６２】
接続情報管理部３０２は、ステップＳ１５での判定の結果、新規リクエストであれば新規負荷分散フラグに１をセットして（ステップＳ２１）、サーバ決定部３０３に通知する。
【００６３】
例えばＰＯＳＴやＧＥＴといったＨＴＴＰメソッドを見てリクエストと判定し、図８の状態管理テーブルの接続先サーバ名８０３〜接続先ポート番号８０５が登録されていなければ新規と判定する。
【００６４】
接続先サーバ名８０３は振り分けを行ったサーバ名であり負荷分散装置１０１の設定情報で定義される。接続先サーバＩＰアドレス８０４は振り分けを行ったサーバのＩＰアドレスであり、この情報も負荷分散装置１０１の設定情報で定義される。接続先ポート番号８０５は接続を行ったサービスポート番号であり８０はＨＴＴＰを示す。この接続先サーバ名８０３〜接続先ポート番号８０５は新規クエストをサーバに振り分けたときに登録されるので、登録されていなければ新規リクエストであると判定できる。
【００６５】
サーバ決定部３０３で新規負荷分散フラグが１と判定された（ステップＳ６１）場合は、図９のサーバ管理テーブルの仮想ＩＰアドレス９０１を参照して宛先に指定されている仮想ＩＰアドレスを選択する。振り分け対象サーバは仮想ＩＰアドレス毎に指定されるので、選択した仮想ＩＰアドレス９０１のグループに属するサーバ９０２を選択するために、振り分け対象サーバ９０４を参照および更新する（ステップＳ６２）。振り分け対象サーバ９０４には選択するサーバが記載されており、振り分け対象サーバ９０４が１になっているサーバが選択される（ステップＳ６３）。サーバ選択後は選択したサーバを０にして、状態管理テーブルの負荷分散方式９０３の負荷分散方式に基づき次回選択されるサーバに１をセットする。
【００６６】
仮想ＩＰアドレス９０１、サーバ名９０２、負荷分散方式９０３の情報は負荷分散装置１０１の設定情報に定義されているため、設定情報から抽出して状態管理テーブルを作成する。
【００６７】
サーバ決定後は状態管理テーブルの接続先サーバ名８０３〜接続先ポート番号８０５に接続するサーバ情報を登録して（ステップ６４）、サーバとの接続処理を行う（ステップＳ６５）。クライアントは負荷分散装置１０１の仮想ＩＰアドレス宛にリクエスト送信するため、宛先のＩＰアドレスとＭＡＣアドレスを選択したサーバのアドレス変換する必要があるため、アドレス変換処理を行う。ステップＳ６５の処理終了後は新規負荷分散フラグを０にして（ステップＳ６６）、送受信部３０１に通知する（ステップＳ４６）。
【００６８】
接続情報管理部３０２は、ステップ１４での判定の結果、ソースＩＰアドレスが負荷分散対象サーバ１０２（＃１，＃２，・・・＃ｎ）の場合は、新サーバと旧サーバとのメモリ情報引き継ぎの処理であるため、送受信部３０１経由で取得したパケットで処理の状態を判定し（ステップＳ２４）、図１０のサーバ間通信状態テーブルの新サーバ１００２と旧サーバ１００３を更新する（ステップＳ２５）。サーバ間通信状態テーブルの１００１は監視する項目を示し、本実施例ではＦＩＮとＦＩＮに対するＡＣＫを監視する。例えば新サーバからのＦＩＮフラグがセットされたパケットであれば、新サーバ１００２のＦＩＮ欄に１をセットする。このように新サーバと旧サーバのＦＩＮとＦＩＮに対するＡＣＫ全てに１がセットされるとコネクションクローズ状態と判定する。
【００６９】
処理の状態がコネクションクローズと判定された場合（ステップＳ２６）はメモリ情報の移動終了を示すので、負荷分散装置１０１で保留していたクライアントからの継続リクエストを新サーバに送信するためにサーバ決定部３０３に通知する（ステップＳ１９）。
【００７０】
サーバ決定部３０３でサーバ間通信フラグが１でないと判定されると（ステップ８６）状態管理テーブルに新サーバの情報を登録し（ステップ８９）、保留していたクライアントからの継続リクエストを新サーバへの接続処理を実施し（ステップ９０）、送受信部３０１へ通知する（ステップ４６）。
【００７１】
接続情報管理部３０２は、処理の状態がコネクションクローズで無い場合は、まだ新サーバと旧サーバとのメモリ情報の移動が終了していないことを示すので、引き続きサーバ間の通信を行うためにサーバ間通信フラグに１をセットし（ステップＳ２７）、サーバ決定部に通知する（ステップＳ１９）。
【００７２】
サーバ決定部３０３でサーバ間通信フラグが１と判定（ステップＳ８６）された場合はメモリ情報取得のための、新サーバと旧サーバの通信であるのでサーバ間通信処理を行う（ステップＳ８７）。
【００７３】
ステップ８４で作成されたパケットを受け取った新サーバは、旧サーバのメモリ情報取得のために通信を開始する。まず、新サーバは負荷分散装置１０１の仮想ＩＰアドレス宛に接続要求を出し接続を確立する（シーケンス５９）。その後、新サーバは仮想ＩＰアドレス宛にメモリ情報取得のリクエスト送信する（シーケンス６０）。このリクエストにはステップ８４で作成したパケットに埋め込んだクライアントリクエストに含まれるセッション情報が含まれている。
【００７４】
リクエストを受け取った負荷分散装置１０１は、状態管理テーブルのセッション情報８０６を参照して、旧サーバを特定する。旧サーバが特定できたら宛先ＩＰアドレスを旧サーバのＩＰアドレスに変換して、旧サーバに対して接続要求をだし、接続を確立し（シーケンス６１）、新サーバからのリクエストを送信する（シーケンス６２）。
【００７５】
新サーバからのリクエストを受け取った旧サーバはリクエストに含まれるセッション情報を基にして対応するメモリ情報をレスポンスとして返信する（シーケンス６３）。旧サーバからのレスポンスを受信した負荷分散装置１０１は送信時に変換した宛先ＩＰアドレスを仮想ＩＰアドレスに変換し新サーバにレスポンスを送信する（シーケンス６４）。
【００７６】
ステップＳ８７の処理が終了するとサーバ間通信フラグを０にセットして（ステップＳ８８）送受信３０１へ通知する（ステップＳ４６）。
【００７７】
ステップＳ８６での判定の結果、サーバ間通信フラグが１でなければ、状態管理テーブルに新サーバの情報を登録し（ステップ８９）、保留していたクライアントからの継続リクエストを新サーバへの接続処理を実施し（ステップ９０）送受信部３０１へ通知する（ステップ４６）。
【実施例２】
【００７８】
本発明の第２の実施例のサーバ決定部３０３の動作を図６Ｄのフローチャートを使用して説明する。
【００７９】
停止予定時間を超過して直ぐにアクセスしてきたクライアントに対しては上記方法で接続サーバを変更できるが停止予定時間を経過しても、しばらくアクセスしてこないクライアントもいるため、サーバ決定部３０３はサーバ管理テーブルの待ち時間９０７を参照し停止時間からの待ち時間を監視する（ステップＳ１０１）。待ち時間９０７で指定された待ち時間を経過してもアクセスしてこないクライアントに対しては、状態管理テーブルの接続先サーバ名８０３〜接続先ポート番号８０５を参照して（ステップＳ１０２）、クライアントを特定する。次にサーバ管理テーブルの振り分け対象サーバ９０４を参照して新サーバを決定し（ステップＳ１０３）、強制的にサーバ間通信起動パケットを作成して（ステップＳ１０４）、送受信部３０１へ通知する（ステップＳ１０５）。この処理により強制的にメモリ情報の移動を開始する。
【００８０】
待ち時間を超過してアクセスしてきたクライアントがいても、メモリ情報は移動済みであるため、処理の継続が可能になる。
【符号の説明】
【００８１】
１００  クライアント
１０１  負荷分散装置
１０２  サーバ
２００  スイッチ部
２０１  コントローラ
２０２  ＣＰＵ
２０３  メモリ
２０４  ディスク
３０１  送受信部
３０２  接続情報管理部
３０３  サーバ決定部
３０４  振り分け管理部
３０５  入力部
８０１  接続元ＩＰアドレス
８０２  接続元ポート番号
８０３  接続先サーバ名
８０４  接続先サーバのＩＰアドレス
８０５  接続先サーバのポート番号
８０６  継続リクエストに含まれるセッション情報システム本部
９０１  負荷分散装置に設定されている仮想ＩＰアドレス
９０２  接続先サーバのＩＰアドレス
９０３  負荷分散方式
９０４  振り分け対象サーバ
９０５  接続禁止フラグ
９０６  停止予定時間
９０７  メモリ情報強制移動までの待ち時間
【図１】
2012108685.tif 000003
【図２】
2012108685.tif 000004
【図３】
2012108685.tif 000005
【図４】
2012108685.tif 000006
【図５Ａ】
2012108685.tif 000007
【図５Ｂ】
2012108685.tif 000008
【図６Ａ】
2012108685.tif 000009
【図６Ｂ】
2012108685.tif 000010
【図６Ｃ】
2012108685.tif 000011
【図６Ｄ】
2012108685.tif 000012
【図７】
2012108685.tif 000013
【図８】
2012108685.tif 000014
【図９】
2012108685.tif 000015
【図１０】
2012108685.tif 000016
【図１１】
2012108685.tif 000017