(57)【要約】【課題】既存のコネクションを切断することなく、ファームウェアバージョンアップなどの再起動を伴うメンテナンス作業を実施できる負荷分散システムを提供する。【解決手段】複数クライアントからの複数の処理要求を、複数のサーバに分散して割り振る負荷分散装置を複数用いることで冗長構成を実現する負荷分散システムであって、前記負荷分散装置の一つから、冗長構成を実現する他の負荷分散装置へ既存のコネクション情報を送信する手段と、前記複数の負荷分散装置のコネクション情報のデータ保持方法に差異がある場合は、送信された前記コネクション情報を、利用可能なデータ保持方法に変換する手段を有することを特徴とする負荷分散システム。【選択図】図１
2013242739.tif 000002
【特許請求の範囲】
【請求項１】
複数クライアントからの複数の処理要求を、複数のサーバに分散して割り振る負荷分散装置を複数用いることで冗長構成を実現する負荷分散システムであって、
前記負荷分散装置の一つから、冗長構成を実現する他の負荷分散装置へ既存のコネクション情報を送信する手段と、
前記複数の負荷分散装置のコネクション情報のデータ保持方法に差異がある場合は、送信された前記コネクション情報を利用可能なデータ保持方法に変換する手段を有することを特徴とする負荷分散システム。
【請求項２】
請求項１に記載の負荷分散システムにおいて、前記コネクション情報の送信を開始した時点から、前記冗長構成を実現する他の負荷分散装置での前記コネクション情報処理が完了するまでの間の、前記コネクション情報の変更内容格納手段を有し、
前記コネクション情報処理完了後に、前記負荷分散装置の一つから、前記冗長構成を実現する他の負荷分散装置へ前記コネクション情報の変更内容を送信する手段と
前記複数の負荷分散装置のコネクション情報の変更内容のデータ保持方法に差異がある場合は、送信された前記コネクション情報の変更内容を利用可能なデータ保持方法に変換する手段を有することを特徴とする負荷分散システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、負荷分散システムに関する。
【背景技術】
【０００２】
本技術分野の背景技術として特開２００７−３４６６６号公報（特許文献１）がある。この公報には、「冗長構成を実現する情報処理装置におけるＯＳやＰＰのバージョンアップを、ユーザの通信を切断することなく行うことを可能とする」と記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−３４６６６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
負荷分散システムとは、負荷分散装置が複数クライアントからの処理要求を、同一のアプリケーションを実行する複数のサーバに振り分けることで、処理要求の負荷を分散するシステムである。
【０００５】
負荷分散装置は複数の装置を、稼働系装置および待機系装置として利用することで、冗長構成を組むことが出来る。この冗長構成において、稼働系装置から待機系装置へコネクション情報を送信することで、フェイルオーバー発生時でも既存のコネクションを継続して利用できる機能を有する。ただし、負荷分散処理を実施中に待機系装置が起動した場合には、既存のコネクション情報は送信されない。そのため、負荷分散装置のファームウェアバージョンアップなどで装置の再起動が必要な場合に、コネクション情報が失われてしまうため、既存のコネクションを利用していたクライアントは切断されてしまう。
【０００６】
前記特許文献１には冗長構成システムの仕組みが記載されている。しかし、特許文献１の冗長構成システムは、冗長構成を実現する複数の情報処理装置のバージョンが異なる場合、コネクション情報の同期が出来ない。
【課題を解決するための手段】
【０００７】
前記課題を解決するために、例えば特許請求の範囲に記載の構成を採用する。
【０００８】
本発明は上記課題を解決する手段を複数含んでいるが、その一例を挙げるならば、「負荷分散装置の一つから、冗長構成を実現する他の負荷分散装置へ既存のコネクション情報を送信する手段と、前記複数の負荷分散装置のコネクション情報のデータ保持方法に差異がある場合は、送信された前記コネクション情報を利用可能なデータ保持方法に変換する手段を有すること」を特徴とする。
【発明の効果】
【０００９】
本発明によれば、既存のコネクションを切断することなく、ファームウェアバージョンアップなどの、再起動を伴うメンテナンス作業を実施できる負荷分散システムを提供することができる。
【００１０】
上記した以外の課題、構成および効果は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【００１１】
【図１】負荷分散システムの構成図の例である。
【図２】負荷分散装置のハードウェアブロック図の例である。
【図３】負荷分散装置のソフトウェアブロック図の例である。
【図４】負荷分散装置ファームウェアバージョンアップ処理を説明するフローチャートの例である。
【図５】冗長構成情報同期処理を説明するシーケンス図の例である。
【図６】コネクション情報テーブルの例である。
【図７】他のバージョンのファームウェアにおけるコネクション情報テーブルの例である。
【図８】コネクション情報差分テーブルの例である。
【図９】コネクション情報書式変換方法テーブルの例である。
【発明を実施するための形態】
【００１２】
以下、実施例を図面を用いて説明する。
【実施例１】
【００１３】
図１は、本実施例の負荷分散システムの構成図の例である。
【００１４】
本実施例の負荷分散システムは、負荷分散装置（Ａ）１０１、負荷分散装置（Ｂ）１０２、複数のクライアント（１）１０３、クライアント（２）１０４、クライアント（ｎ）１０５、複数のサーバ（１）１０６、サーバ（２）１０７、サーバ（ｎ）１０８を有し、それぞれがネットワークで接続されている。
【００１５】
負荷分散装置（Ａ）１０１と負荷分散装置（Ｂ）１０２は冗長構成を実現し、各クライアントからの処理要求を複数のサーバに振り分ける。負荷分散装置（Ａ）１０１と負荷分散装置（Ｂ）１０２は、以下に説明する同一のハードウェア構成、ソフトウェア構成を有する。
【００１６】
図２は負荷分散装置（Ａ）１０１のハードウェアブロック図の例である。
【００１７】
負荷分散装置（Ａ）１０１は、スイッチ２０１、コントローラ２０２、ＣＰＵ２０３、主記憶装置２０４、補助記憶装置２０５を有する。
【００１８】
スイッチ２０１は、装置外部のネットワークと接続する。コントローラ２０２は、スイッチ２０１を制御する。ＣＰＵ２０３はクライアントからの処理要求の受付や転送などの、負荷分散装置が実現する各種ソフトウェア機能を実行する。主記憶装置２０４はＣＰＵ２０３の処理に必要なプログラムやデータを格納するために利用する。補助記憶装置２０５は負荷分散装置（Ａ）１０１の起動に必要なファームウェアや、負荷分散処理に必要なデータを格納する。
【００１９】
図３は負荷分散装置（Ａ）１０１のソフトウェアブロック図の例である。
【００２０】
負荷分散装置（Ａ）１０１は、処理要求受付部３０１、処理要求転送部３０２、コネクション情報制御部３０３、コネクション情報テーブル３０４、コネクション情報テーブルのコピー３０５、コネクション情報差分テーブル３０６、コネクション情報書式変換方法テーブル３０７、冗長構成制御部３０８、冗長構成情報記録部３０９を有する。
【００２１】
処理要求受付部３０１は各クライアントからの処理要求を受け付ける。処理要求転送部３０２は受け付けた処理要求を各サーバに転送する。コネクション情報制御部３０３は、各クライアントからの処理要求をどのサーバに転送するかを決定し、処理要求転送部に通知する。同時にその情報をコネクション情報として、コネクション情報テーブル３０４に格納する。
【００２２】
コネクション情報テーブル３０４の例を図６に示す。「ID番号」カラムは各レコードを識別するために利用するユニークな番号であり、コネクション情報制御部３０３によって採番される。「制御情報」カラムにはそのコネクションの状態やプロトコルに固有の制御情報などの情報が格納される。
【００２３】
コネクション情報テーブルのコピー３０５とコネクション情報差分テーブル３０６はコネクション情報テーブル３０４の状態変化の差分が必要な場合に、コネクション情報制御部３０３によって制御され、コネクション情報テーブル３０４の、ある時点からの変更情報を記録する。この動作の詳細については後述する。コネクション情報書式変換方法テーブル３０７は、負荷分散装置（Ａ）１０１が、冗長構成を実現する他方の負荷分散装置（Ｂ）１０２とコネクション情報を同期する際に、コネクション情報テーブル３０６のテーブル構造や書式の差異の有無と、差異がある場合に負荷分散装置（Ａ）１０１が利用可能なテーブルに変換するための方法を記録する。コネクション情報書式変換方法テーブル３０７の詳細については後述する。冗長構成制御部３０８は負荷分散装置（Ａ）１０１が冗長構成を実現するために必要な処理を実行する。例えば、冗長構成を実現する他方の負荷分散装置（Ｂ）１０２と通信を行い、設定情報やコネクション情報を逐次同期する。また、定期的に負荷分散装置（Ｂ）１０２に生死監視のための通信を行い、応答を確認する。これをヘルスチェックという。冗長構成情報記録部３０９は冗長構成制御部３０８の実行に必要な情報を記録する。この情報にはたとえば、負荷分散装置（Ａ）１０１の設定情報や、冗長構成を実現する他方の負荷分散装置（Ｂ）１０２のネットワークアドレス、ファームウェアバージョン番号などが含まれる。
【００２４】
例えば、冗長構成を実現する負荷分散装置（Ａ）１０１と負荷分散装置（Ｂ）１０２のファームウェアをバージョンアップする処理における動作を図４のフローチャート例を使用して説明する。
【００２５】
まず、待機系として動作している負荷分散装置（Ｂ）１０２をネットワークから切り離す（ステップＳ４０１）。このとき稼働系である負荷分散装置（Ａ）１０１が負荷分散処理を実行しているため、負荷分散装置（Ａ）１０１に障害が発生した場合を除き、クライアントの通信が切断されることはない。
【００２６】
その後、負荷分散装置（Ｂ）１０２のファームウェアをバージョンアップし（ステップＳ４０２）、再度ネットワークに接続を行う（ステップＳ４０３）。
【００２７】
この時負荷分散装置（Ｂ）１０２は新しいバージョンのファームウェアで動作しており、既存のコネクション情報は保持していない。そのため、冗長構成情報同期処理Ｓ５００を実施し、負荷分散装置（Ａ）１０１から負荷分散装置（Ｂ）１０２にコネクション情報を転送・同期する（ステップＳ４０４）。冗長構成情報同期処理Ｓ５００の詳細は後述する。
【００２８】
次に負荷分散装置（Ａ）１０１をネットワークから切り離す。負荷分散装置（Ｂ）１０２は負荷分散装置（Ａ）１０１に対するヘルスチェックの応答が無いことから負荷分散装置（Ａ）１０１が稼働していないことを認識し、稼働系装置として動作を開始する（ステップＳ４０５）。この時既存のコネクション情報は負荷分散装置（Ｂ）１０２に格納されているため、コネクションを切断することなく、継続利用を実現できる。
【００２９】
その後、負荷分散装置（Ａ）１０１のファームウェアをバージョンアップし（ステップＳ４０６）、再度ネットワークに接続を行う（ステップＳ４０７）。さらに冗長構成同期処理を実施し、今度は負荷分散装置（Ｂ）１０２から負荷分散装置（Ａ）１０１にコネクション情報を転送・同期する（ステップＳ４０８）。このステップＳ４０８の動作はステップＳ４０４と同一だが、負荷分散装置（Ａ）１０１と負荷分散装置（Ｂ）１０２の役割が逆転し、コネクション情報を負荷分散装置（Ｂ）１０２から負荷分散装置（Ａ）１０１に送信することとなる。
【００３０】
この時点で負荷分散装置（Ｂ）１０２が稼働系装置、負荷分散装置（Ａ）１０１が待機系装置となっており、ファームウェアバージョンアップ処理開始時点の状態とは稼働系と待機系が逆転しているが、負荷分散システムの動作としては問題がない。運用上などの理由で負荷分散装置（Ａ）１０１を稼働系装置に戻す必要がある場合は、負荷分散装置（Ａ）１０１の冗長構成制御部３０８が、ユーザからのコマンド入力を受け付け、負荷分散装置（Ａ）１０１を稼働系装置とし、負荷分散装置（Ｂ）１０２を待機系装置として動作を開始するための処理を行っても良い。この場合でもコネクション情報は両方の負荷分散装置で保持されているため、既存のコネクションを切断することなく、継続利用を実現できる。
【００３１】
上記の処理手順を実行することでクライアントとサーバ間の通信を切断することなく、負荷分散装置（Ａ）１０１と負荷分散装置（Ｂ）１０２のファームウェアをバージョンアップすることが可能である。
【００３２】
冗長構成情報同期処理Ｓ５００の動作の詳細について、図５のフローチャート例を使用して説明する。
【００３３】
ファームウェアバージョンアップを終了した負荷分散装置（Ｂ）１０２をネットワークに結線し、電源をオンする（ステップＳ５０１）。負荷分散装置（Ｂ）１０２の冗長構成制御部３０８は、起動完了後に、あらかじめ冗長構成を実現する他方の装置として設定されている負荷分散装置（Ａ）１０１に対して、冗長構成情報を要求する（ステップＳ５０２）。この冗長構成情報には、負荷分散装置（Ａ）１０１の設定情報とファームウェアのバージョン番号が含まれている。
【００３４】
負荷分散装置（Ａ）１０１の冗長構成制御部３０８は、負荷分散装置（Ｂ）１０２からの冗長構成情報要求に応じて、自身の冗長構成情報を送信する（ステップＳ５０３）。負荷分散装置（Ａ）１０１の冗長構成情報の受信が完了後に、負荷分散装置（Ｂ）１０２の冗長構成制御部３０８は、負荷分散装置（Ａ）１０１に対してコネクション情報を要求する（ステップＳ５０４）。
【００３５】
負荷分散装置（Ａ）１０１の冗長構成制御部３０８は、コネクション情報要求を受信後、コネクション情報制御部３０３に対してコネクション情報差分記録開始を指示する（ステップＳ５０５）。負荷分散装置（Ａ）１０１のコネクション情報制御部３０３は、その時点の負荷分散装置（Ａ）１０１のコネクション情報テーブル３０４の内容をコネクション情報のコピー３０５として主記憶装置２０４に格納する。また、コネクション情報差分記録を開始した後にコネクション情報テーブル３０４に対して行った変更を、コネクション情報差分テーブル３０６に記録する。
【００３６】
コネクション情報差分テーブル３０６のテーブル構造の例を図８に示す。コネクション情報テーブル３０４のテーブル構造に「差分」カラムが追加された構造となっている。「差分」カラムにはそのレコードに対する変更内容が記録されており、データ内容が”削除”の場合はそのレコードが削除されたことを示す。「差分」カラムのデータ内容が”更新”の場合はそのレコードの内容が更新されたことを示し、更新された情報のみデータが格納されている。図８の例においては、「ID番号」が”２”のレコードにおいて制御情報が更新されたことを示している。「差分」カラムのデータ内容が”新規”であった場合はそのレコードが新規に追加されたことを示している。  このコネクション情報差分テーブル３０６を持つことにより、コネクション情報テーブルのコピー３０５とコネクション情報テーブル３０４の差分を記録することができる。
【００３７】
負荷分散装置（Ａ）１０１の冗長構成制御部３０８は、主記憶装置２０４に格納されたコネクション情報テーブルのコピー３０５を、負荷分散装置（Ｂ）１０２に送信する（ステップＳ５０６）。
【００３８】
負荷分散装置（Ｂ）１０２の冗長構成制御部３０８は、負荷分散装置（Ａ）１０１のファームウェアバージョン番号をコネクション情報制御部３０３に通知する。負荷分散装置（Ｂ）１０２のコネクション情報制御部３０３は、コネクション情報書式変換方法テーブル３０７を参照し、負荷分散装置（Ａ）１０１のコネクション情報テーブル３０４と負荷分散装置（Ｂ）１０２のコネクション情報テーブル３０４が同一のテーブル構造を持つかどうか確認する（ステップＳ５０７）。
【００３９】
図９はコネクション情報書式変換方法テーブル３０７の例である。コネクション情報書式変換方法テーブル３０７の最終レコードの「バージョン番号」カラムのデータは、コネクション情報書式変換方法テーブル３０７を保持している負荷分散装置（Ｂ）１０２のバージョン番号を示している。図９に示した例では、”3.0”である。例えば、負荷分散装置（Ａ）１０１のファームウェアバージョン番号が”2.0”であった場合、「変換要否」カラムのデータは”No”である。これは負荷分散装置（Ａ）１０１（ファームウェアバージョン番号”2.0”）と負荷分散装置（Ｂ）１０２（ファームウェアバージョン番号”3.0”）のコネクション情報テーブル３０４のテーブル構造が同一であることを示している。負荷分散装置（Ｂ）１０２のコネクション情報制御部３０３は、冗長構成制御部３０８に対して、コネクション情報の処理が完了したことを通知する。
【００４０】
例えば、負荷分散装置（Ａ）１０１のファームウェアバージョン番号が”1.0”であった場合、「変換要否」カラムのデータは”Yes”となっている。これはコネクション情報テーブルのテーブル構造やデータ書式に差異があることを示しており、「変換プログラム名」カラムに記載の、”プログラムＡ”というプログラムを利用してコネクション情報テーブル３０４の書式を変換する必要があることを示している。この場合、負荷分散装置（Ｂ）１０２のコネクション情報制御部３０３は、”プログラムＡ”を実行することでコネクション情報書式変換を実施する（ステップＳ５０８）。”プログラムＡ”は負荷分散装置（Ｂ）１０２の補助記憶装置２０５に格納されているものとする。
【００４１】
コネクション情報書式変換（ステップＳ５０８）の具体的な動作例を、図７を使用して説明する。図７はファームウェアバージョン番号”1.0”におけるコネクション情報テーブル３０４の例である。図６に示したファームウェアバージョン番号”3.0”におけるコネクション情報テーブル３０４の例と比較すると、「クライアントポート番号」カラムと「サーバアドレス」カラムの位置が入れ替わっており、「クライアントポート番号」と「サーバポート番号」が16進数で保存されている。そのため、負荷分散装置（Ａ）１０１から送信されたコネクション情報は、そのまま負荷分散装置（Ｂ）１０２で利用することができない。負荷分散装置（Ｂ）１０２のコネクション情報制御部３０３が”プログラムＡ”を実行することで「クライアントポート番号」カラムと「サーバアドレス」カラムの位置を入れ替え、さらに「クライアントポート番号」カラムと「サーバポート番号」カラムのデータを16進数から10進数表記に変換して保存する。この処理により負荷分散装置（Ａ）１０１から送信されたコネクション情報を負荷分散装置（Ｂ）１０２で利用することが可能になる。この後負荷分散装置（Ｂ）１０２のコネクション情報制御部３０３は、冗長構成制御部３０８に対して、コネクション情報の処理が完了したことを通知する。
【００４２】
負荷分散装置（Ｂ）１０２の冗長構成制御部３０８は、コネクション情報制御部３０３からコネクション情報の処理が完了したことの通知を受け取った後、負荷分散装置Ａ１０１に対して、コネクション情報処理完了通知を送信する（ステップＳ５０９）。
【００４３】
負荷分散装置（Ａ）１０１の冗長構成制御部３０８は、負荷分散装置（Ｂ）１０２からコネクション情報処理完了通知を受け取ると、コネクション情報制御部３０３に対して、コネクション情報差分記録の停止を指示し、コネクション情報制御部３０３はコネクション情報差分の記録を停止する（ステップＳ５１０）。
【００４４】
次に負荷分散装置（Ａ）１０１の冗長構成制御部３０８は、コネクション情報制御部３０３を介して、コネクション情報差分テーブルにレコードが存在するか確認する（ステップＳ５１１）。コネクション情報の差分が存在しない場合は、冗長構成情報同期処理Ｓ５００の処理がすべて完了する。
【００４５】
コネクション情報の差分が存在する場合、負荷分散装置（Ａ）１０１の冗長構成制御部３０８は、コネクション情報差分テーブル３０６を負荷分散装置（Ｂ）１０２に送信する（ステップＳ５１２）。
【００４６】
負荷分散装置（Ｂ）１０２の冗長構成制御部３０８は、コネクション情報の差分を送信した場合（ステップＳ５１３）、ステップＳ５０７と同様にコネクション情報書式変換方法テーブル３０７を参照することで、コネクション情報書式の変換が必要かどうかを判断する（ステップＳ５１４）。
【００４７】
コネクション情報書式変換が必要な場合、負荷分散装置（Ｂ）１０２のコネクション情報制御部３０３は、負荷分散装置（Ａ）１０１から送信されたコネクション情報差分テーブル３０６に対してコネクション情報書式変換を実施する（ステップＳ５１５）。
【００４８】
その後、負荷分散装置（Ｂ）１０２のコネクション情報制御部３０３は、コネクション情報の差分情報をコネクション情報テーブル３０４に反映する結合処理を実施する(ステップＳ５１６）。
【００４９】
この時点で冗長構成情報同期処理Ｓ５００の処理が全て完了し、負荷分散装置（Ａ）１０１から負荷分散装置（Ｂ）１０２へのコネクション情報の転送・同期が完了する。
【００５０】
なお、本発明は上記した実施例に限定されるものではなく、さまざまな変形例が含まれる。たとえば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明したすべての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【００５１】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計するなどによりハードウェアで実現してもよい。また、上記の各情報、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイルなどの情報は、メモリや、ハードディスク、ＳＳＤ（Solid State Drive）等の記録装置、または、ＩＣカード、ＳＤカード、ＤＶＤ等の記録媒体におくことができる。
【００５２】
また制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際にはほとんど全ての構成が相互に接続されていると考えても良い。
【符号の説明】
【００５３】
１０１…負荷分散装置（Ａ）、１０２…負荷分散装置（Ｂ）、１０３…クライアント（１）、１０４…クライアント（２）、１０５…クライアント（ｎ）、１０６…サーバ（１）、１０７…サーバ（２）、１０８…サーバ（ｎ）、２０１…スイッチ、２０２…コントローラ、２０３…ＣＰＵ、２０４…主記憶装置、２０５…補助記憶装置、３０１…処理要求受付部、３０２…処理要求転送部、３０３…コネクション情報制御部、３０４…コネクション情報テーブル、３０５…コネクション情報テーブルのコピー、３０６…コネクション情報差分テーブル、３０７…コネクション情報書式変換方法テーブル、３０８…冗長構成制御部、３０９…冗長構成情報記録部。
【図１】
2013242739.tif 000003
【図２】
2013242739.tif 000004
【図３】
2013242739.tif 000005
【図４】
2013242739.tif 000006
【図５】
2013242739.tif 000007
【図６】
2013242739.tif 000008
【図７】
2013242739.tif 000009
【図８】
2013242739.tif 000010
【図９】
2013242739.tif 000011