説明

負荷分散システム

【課題】
セッション管理を行っているサーバの一部を計画的に停止する場合に、そのサーバへの継続リクエストを別のサーバへ振り分け処理を継続させる。
【解決手段】
本発明は停止時間超過後の停止対象サーバ宛の継続リクエストを判定して、新規振り分けサーバを決定し、新規振り分けサーバが停止対象サーバ上のメモリ情報を取得し、その後に継続リクエストを新規振り分けサーバに送信する。また、停止時間を一定時間経過しても継続リクエストを出さないクライアントを特定して、強制的にメモリ情報を移動する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は複数クライアント、前記クライアントからのリクエストをセッション管理している複数サーバと前記複数サーバの負荷を分散させる負荷分散装置から構成される負荷分散システムに関する。
【背景技術】
【0002】
複数クライアント、複数サーバと負荷分散装置から構成される負荷分散システムにおいて、クライアントはサーバ上のページを順に読み出し、それぞれのページで必要なデータ入力してサーバに送信する。このため、サーバ上で稼働するアプリケーションはクライアントからのリクエストと、メモリ上のデータを関連づけるためセッション管理している。セッション管理の方法としては各サーバがページごとにセッションIDを生成してレスポンスデータに埋め込んでクライアントに返し、クライアントは次のリクエスト時にサーバが埋め込んだセッションIDをリクエストデータに入れてサーバに送信する。
【0003】
クライアントから送信されたセッションIDを調べることで、認証が終了しているのか、自身が生成したセッションIDなのか等を判断することができ、正当なセッションIDを持つリクエストの処理を進めて行くことができる。しかし、セッション管理されているシステムにおいては、メンテナンス等で特定のサーバを停止したい場合に、新規のリクエストは振り分け先を停止予定サーバ以外にすることで、クライアントへの影響を防止出来るが、停止時間前からの継続リクエストは他のサーバに振り分けることができない。単純に振り分け先を変更すると、変更後のサーバにリクエストしたクライアントのセッション情報(メモリ情報)がないためエラーになってしまう。
【0004】
そこで継続リクエストに対応するセッション情報を他のサーバに移動し、移動したサーバへリクエストを割り振る方法が特許文献1で開示されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2007−219964
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかし、従来のセッション情報移動方法による振り分け先変更には以下のような問題がある。従来の技術では停止時間超過後の継続リクエストは、一度それまで接続していたサーバに振り分け当該サーバで処理させる。処理終了後に当該サーバから次回振り分けるサーバへセッション情報を移動する。セッション情報の移動が終了すると当該サーバはレスポンスデータ内に負荷分散装置が振り分けサーバを識別するCookie情報を埋め込みクライアントに返す。このCookie情報には次回の振り分け先サーバが記載されている。
【0007】
この方法ではサーバがCookieを生成してレスポンスデータに埋め込むことになり、一般的に利用されている負荷分散装置がCookieを生成する機能を使用できなくなる。一般的には負荷分散装置はクライアントから最初のリクエストが届くと振り分けるサーバを決定してサーバにリクエストを送信する。サーバが処理を行いレスポンスデータをクライアントに返信するときに負荷分散装置がCookieを生成してレスポンスデータ内に埋め込む。クライアントは次回のリクエスト時に負荷分散装置が生成したCookieを付加してリクエストを送信してくる。負荷分散装置はリクエスト中のcookieを解析して接続すべきサーバを決定し、Cookieを削除してリクエストをサーバに送信する。
【0008】
このような処理を行っている中でサーバが振り分け先を指示するCookieをレスポンスデータ内に埋め込んで負荷分散装置に理解させるには、負荷分散装置でのCookie生成を停止しなければ、2つの異なる振り分け先がレスポンスデータ内に入る可能性が高く正確な振り分けができない。
【0009】
また従来の技術は停止時間を超過してから継続リクエストが来た場合はセッション情報の移動が可能であるが、停止時間超過後しばらくリクエストが来ない場合にはセッション情報を移動することができず、クライアントを救済するにはサーバを停止できない。
【0010】
強制的に全てのセッション情報を移動したとしても次の振り分け先を示したCookieをクライアントに返す手段がないため、クライアントは引き続き停止予定サーバに振り分けられる。また、新たに振り分け先に選択されたサーバは、自身の中で管理していない新しいクライアントから突然リクエストが届くため処理できなくなってしまう。
【0011】
本発明はこのような問題点を解決するためになされるものであり、クライアントに影響を与えることなく継続リクエストを別サーバに振り分けることができる負荷分散システムを提供することを目的とする。
【課題を解決するための手段】
【0012】
上記の目的を達成するために、本発明では以下のような手段を講じる。
【0013】
請求項1の発明は、複数クライアントと、複数サーバと、複数クライアントからのリクエストを分散してサーバに振り分ける負荷分散装置を備え、停止対象サーバの選択と停止時間およびメモリ情報強制移動までの待ち時間を入力することのできる入力手段と、停止対象サーバの停止予定時間を監視し停止予定時間になると停止対象サーバに接続禁止フラグをセットし新規の振り分けサーバを決定する振り分け管理手段と、クライアントからの接続要求を解析して停止対象サーバへ接続するか新規サーバへ振り分けるか等の処理内容を分類する接続情報管理手段と、前記接続情報管理手段によって振り分けるサーバの変更が必要と判定された場合に前記サーバ振り分け管理手段によって選択されたサーバに対して停止対象サーバからメモリ情報を取得するよう指示を出し、メモリ情報の移動が終了すると保留していた継続リクエストを新規サーバへ送信するサーバ決定手段と、前記サーバ決定部から送付されたデータをLANへ送信する送受信手段と、前記サーバ決定部からメモリ情報取得の指示を受け取ると停止対象サーバに対してメモリ情報取得リクエストを発行するメモリ情報取得手段と、前記メモリ情報取得手段からメモリ情報取得のリクエストを受け取るとメモリ情報を返信する手段を備える。
【0014】
請求項2の発明は、入力手段によって入力された待ち時間を経過しても継続リクエストが送信されない場合に負荷分散装置内に記録されている接続情報に基づきメモリ情報の移動が必要なクライアントを特定して、そのクライアント用に確保されている停止対象サーバ上のメモリ情報を強制的に新規振り分け先に決定したサーバに移動する手段を備える。
【発明の効果】
【0015】
本発明によれば停止時間超過後に停止対象サーバへの継続リクエストを中断することな
く、新規に選択したサーバに振り分け、処理を継続できる。
【図面の簡単な説明】
【0016】
【図1】負荷分散システムの構成例を示す構成図
【図2】負荷分散装置のブロック図
【図3】負荷分散装置機能ブロック図
【図4】送受信部のフローチャート
【図5A】接続情報管理部のフローチャート1
【図5B】接続情報管理部のフローチャート2
【図6A】サーバ決定部のフローチャート1
【図6B】サーバ決定部のフローチャート2
【図6C】サーバ決定部のフローチャート3
【図6D】サーバ決定部のフローチャート4
【図7】振り分け管理部のフローチャート
【図8】状態管理テーブル
【図9】サーバ管理テーブル
【図10】サーバ間通信状態テーブル
【図11】概略動作のシーケンス図
【発明を実施するための形態】
【0017】
以下に、本発明を実施するための形態について図面を参照しながら説明する。
【実施例1】
【0018】
本実施の形態に係わる負荷分散システムは図1のように複数のクライアント100(#1,#2,・・・#n)と複数のサーバ102(#1,#2,・・・#n)とクライアント100(#1,#2,・・・#n)からの接続要求をサーバ102(#1,#2,・・・#n)の負荷を分散させるように各サーバに振り分ける負荷分散装置101を備えた負荷分散システム10に適用される。
【0019】
クライアントがサーバ上のページを順次呼び出し、各ページでデータを入力していくタイプのアプリケーションが多いため、業務開始から終了まで同一クライアントからのリクエストは同一サーバに接続する必要がある。このようなタイプのアプリケーションで業務途中に他のサーバに接続するとクライアントが入力したデータが無くエラーになってしまう。このように同一クライアントからのリクエストを同一サーバに接続することをセッション維持という。
【0020】
このようにセッション維持を行っている業務システムで、メンテナンスのために特定サーバの停止を予定している場合において、負荷分散システム10は停止時間監視を行い、停止予定時間になった場合に停止予定サーバに接続禁止フラグをセットし、新規リクエスト、継続リクエスト共に、以降そのサーバに接続することを禁止する。また、負荷分散アルゴリズムにより選択対象になっているサーバに対して接続禁止フラグをセットした場合は、そのサーバは選択対象から外し、新規振り分け先として別のサーバを決定する。
【0021】
新規振り分け先として決定した別のサーバを以下、新サーバという。
【0022】
また接続禁止フラグをセットしたサーバ宛に継続リクエストが届いた場合に、新サーバに対して、それまで接続していたサーバ(以下、旧サーバという)からメモリ情報を取得する指示を出す。メモリ情報取得の指示を受けて新サーバは旧サーバにメモリ情報取得の要求を出しメモリ情報を取得する。メモリ情報取得完了後に負荷分散装置101は保留していていたクライアントからの継続リクエストを新サーバに送信する。
【0023】
クライアント100(#1,#2,・・・#n)、負荷分散装置101およびサーバ102(#1,#2,・・・#n)はLAN103に接続されルータ等を介して複数のサブネットから構成されることもある。これを実現するために負荷分散装置101は図2および図3に示す構成をしている。
【0024】
まず、本実施例の動作概要を図11を使用して説明する。
【0025】
ここでの説明は旧サーバ1203が停止予定サーバであり、シーケンス55とシーケンス56の間で停止時間に達した場合の例である。
【0026】
セッション維持を行っている業務システムにおいて、1201はリクエストを送信するクライアント、1202は処理を振り分ける負荷分散装置、1203は旧サーバ、1204は新サーバである。クライアント1201から負荷分散装置1202の仮想IPアドレス宛に接続要求が来ると接続を確立する(シーケンス50)。接続確立後にクライアント1201から新規のリクエストが仮想IPアドレス宛に送信される(シーケンス51)。負荷分散装置1202は新規のリクエストを受け取ると、旧サーバ1203に接続要求を出し接続を確立(シーケンス52)し、クライアントからのリクエストを旧サーバ1203に送信する(シーケンス53)。旧サーバはリクエストを受け取ると、それに応じてレスポンスを負荷分散装置1202に返信する(シーケンス54)。負荷分散装置1202は旧サーバ1203からのレスポンスをクライアント1201に返信する(シーケンス55)。
【0027】
この時点で旧サーバ1203は停止時間に達するため振り分け禁止になる。そして新サーバ1204が新規の振り分けサーバとして決定される。
【0028】
クライアントは継続のリクエスト(シーケンス56)を仮想IPアドレス宛に送信するが、旧サーバ1203への振り分けは禁止になっているので、負荷分散装置1202はリクエストを一旦保留して、新サーバ1204に対してリクエストしてきたクライアントのために確保された旧サーバ上のメモリ情報を取得するように指示を出す(シーケンス57、シーケンス58)。新サーバ1204は指示に従い、仮想IPアドレス宛に旧サーバのメモリ情報取得の接続要求を出す(シーケンス59)。接続が確立するとメモリ情報取得のリクエストを同じく仮想IPアドレス宛に送信する(シーケンス60)。
【0029】
負荷分散装置1202は新サーバからのメモリ取得リクエストを受け取ると、旧サーバに対して接続要求を出し接続を確立する(シーケンス61)。接続確立後にメモリ取得リクエストを旧サーバ1203に送信する(シーケンス62)。旧サーバ1203はリクエストを受け取るとリクエストデータ内にあるクライアント1201のセッション情報を見て、対応するメモリ情報をレスポンスする(シーケンス63)。このレスポンスを新サーバが受け取ることで(シーケンス64)、メモリ情報の取得ができる。
【0030】
メモリ情報の取得が終了すると負荷分散装置1202は、新サーバに接続要求を出して接続を確立する(シーケンス65)。その後保留していたクライアントからリクエストを送信する(シーケンス66)。リクエストを受け取った新サーバ1204は処理を行いレスポンスを返信する(シーケンス67)。負荷分散装置1202は新サーバ1204からのレスポンスをクライアントに返信する(シーケンス68)。
【0031】
以下に本実施例の詳細を説明する。
【0032】
図2は負荷分散装置101の概略構成図であり、クライアント100(#1,#2,・
・・#n)およびサーバ102(#1,#2,・・・#n)をLAN103で接続するためのスイッチ部200、スイッチ部200を制御するコントローラ201、クライアントからの接続要求に対する振り分けサーバ決定、新サーバに対する旧サーバからのメモリ情報の取得指示、停止予定サーバの停止予定時間の監視、パケットを解析して処理内容を決定するCPU部202、CPU部202が使用するメモリ203,各種情報を格納しておくディスク部204から構成される。
【0033】
図3はパケットの送受信、パケットの解析、振り分け先サーバの決定、停止時間監視、設定情報入力を行う負荷分散装置101に備えられる機能ブロック図である。送受信部301の動作は図4のフローチャートを使用して説明する。
【0034】
負荷分散装置101に入力される負荷分散装置101の仮想IPアドレス宛のパケット、サーバからのレスポンスおよび負荷分散装置101を通過するパケットを受け取り(ステップS1)、接続情報管理部302に送信する(ステップS2)。また、サーバ決定部303で処理されたパケットおよびデータを受け取り(ステップS3)、コネクション確立済みであるかを図8の状態管理テーブルの接続元IPアドレス801および接続元ポート番号802を参照して判定する(ステップS4)。接続元IPアドレス801および接続元ポート番号802はコネクション確立直後に登録するため、登録されていれば確立済みであると判定する。
【0035】
コネクションが確立済みの場合はサーバ決定部303から受け取ったパケットをLAN103に送信する(ステップS5)。コネクションが確立済みでない場合はクライアントまたはサーバとコネクション確立処理を行い(ステップS6)、サーバ決定部303から受け取ったデータをLAN103に送信する(ステップS5)。
【0036】
コネクション確立の例としてTCPの3ウェイハンドシェイクがある。
【0037】
接続情報管理部302の動作は図5A、図5Bのフローチャートを使用して説明する。
【0038】
接続情報管理部302は、送受信部301から送られたパケットを受け取り(ステップS11)、パケットを解析する(ステップS12)。まず負荷分散装置101の仮想IPアドレス宛のパケットか否かを判定する(ステップS13)する。
【0039】
仮想IPアドレスはVIPと略して表記されることもありクライアント100(#1,#2,・・・#n)に対してサーバ102(#1,#2,・・・#n)の複数IPアドレスを1つのIPアドレスと見せる役割を持つ。
【0040】
仮想IPアドレス宛で無い場合は負荷分散装置101を通過するパケットかサーバからのレスポンスであるため、パケットを通過させるフォワードフラグに1をセット(ステップS20)して、サーバ決定部303に通知する(ステップS19)。
【0041】
サーバ決定部303の動作を図6A、図6B、図6Cのフローチャートを使用して説明する。
【0042】
サーバ決定部303は、接続情報管理部302から処理内容フラグをセットしたデータを受け取る(ステップS41)とセットされたフラグの解析を行う(ステップS42)。
【0043】
フォワードフラグが1の場合(ステップS43)負荷分散装置101を通過するパケットか、サーバからのレスポンスであるかを切り分ける(ステップS44)。
【0044】
ステップ44での判定の結果、サーバからのレスポンスでなかった場合、負荷分散装置101を単純に通過するパケットであるので、何も処理を行わずに送受信部301に通知する(ステップS46)。サーバからのレスポンスか否かは図8の状態管理テーブルの接続先IPアドレス804と接続先ポート番号805を参照し登録されているIPアドレスおよびポート番号が、ソースIPアドレスおよびソースポート番号として使用されているかどうかで判定できる。
【0045】
負荷分散装置101はクライアントから仮想IPアドレス宛のリクエストを受信すると、宛先IPアドレスを選択したサーバのIPアドレスに変換してサーバに送信する。レスポンス時はソースIPアドレスはサーバのIPアドレス、宛先IPアドレスはクライアントのIPアドレスが指定されている。ポート番号についても同様である。このため、接続したサーバのIPアドレスがソースIPとして使用されていれば、サーバからのレスポンスと判定できる。
【0046】
ステップ44での判定の結果、レスポンスであればレスポンス返送処理をおこなう(ステップS45)。サーバからのレスポンスには、旧サーバからのメモリ情報移動のレスポンス(例:シーケンス63)と、クライアントからのリクエストに対するサーバからのレスポンス(例:シーケンス54)の2種類がある。このため、どちらのレスポンスであるかを切り分ける。
【0047】
レスポンスのソースIPアドレスと接続先IPアドレス804、ソースポート番号と接続先ポート番号805を比較し、一致していて、かつ宛先IPアドレスが負荷分散対象サーバ102(#1,#2,・・・#n)であれば、旧サーバからのメモリ情報移動のレスポンスと判定できる。
【0048】
宛先IPアドレスが負荷分散対象サーバ102(#1,#2,・・・#n)でなければクライアントのリクエストに対するレスポンスであると判定できる。
【0049】
クライアントからのリクエストに対するレスポンス返送処理としては、ソースIPアドレスをサーバのIPアドレスから負荷分散装置101の仮想IPアドレスへの付け替えを行う。MACアドレスについても同様の付け替え処理を行い、送受信部301に通知する(ステップS46)。クライアントは負荷分散装置101の仮想IPアドレス宛にリクエストを出すため、レスポンス時にソースIPアドレスを仮想IPアドレスに変換しないとクライアントは別の装置からレスポンスが来たと認識しレスポンスを受け取れない。MACアドレスについても同様である。
【0050】
メモリ情報移動のための旧サーバからのレスポンス返送処理も同じである。
【0051】
接続情報管理部302は、ステップ13での判定の結果、仮想IPアドレス宛のパケットである場合はクライアントからの接続要求か、メモリ情報取得のための新サーバからの接続要求であるから、ソースIPアドレスが負荷分散対象サーバ102(#1,#2,・・・#n)のIPアドレスであるか否かを判定する(ステップS14)。負荷分散対象サーバ102(#1,#2,・・・#n)のIPアドレスは図9のサーバ管理テーブルの接続先サーバIPアドレス902を参照することで取得する。
【0052】
ソースIPアドレスが負荷分散対象サーバ102(#1,#2,・・・#n)のアドレスでない場合は、クライアント101(#1,#2,・・・#n)からの接続要求であるで、新規リクエストか継続リクエストかを判定(ステップS15)する。状態管理テーブルの接続先サーバ名803〜接続先ポート番号805は新規クエストをサーバに振り分けたときに登録されるので、登録されていなければ新規リクエストであると判定できる。
【0053】
ステップS15での判定の結果、新規リクエストでなければ継続リクエストになるので、振り分け管理部304からの通知を元に停止時間が超過しているか否かを判定(ステップS16)する。停止時間になると振り分け管理部304より通知がくるため、通知の有無で停止時間超過を判定する。
【0054】
停止時間に達していなければ継続リクエストの処理を実行するため負荷分散フラグに1をセットし(ステップS18)、サーバ決定部303に通知する(ステップS19)。
【0055】
サーバ決定部303は、受け取ったデータのフラグを解析し、負荷分散フラグが1であることを認識し(ステップS67)、状態管理テーブルの接続元IPアドレス801と接続元ポート番号802を参照して、どのクライアントからのリクエストであるか特定し(ステップS68)、804を参照して接続するサーバを特定する(ステップS69)。
【0056】
サーバ決定後はサーバへの転送処理としてソースIPアドレスの変換およびMACアドレスの変換を行い(ステップS70)、負荷分散処理フラグを0にして(ステップS71)、送受信部301へ通知する(ステップS46)。
【0057】
接続情報管理部302は、ステップS16の判定の結果、停止時間を超過している場合は、振り分け先を変更する必要があるため、クライアントからの継続リクエストをメモリまたはディスク上に、一時保留して、サーバ変更フラグに1をセットし(ステップS17)、サーバ決定部303に通知する(ステップS19)。一時保留した継続リクエストは新サーバと旧サーバ間のメモリ移動終了後に処理される。
【0058】
サーバ決定部303でサーバ変更フラグが1と判定されると(ステップS81)、サーバ管理テーブルの振り分け対象サーバ904を参照し(ステップS82)、振り分け先サーバを決定する(ステップS83)。選択されるサーバは振り分け対象サーバ904で1がセットされているサーバであり、ラウンドロビンの場合は順番に選択するサーバが変更される。なお、負荷分散方式は他の方式を指定しても良い。
【0059】
振り分け管理部304の動作を図7のフローチャートを使用して説明する。
【0060】
振り分け管理部304は、入力部305を通して入力された停止時間を監視していて(ステップS201)、停止時間になると接続情報管理部302とサーバ決定部303に停止時間超過の通知を出し(ステップS202)、停止対象サーバに対して図9のサーバ管理テーブルの接続禁止フラグ905に9をセットする(ステップS203)。接続禁止フラグをセットしたサーバが、選択対象(振り分け対象サーバ904に1がセットされている)になっている場合は(ステップS204)、振り分けサーバ904に0をセットする。振り分け対象サーバ904を1から0に変更し選択対象サーバが無くなった場合、新しい選択対象として次のサーバが選択されるように1をセットする(ステップS205)。
【0061】
サーバ決定部303は、新サーバ決定後に新サーバに対して旧サーバのメモリ上にある継続リクエストを出したクライアントのメモリ情報を取得するための指示を行うサーバ間通信起動パケットを作成する(ステップS84)。この指示パケットには、保留中のクライアントリクエストから取り出した、サーバが発行したセッション情報およびサーバ決定部303がセットするメモリ情報取得指示フラグが含まれる。サーバ間通信起動パケット作成後にサーバ変更フラグを0にセットして(ステップS85)、送受信部301に通知する(ステップ46)。
【0062】
接続情報管理部302は、ステップS15での判定の結果、新規リクエストであれば新規負荷分散フラグに1をセットして(ステップS21)、サーバ決定部303に通知する。
【0063】
例えばPOSTやGETといったHTTPメソッドを見てリクエストと判定し、図8の状態管理テーブルの接続先サーバ名803〜接続先ポート番号805が登録されていなければ新規と判定する。
【0064】
接続先サーバ名803は振り分けを行ったサーバ名であり負荷分散装置101の設定情報で定義される。接続先サーバIPアドレス804は振り分けを行ったサーバのIPアドレスであり、この情報も負荷分散装置101の設定情報で定義される。接続先ポート番号805は接続を行ったサービスポート番号であり80はHTTPを示す。この接続先サーバ名803〜接続先ポート番号805は新規クエストをサーバに振り分けたときに登録されるので、登録されていなければ新規リクエストであると判定できる。
【0065】
サーバ決定部303で新規負荷分散フラグが1と判定された(ステップS61)場合は、図9のサーバ管理テーブルの仮想IPアドレス901を参照して宛先に指定されている仮想IPアドレスを選択する。振り分け対象サーバは仮想IPアドレス毎に指定されるので、選択した仮想IPアドレス901のグループに属するサーバ902を選択するために、振り分け対象サーバ904を参照および更新する(ステップS62)。振り分け対象サーバ904には選択するサーバが記載されており、振り分け対象サーバ904が1になっているサーバが選択される(ステップS63)。サーバ選択後は選択したサーバを0にして、状態管理テーブルの負荷分散方式903の負荷分散方式に基づき次回選択されるサーバに1をセットする。
【0066】
仮想IPアドレス901、サーバ名902、負荷分散方式903の情報は負荷分散装置101の設定情報に定義されているため、設定情報から抽出して状態管理テーブルを作成する。
【0067】
サーバ決定後は状態管理テーブルの接続先サーバ名803〜接続先ポート番号805に接続するサーバ情報を登録して(ステップ64)、サーバとの接続処理を行う(ステップS65)。クライアントは負荷分散装置101の仮想IPアドレス宛にリクエスト送信するため、宛先のIPアドレスとMACアドレスを選択したサーバのアドレス変換する必要があるため、アドレス変換処理を行う。ステップS65の処理終了後は新規負荷分散フラグを0にして(ステップS66)、送受信部301に通知する(ステップS46)。
【0068】
接続情報管理部302は、ステップ14での判定の結果、ソースIPアドレスが負荷分散対象サーバ102(#1,#2,・・・#n)の場合は、新サーバと旧サーバとのメモリ情報引き継ぎの処理であるため、送受信部301経由で取得したパケットで処理の状態を判定し(ステップS24)、図10のサーバ間通信状態テーブルの新サーバ1002と旧サーバ1003を更新する(ステップS25)。サーバ間通信状態テーブルの1001は監視する項目を示し、本実施例ではFINとFINに対するACKを監視する。例えば新サーバからのFINフラグがセットされたパケットであれば、新サーバ1002のFIN欄に1をセットする。このように新サーバと旧サーバのFINとFINに対するACK全てに1がセットされるとコネクションクローズ状態と判定する。
【0069】
処理の状態がコネクションクローズと判定された場合(ステップS26)はメモリ情報の移動終了を示すので、負荷分散装置101で保留していたクライアントからの継続リクエストを新サーバに送信するためにサーバ決定部303に通知する(ステップS19)。
【0070】
サーバ決定部303でサーバ間通信フラグが1でないと判定されると(ステップ86)状態管理テーブルに新サーバの情報を登録し(ステップ89)、保留していたクライアントからの継続リクエストを新サーバへの接続処理を実施し(ステップ90)、送受信部301へ通知する(ステップ46)。
【0071】
接続情報管理部302は、処理の状態がコネクションクローズで無い場合は、まだ新サーバと旧サーバとのメモリ情報の移動が終了していないことを示すので、引き続きサーバ間の通信を行うためにサーバ間通信フラグに1をセットし(ステップS27)、サーバ決定部に通知する(ステップS19)。
【0072】
サーバ決定部303でサーバ間通信フラグが1と判定(ステップS86)された場合はメモリ情報取得のための、新サーバと旧サーバの通信であるのでサーバ間通信処理を行う(ステップS87)。
【0073】
ステップ84で作成されたパケットを受け取った新サーバは、旧サーバのメモリ情報取得のために通信を開始する。まず、新サーバは負荷分散装置101の仮想IPアドレス宛に接続要求を出し接続を確立する(シーケンス59)。その後、新サーバは仮想IPアドレス宛にメモリ情報取得のリクエスト送信する(シーケンス60)。このリクエストにはステップ84で作成したパケットに埋め込んだクライアントリクエストに含まれるセッション情報が含まれている。
【0074】
リクエストを受け取った負荷分散装置101は、状態管理テーブルのセッション情報806を参照して、旧サーバを特定する。旧サーバが特定できたら宛先IPアドレスを旧サーバのIPアドレスに変換して、旧サーバに対して接続要求をだし、接続を確立し(シーケンス61)、新サーバからのリクエストを送信する(シーケンス62)。
【0075】
新サーバからのリクエストを受け取った旧サーバはリクエストに含まれるセッション情報を基にして対応するメモリ情報をレスポンスとして返信する(シーケンス63)。旧サーバからのレスポンスを受信した負荷分散装置101は送信時に変換した宛先IPアドレスを仮想IPアドレスに変換し新サーバにレスポンスを送信する(シーケンス64)。
【0076】
ステップS87の処理が終了するとサーバ間通信フラグを0にセットして(ステップS88)送受信301へ通知する(ステップS46)。
【0077】
ステップS86での判定の結果、サーバ間通信フラグが1でなければ、状態管理テーブルに新サーバの情報を登録し(ステップ89)、保留していたクライアントからの継続リクエストを新サーバへの接続処理を実施し(ステップ90)送受信部301へ通知する(ステップ46)。
【実施例2】
【0078】
本発明の第2の実施例のサーバ決定部303の動作を図6Dのフローチャートを使用して説明する。
【0079】
停止予定時間を超過して直ぐにアクセスしてきたクライアントに対しては上記方法で接続サーバを変更できるが停止予定時間を経過しても、しばらくアクセスしてこないクライアントもいるため、サーバ決定部303はサーバ管理テーブルの待ち時間907を参照し停止時間からの待ち時間を監視する(ステップS101)。待ち時間907で指定された待ち時間を経過してもアクセスしてこないクライアントに対しては、状態管理テーブルの接続先サーバ名803〜接続先ポート番号805を参照して(ステップS102)、クライアントを特定する。次にサーバ管理テーブルの振り分け対象サーバ904を参照して新サーバを決定し(ステップS103)、強制的にサーバ間通信起動パケットを作成して(ステップS104)、送受信部301へ通知する(ステップS105)。この処理により強制的にメモリ情報の移動を開始する。
【0080】
待ち時間を超過してアクセスしてきたクライアントがいても、メモリ情報は移動済みであるため、処理の継続が可能になる。
【符号の説明】
【0081】
100 クライアント
101 負荷分散装置
102 サーバ
200 スイッチ部
201 コントローラ
202 CPU
203 メモリ
204 ディスク
301 送受信部
302 接続情報管理部
303 サーバ決定部
304 振り分け管理部
305 入力部
801 接続元IPアドレス
802 接続元ポート番号
803 接続先サーバ名
804 接続先サーバのIPアドレス
805 接続先サーバのポート番号
806 継続リクエストに含まれるセッション情報システム本部
901 負荷分散装置に設定されている仮想IPアドレス
902 接続先サーバのIPアドレス
903 負荷分散方式
904 振り分け対象サーバ
905 接続禁止フラグ
906 停止予定時間
907 メモリ情報強制移動までの待ち時間

【特許請求の範囲】
【請求項1】
複数サーバと複数クライアントからの接続要求を分散して前記複数サーバに振り分けを行う負荷分散装置を備えた負荷分散システムであって、
前記複数サーバのうち特定のサーバを計画的に停止させるために停止対象サーバ、停止時間およびメモリ情報強制移動までの待ち時間を入力できる入力手段と、
前記停止対象サーバの停止予定時間を監視し停止予定時間になると前記停止対象サーバに接続禁止フラグをセットし新規の振り分けサーバを決定する振り分け管理手段と、
前記クライアントからの接続要求を解析して前記停止対象サーバへ接続するか新規サーバへ振り分けるか等の処理内容を分類する接続情報管理手段と、
前記接続情報管理手段によって振り分けるサーバの変更が必要と判定された場合に前記振り分け管理手段によって選択された前記サーバに対して前記停止対象サーバからメモリ情報を取得するよう指示を出し、メモリ情報の移動が終了すると保留していた継続リクエストを新規サーバへ送信するサーバ決定手段と、
前記サーバ決定部から送付されたデータをLANへ送信する送受信手段と、
前記サーバ決定部からメモリ情報取得の指示を受け取ると前記停止対象サーバに対してメモリ情報取得リクエストを発行するメモリ情報取得手段と、
前記メモリ情報取得手段からメモリ情報移動のリクエストを受け取るとメモリ情報を返信するメモリ情報返信手段を備えた負荷分散システム。
【請求項2】
請求項1の負荷分散システムにおいて、前記入力手段によって入力された待ち時間を経過しても継続リクエストが送信されない場合に前記負荷分散装置内に記録されている接続情報に基づきメモリ情報の移動が必要な前記クライアントを特定して前記クライアント用に確保されている前記停止対象サーバ上のメモリ情報を強制的に、新規振り分け先に決した前記サーバに移動し、前記負荷分散装置内の接続情報を変更する手段とを備えた負荷分散システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5A】
image rotate

【図5B】
image rotate

【図6A】
image rotate

【図6B】
image rotate

【図6C】
image rotate

【図6D】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate


【公開番号】特開2012−108685(P2012−108685A)
【公開日】平成24年6月7日(2012.6.7)
【国際特許分類】
【出願番号】特願2010−256388(P2010−256388)
【出願日】平成22年11月17日(2010.11.17)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】