以下、本発明の実施の形態を図面に基づいて説明する。
図1は本発明の原理構成図である。サーバ2は、データベース(DB)1aを有している。サーバ3,4は、共用のデータベース1bを有している。これら複数のサーバ2,3,4は、通信媒体5を介して送られた処理要求を処理する業務提供手段2a,3a,4aと、自己の動作状態を管理する状態管理代理手段2b,3b,4bとを有している。
通信制御装置6において、状態管理手段6aは、状態管理代理手段2b,3b,4bとの間で通信媒体5を介した通信パスを確立し、通信パスを用いて各サーバ2,3,4の状態を示す管理情報を状態管理代理手段から受け取り、サーバ2,3,4の状態を一括管理する。振り分け手段6bは、通信網7を介して接続されている利用者側装置8a,8b,8cからの要求を受信し、状態管理手段6aが管理している情報に基づき要求の振り分け先を決定し、要求をサーバ2,3,4に対する処理要求として通信媒体5を介して送信する。運用操作手段6cは、業務提供手段2a,3a,4aに要求を振り分けるための複数の条件の活性化又は非活性化の状態切り換えを行う。
このような構成において、各サーバ2,3,4の動作状況は状態管理代理手段2b,3b,4bから状態管理手段6aに送られ、状態管理手段6aは各サーバ2,3,4の動作状況を一括管理する。そして、利用者側装置8a,8b,8cから出力された要求は、通信網7を介して通信制御装置6に送られる。通信制御装置6内では、振り分け手段6bが現在活性状態となっている条件に基づいて要求の振り分け先を決定し、出力を受けた要求を、振り分け先として決定したサーバの業務提供手段への処理要求として、該当するサーバへ送信する。処理要求を受け取ったサーバの業務提供手段は、処理要求の内容に従って、データベースを操作する。また、各サーバ2,3,4の動作状況に変化が生じ、負荷配分を変える必要が生じた場合には、運用操作手段6cが、振り分け比率等の振り分けの条件を操作する。
このようにして、利用者はこのシステムが複数のサーバによるロードシェアシステムであることを意識せずにすむ。また、通信制御装置6は、状態管理代理手段2b,3b,4bから各サーバ2,3,4内の状態に関する情報を収集しているため、最適な負荷の分散を行うことができる。さらに、運用操作手段6cが、振り分け条件の活性化・非活性化の切り換えを行うことにより、様々な状況の変化に対して直ぐに適切な対処をすることが可能となり、システムの負荷の配分を最適化することができる。
ところで、上記のロードシェアシステムを実現するためのハードウェア構成として、通信制御装置が1台の場合と複数台の場合とが考えられる。以下の説明では、まず通信制御装置が1台の場合について説明し、その後通信制御装置が複数台の場合について説明する。
図2は本発明のロードシェアシステムの概略構成を示すブロック図である。これは、通信制御装置が1台の場合の構成である。この図には1つのローカルエリアネットワーク(LAN)41と2つの通信媒体44,45が示されている。LAN41には、複数のサーバ10,20,30と通信制御装置100とが接続されている。サーバ10にはデータベース(DB)42が接続されている。サーバ20,30は、データベース43を共有している。通信媒体44には、通信制御装置100と他の複数のシステム51,52とが接続されている。各システム51,52には、端末61,62が接続されている。通信媒体45には、通信制御装置100と複数の端末63,64とが接続されている。
サーバ10,20,30のそれぞれには、利用者に各種業務を提供するアプリケーション11,21,31、自己の動作状態を示すデータが格納された状態管理テーブル12,22,32、及び通信制御装置100へ自己の動作状態を報告する状態管理エージェント13,23,33が設けられている。
通信制御装置100はLAN41と他の通信媒体44,45との情報通信を制御する装置であり、内部にネットワーク連携装置100aを有している。ネットワーク連携装置100aは、振り分けプログラム110と記憶装置120とを有している。振り分けプログラム110は、状態管理エージェントから各サーバ10,20,30の状態を収集し一括管理する状態管理部111、利用者からの要求をいずれかのサーバに振り分ける振り分け処理部112、及び要求を振り分けるための条件の活性化・非活性化の切り換えを行う運用操作部113から構成されている。また、記憶装置120内には各サーバの負荷状態を示す負荷分散情報121、各サーバに振り分けられた要求の情報を示す状態管理テーブル122、及び運用を切り換えるための複数の条件が格納された運用テーブル123が格納されている。
以上のような1台の通信制御装置で構成されるロードシェアシステムは、大別して次の諸機能を備えている。
第1の機能は、通信制御装置100とサーバ10,20,30とが一体となり、1つのサーバのように振る舞う機能である。言い換えると、通信制御装置100が他のサーバ10,20,30を隠蔽し、利用者からは1つのシステムとみえるようにする機能である。以後、この機能を1システムビューと呼ぶ。
第2の機能は、サーバ側に配置した状態管理エージェント13,23,33の働きにより、各サーバ10,20,30のアプリケーションの動作状況を通信制御装置100で一括管理する機能である。
第3の機能は、上記第1の機能と第2の機能とを併用した機能である。つまり、通信制御装置100が一括管理している各サーバの管理情報に基づき、利用者からの要求を適切なサーバへ振り分けることにより、負荷配分の最適化を図る機能である。
第4の機能は、上記第1の機能を用いて要求を振り分ける際に、振り分け先を決定するための条件の活性化・非活性化を切り換えることにより、効率的な負荷の分散を実現する機能である。
第5の機能は、第4の機能を実行する際に、第2の機能で管理している各サーバ10,20,30の負荷状態に応じて、動的に振り分け条件を切り換える機能である。
まず、第1の機能である1システムビューについて説明する。図3は1システムビューの機能を示すブロック図である。なお、この図では、図2における2つの通信媒体44,45を包括して通信媒体46としている。
ここでは、端末63、64や、他のシステム51、52からDB42,43の更新処理の要求を出力する場合を例にとり説明する。端末63、64やシステム51、52から要求71,72を出力する際には、通信制御装置100の通信アドレス(A)を送信先として指定して出力する。すると、その要求71,72は通信媒体46を介して通信制御装置100に送られる。通信制御装置100では、振り分け処理部112が要求71,72に含まれるロードシェアシステムとしての通信アドレス(A)をサーバ10,20,30のいずれかの通信アドレス(B),通信アドレス(C),通信アドレス(D)に変換する。そして、通信アドレス変換後の要求73,74,75は、通信制御装置100からLAN41を介していずれかのサーバに転送される。サーバ10,20,30内のアプリケーション11,21,31は、要求を受け取るとその要求内容に応じてDB42,43を操作する。
このようにして、端末63、64や、他のシステム51、52からは、通信制御装置100の通信アドレス(A)を指定して、アプリケーションの機能の提供を受けることができる。つまり、利用者はサーバ10,20,30の存在を意識する必要がない。
図4は利用者が認識しているネットワーク網のイメージを示す図である。利用者は、通信媒体46には端末63,64、システム51、52及び共用DB42,43を操作するアプリケーション101aを有するサーバ100aが存在しているように認識している。このサーバ100aは、実際にはサーバ10,20,30と通信制御装置100との複合システムである。
一方、通信制御装置100では、通信アドレス(A)と各サーバ10,20,30のそれぞれの通信アドレス(B),通信アドレス(C),通信アドレス(D)とを相互にリンクさせている。
図5は通信制御装置100内での通信アドレスのリンク状態を示す図である。通信制御装置100の通信アドレス(A)81からサーバ10の通信アドレス(B)82、サーバ20の通信アドレス(C)83、サーバ30の通信アドレス(D)84の順でリンクが張られている。また、通信アドレス(B)82から通信アドレス(A)81へ、通信アドレス(C)83から通信アドレス(A)81へ、通信アドレス(D)84から通信アドレス(A)81へ、それぞれリンクが張られている。
この状態で、振り分け処理部112は、利用者の端末63、64やシステム51,52側からサーバ10,20,30側へ、あるいはサーバ10,20,30側から利用者の端末63,64やシステム51,52側への通信アドレスの変換を行う。以下に、通信アドレスの変換方式を示す。
図6は通信アドレスの変換方式を示す図である。このネットワーク網では、2つの通信アドレスがペアとなって伝送される。図中の左側は、通信制御装置100とサーバ10,20,30との間で使用される通信アドレスペア85〜87である。通信アドレスペア85〜87は、各サーバ10,20,30のそれぞれの通信アドレス(B),通信アドレス(C),通信アドレス(D)と利用者の端末の通信アドレス(x)とのペアである。一方、図中の右側は、通信制御装置100と端末61〜64との間で使用される通信アドレスペア88である。通信アドレスペア88は、各通信制御装置100の通信アドレス(A)と利用者の端末の通信アドレス(x)のペアである。
通信制御装置100内の振り分け処理部112は、通信媒体46を介して通信アドレスペア88を受け取ると、通信アドレスペア88内の自己の通信アドレス(A)をサーバ10,20,30のいずれかの通信アドレスに変更する。そして、変更後の通信アドレスペアをLAN41上に出力する。
次に、第2の機能である、サーバ内のアプリケーションの状態を通信制御装置100で一括管理する機能について説明する。図7は通信制御装置100での一括管理機能の概略構成を示すブロック図である。この機能を実現するために、通信制御装置100側の状態管理部111と各サーバ10,20,30側の状態管理エージェント13,23,33との間でサーバの状態管理用の通信パス91,92,93を確立している。状態管理部111は通信パス91,92,93を使用して、アプリケーション11,21,31の状態要求を状態管理エージェント13,23,33へ送信する。状態管理エージェント13,23,33は状態取得要求を受信すると、アプリケーション11,21,31の動作状況を状態管理部111へ送信する。状態管理部111は、各状態管理エージェント13,23,33が応答したアプリケーション11,21,31の動作状況を記憶装置120で一括管理する。記憶装置120内では、各サーバの動作状況は負荷分散情報121と状態管理テーブル122とに分けて管理される。以後、負荷分散情報121と状態管理テーブル122とに運用情報を加えたものを管理簿と呼ぶ。
図8は状態管理を行う際の処理手順を示すフローチャートである。これは、状態管理部111が実行する処理である。
〔S1〕状態管理エージェント13,23,33との間で状態管理用の通信パス91,92,93を確立する。
〔S2〕状態管理エージェント13,23,33に対して状態要求を送信する。
〔S3〕状態管理エージェント13,23,33からサーバ10,20,30毎のアプリケーション11,21,31の状態を受信する。
〔S4〕アプリケーション11,21,31の状態が変化した際に状態管理エージェント13,23,33が出力する状態変更情報を受信する。
〔S5〕サーバ10,20,30のアプリケーション11,21,31の状態を管理簿を用いて管理する。
以下に、管理簿の内容について説明する。図9は管理簿内の一例を示す図である。管理簿では、「業務」、「運用情報」、「状態管理情報」、及び「負荷分散情報」に分けて管理されている。
「業務」は、ロードシェアシステムで実行される処理の単位である。「運用情報」は、「業務」がサービスの提供を行っている場合には「運用中」であり、サービスの提供を停止している場合には「停止中(抑止状態)」である。
「状態管理情報」は、「通信先サーバ情報」、「サーバ上のアプリケーションプログラム」、「ID」、及び「状態」に別れている。「通信先サーバ情報」は、後に続く情報がどのサーバの情報であるかを示している。「サーバ上のアプリケーションプログラム」は、サーバ内で業務を提供しているアプリケーションプログラムの名称を示している。「ID」は、サーバ上のアプリケーション単位に割り振られた識別番号である。「状態」は、アプリケーションが使用可能であるか否かを示している。
なお、「ID」の情報は、状態管理エージェントとの間の状態に関する情報の交換の際に使用される。ネットワーク連携装置100a内でエージェントからの状態を反映する際、「ID」を用いることにより資源検索の高速化が図れる。
「負荷分散情報」は、「振り分け数の情報」と「比率情報」とに分かれている。「振り分け数の情報」は、アプリケーションへ振り分けた利用者からの要求の数を示している。「比率情報」は、当該業務に対する全要求数の中の、各サーバに現在振り分けられている要求の割合を示している。この数字から、アプリケーションの負荷の分散状況を知ることができる。
図10は状態管理処理の概念図である。この図では、サーバ10はアプリケーション11,14を有しており、サーバ20はアプリケーション21,24を有している。なお、アプリケーション11とアプリケーション21とは同じ業務を提供するアプリケーションである。また、状態管理簿123の内容は、図9に示したものである。ここで、アプリケーション11,14,21は動作しているが、アプリケーション24は停止しているものとする。
このような条件で、通信制御装置100内の状態管理部111は、まずサーバ10とサーバ20とに対する問い合わせ情報101、103を組み立て、それを状態要求として出力する。サーバ10,20内のそれぞれの状態管理エージェント13,23は状態要求に応答し、自己のサーバ内のアプリケーションの状態を示す応答情報102、104を出力する。状態管理部111は応答情報102、104を受けとり、その内容を管理簿123に反映する。
図11は通信制御装置の状態要求の際のフローチャートである。これは、通信制御装置100内の状態管理部111が実行する処理である。
〔S11〕管理状態を通信するための通信パスを各状態管理エージェントとの間で確立する。
〔S12〕管理簿より状態管理情報の読み込みを行う。
〔S13〕サーバ単位に状態問い合わせ情報を組み立てる。この時に、資源単位に「ID」が設定される。
〔S14〕サーバ内状態管理エージェントへの状態要求を送信する。
図12は状態通知を受け取った通信制御装置の処理手順を示すフローチャートである。これは、通信制御装置100内の状態管理部111が実行する処理である。
〔S21〕状態管理エージェントからの状態通知を受信する。
〔S22〕受信した状態通知内のIDから、資源を特定する。
〔S23〕特定した資源が使用可能であるのか、使用不可能であるのかを判別する。使用可能であればステップS24に進み、使用不可能であればステップS25に進む。
〔S24〕特定した資源が使用可能である旨を管理簿に反映する。
〔S25〕特定した資源が使用不可能である旨を管理簿に反映する。
以上の図11、図12が通信制御装置で実行される処理手順である。次に、各サーバ内における状態管理エージェントで実行される処理手順を説明する。
図13は通信制御装置からの要求により状態通知を出力する際の状態管理エージェントの処理手順を示すフローチャートである。
〔S31〕通信制御装置との間の状態管理パスを確立する。
〔S32〕ネットワーク連携装置内の状態管理部から振り分け資源の状態要求を受信する。
〔S33〕振り分け資源の状態確認及び状態遷移通知出口を状態管理エージェント内に登録する。これで、振り分け資源名とその状態を示す管理テーブルが作成される。ここで、状態遷移通知出口とは、サーバ内でアプリケーションを管理しているプログラムから状態管理エージェントへ資源の状態を通知するための情報伝達の受信口である。この受信口(状態遷移通知出口)を状態管理エージェントに登録しておくことにより、アプリケーションの状態を状態管理エージェントが取得可能となる。
〔S34〕状態要求で指定された資源が使用可能状態か、使用不可能状態かを判別する。使用可能状態であればステップS35に進み、使用不可能状態であればステップS36に進む。
〔S35〕状態要求で指定された資源が使用可能である旨を状態管理部に通知する。
〔S36〕状態要求で指定された資源が使用不可能である旨を状態管理部に通知する。
図14は資源の状態の変化により状態通知を出力する際の状態管理エージェントの処理手順を示すフローチャートである。
〔S41〕振り分け資源(ロードシェアシステムで機能を分散させるべき資源)の状態の変化を検出する。
〔S42〕状態遷移が発生し、状態遷移出口を起動する。
〔S43〕状態遷移の状況を状態管理部に通知する。
〔S44〕他の資源に状態の変化があるか否かを判断し、状態が変化した資源があればステップS41に進み、状態が変化した資源がなければステップS45に進む。
〔S45〕状態管理パスを解放し、状態遷移通知出口を削除する。
以上のようにして、サーバ内のアプリケーションの状態を通信制御装置100で一括管理することができる。この方式では、管理簿内のIDにより管理対象を特定し、サーバシステムに適した状態管理エージェントを配置することにより、サーバシステムの種別に依存せずに通信制御装置100でアプリケーションを一括管理することができる。例えば、サーバシステムが大型のホスト計算機であっても、UNIX(登録商標)のシステムであってもよい。
また、管理簿内のIDにより管理対象を特定し、サーバシステムに適した状態管理エージェントを配置することにより、アプリケーションの通信プロトコルに依存せずに管理することができる。
次に、第3の機能である、上記第1の機能と第2の機能とを併用した機能について説明する。この機能では、通信制御装置100が一括管理している各サーバの管理情報に基づき、利用者からの要求を適当なサーバへ振り分けることにより、負荷配分の最適化を図る。
図15は一括管理された管理情報に基づき利用者からの要求を振り分ける処理の概念図である。図において、状態管理エージェント13,23,33と状態管理部111との間には通信パス94〜96が確立されている。これにより、各サーバ10,20,30内のアプリケーション11,21,31の動作状態は、状態管理部111で一括管理される。それらの状態管理情報は記憶装置120内に管理簿として格納されている。
そして、利用者の端末61,63,64からDB42,43に対する要求76,76aが出力されると、その要求は通信媒体46を介して振り分け処理部112に入力される。振り分け処理部112は、状態管理部111から各アプリケーション11,21,31の現在の状態の情報を取得し、その情報から各サーバへの負荷が分散するように、要求を実行させるアプリケーションを特定する。そして、特定したアプリケーションに対して要求77〜79を出力する。要求を受け取ったアプリケーションは、要求内容に従ってDB42,43を処理する。
ここで、振り分け処理部112では、利用者からの要求の一部を振り分けキーとし、振り分けキーに対応付けた振り分け先候補とその所在を管理しておく。図16は振り分け処理のフローチャートである。なお、ステップS51〜ステップS59までの処理は、振り分け処理部が実行する。ステップS60の処理はトランザクション処理であればアプリケーションが実行し、コネクション処理であればアプリケーションと利用者の端末とにより実行される。
〔S51〕ネットワーク利用者からのコネクション確立要求、またはトランザクション開始要求を受信する。
以下のステップは、サーバ側のコネクション確立処理、またはトランザクションの開始処理である。
〔S52〕振り分けキー情報を取得する。
〔S53〕振り分け先サーバ候補の抽出をする。
〔S54〕振り分け先サーバ候補があるか否かを判断し、振り分け先サーバ候補があればステップS56へ進み、振り分け先サーバ候補がなければステップS55へ進む。
〔S55〕振り分け先サーバ候補がない場合には、利用者からの要求がコネクション振り分けなら確立失敗とし、利用者からの要求がトランザクションの振り分けなら一定時間保留とし、時間経過後再度ステップS54へ進む。
〔S56〕振り分け先サーバ候補があれば、振り分け先サーバを決定する。
〔S57〕サーバ側コネクションの確立、またはトランザクションの振り分け処理を行う。
〔S58〕コネクション確立が成功したか否かを判断し、成功であればステップ60へ進み、失敗であればステップS59へ進む。なお、要求がトランザクション処理であればこのステップは実行せず、ステップS60に進む。
〔S59〕コネクション確立が失敗の場合には、振り分け候補から失敗したサーバを除外し、ステップS54に進む。
〔S60〕コネクション確立が成功の場合には、データ通信またはトランザクション処理を実行する。
次に、振り分けキーの取得処理について詳しく説明する。図17は振り分けキーの取得処理を示す図である。振り分け処理部112は状態管理部111を有している。状態管理部111では、振り分けキーごとに振り分け先候補とこの所在を管理している。
利用者からの要求75は、まず振り分け処理部112に入力される。振り分け処理部112では、要求の中から振り分けキー75aを抽出する。振り分けキー75aは、状態管理部111に送られる。状態管理部111は、振り分けキー75aに対応する振り分け先候補とその所在に関する情報112bを抽出し、振り分け処理部112へ渡す。振り分け処理部112は、情報112bに基づき要求75の振り分け先を決定する。
なお、上記の例では要求の一部の文字列を振り分けキーとしているが、その文字列を端末名と組み合わせたり、ネットワーク利用者のデータや業務の名前など、様々なものを振り分けキーとすることができる。
以上のように、振り分けキーは利用者からのコネクションの確立要求やトランザクション開始時に受け付けた要求から抽出される。抽出する情報は通信プロトコルや振り分けの種類に応じて以下のように設定している。
コネクション振り分けにおいて、通信プロトコルがFNA(富士通ネットワークアーキテクチャ)の場合、宛て先(業務名)、通信元ネットワーク利用者名である。具体的には、業務の論理的な名前+端末名(端末グループ)、業務の論理的な名前+端末名+端末の属するシステムのアドレス、業務の論理的な名前+端末名+端末の属するシステムのアドレス+ユーザデータ内の任意のデータ等である。
コネクション振り分けにおいて、通信プロトコルがOSI(Open System Interconnection)の場合には、宛て先のアドレスと通信元のアドレスである。具体的には、業務のT−SAPアドレスと通信元のNSAPアドレス(OSIにおけるネットワーク層のアドレス)である。
TCP(Transmission Control Protocol)コネクション振り分けにおいて、通信プロトコルがTCP/IPの場合には、クライアントが確立した通信制御装置上のポート番号、送信元ネットワーク利用者名である。
トランザクションの振り分けの場合には、トランザクション処理における業務名、トランザクション開始時のメッセージの内容である。
なお、振り分けキーとして選択するデータを、アクセス種別(排他、共用、照会、更新等)と対応付けることで、システム全体のトランザクション性能やDBアクセスでの負荷の分散を図ることができる。
ところで、キーとなる情報がサーバとの間でのコネクションの確立要求に含まれていない場合、つまりトランスポート層よりも上位レベルの情報をキーとする場合には、利用者の端末側からトランスポート層の確立要求が送られただけでは、振り分け先を特定することができない。従って、従来のように端末とサーバのトランスポート層での接続を完了してから上位レベルの通信を行うという手順を踏むことができない。そこで本発明では、この問題を以下の方法で解決する。
図18は上位レベルの情報をキーとする場合のコネクション手順を示す図である。図において、まずネットワーク利用者の端末からトランスポート層の確立要求が出力される。通信制御装置は端末との間のトランスポートコネクションのみを確立し、サーバとのコネクションは保留にする。次いで、端末から上位レベルの確立要求が出力される。通信制御装置は、その要求からキーを抽出し、振り分けるべきサーバを特定する。サーバを特定したら、そのサーバとの間でトランスポート層のコネクションと上位レベルのコネクションとを順次確立する。最後に、端末との間の上位レベルのコネクションを確立する。以後は、端末とサーバ間でデータ転送が行われる。
このように、サーバとの間のトランスポート層のコネクションの確立を一時的に保留することにより、上位レベルのデータに含まれる詳細な情報を基に振り分け先を選択することができ、より信頼性の高い負荷分散を行うことができる。
次に、振り分け先サーバ候補の抽出処理の詳細を説明する。図19は振り分け先サーバ候補の抽出される情報のリンク状態を示す図である。まず、振り分け候補グループ510から振り分け候補(1)521に繋がっている。さらに、振り分け候補(1)521から振り分け候補(2)522へ繋がっている。以後、同様に最後の振り分け候補(n)523までが順に繋がっている。各振り分け候補521〜523には、業務情報531〜533、パス情報541〜543、サーバ情報551〜553が順に繋がっている。
振り分けサーバを決定する際には、図19の振り分け候補の情報から、以下の全ての条件を満たすものを候補として選択する。
第1に、振り分け情報が抑止状態(停止状態)でないこと。第2に、カレントセション数が最大振り分け数を超えていないこと。第3に、パス情報が抑止状態(停止状態)でないこと。第4に、業務状態が抑止状態(停止状態)でないこと。第5に、業務内のアプリケーションの状態が非活性状態でないこと。
図19では、各種振り分け情報ごとに状態情報を有している。例えば、抑止状態、アプリケーションの動作状態等である。このような状態情報を業務等の情報にまで持たせたのは、情報ごとに対応する資源への振り分けを抑止できるようにするためである。例えば、特定の業務のみ振り分けを一時的に抑止可能としたり、サーバ単位に振り分けを抑止可能とする。
次に、選択された振り分け候補の中からの、振り分け先サーバの決定方法を説明する。振り分け候補の中から、以下に論理式に従って求めた分散比率の最も少ないものを振り分け先と決定する。
{(TCn +1)/Rn }×100 ・・・・・(1)
ここで、TCn はn番目の振り分け候補のサーバでの振り分け済セション数であり、Rn はn番目の振り分け候補のサーバ分散比率である。
なお、式(1)の値が同じ振り分け候補のサーバが複数存在した場合には、次のように取り扱う。コネクションの振り分けの場合には、最後に振り分けを行ったサーバの次のサーバに決定する。トランザクション振り分けの場合には、過去の振り分け実績(振り分けたトランザクション数)が一番少ないサーバに決定する。これは、一時点で振り分けるセションやトランザクションが候補となるサーバ数よりも少なく、かつ、セションは何度も確立解放を繰り返すような運用を行ったときに、すべてのサーバへの振り分けを可能とするためである。
特別な振り分けとして、同一のクライアントとサーバ(またはサーバ内のアプリケーション)との間で複数のセションが確立する運用では、上記のような論理によらず、1つ目のセションと同じサーバへの振り分けを行うこともできる。なお、両者の選択は通信プロトコルの違いにより実現するか、あるいは、予め定義しておく。これによれば、同じクライアントとサーバとの間で、複数の業務を同時に連携して行う場合に有効となる。
また、トランザクションの振り分けにおいて、振り分け候補が1つもない場合には、振り分けを保留することができる。具体的には、振り分け候補が1つもないか、または、最大振り分け数を超えたものがある場合には、トランザクション開始要求を一定の保留時間だけ保留する。なお、保留するトランザクション開始要求は、保留可能な要求数の範囲内でなければならない。また、保留時間については、トランザクション要求毎に保留時間の変更が可能である。
これにより、瞬間的にトランザクション要求が大量に発生した場合のサーバへの過負荷が防止できるとともに、ホットスタンバイ時のシステム切り換え時にトランザクション要求を失敗させずにすむ。
次に第4の機能である業務の運用を切り換えることにより、サーバ間の効率的な負荷の分散を行う機能について説明する。この機能を実行するには、図2に示す振り分け処理部112に対して各種条件の定義を入力する。この定義では、各サーバのアプリケーションへの振り分け条件をグループ化する。このグループ化により、複数の振り分け条件をまとめて管理することができる。
さらに、振り分け条件グループの定義に「振り分け状態」を持たせる。そして、振り分け処理部112は、振り分け先の決定に使用する振り分け条件グループを「活性状態」に、振り分け先の決定に使用しない振り分け条件グループを「非活性状態」にすることにより業務の振り分けを管理する。このとき、各振り分け条件グループは業務の運用に対応している。
図20は振り分け処理部112に入力する振り分け定義の例を示す図である。この例では、実資源の定義として、サーバ10,20,30をそれぞれ「サーバX」、「サーバY」、「サーバZ」と名付けており、各サーバ10,20,30内で業務を実行するアプリケーション11,21,31を、それぞれ「業務プログラムA(業務A)」、「業務プログラムB(業務B)」、「業務プログラムB(業務B)」と名付けている。ここで、サーバ20とサーバ30とは同じ業務を提供しており、ロードシェア形態をとっている。
振り分けの定義において、「業務A」は、「振り分け条件グループA1(振り分け状態=活性)」と「振り分け条件グループA2(振り分け状態=非活性)」とに分かれている。「振り分け条件グループA1」の振り分け条件は「振り分け条件A1X(最大100)」であり、「振り分け条件グループA2」の振り分け条件は「振り分け条件A2X(最大50)」である。「業務B」は、「振り分け条件グループB1(振り分け状態=活性)」と「振り分け条件グループB2(振り分け状態=非活性)」とに分かれている。「振り分け条件グループB1」の振り分け条件は「振り分け条件B1Y(最大100)」、「振り分け条件B1Z(最大100)」である。一方、「振り分け条件グループB2」の振り分け条件は「振り分け条件B2Y(最大50)」、「振り分け条件B2Z(最大50)」である。
ここで、振り分け条件の最後のアルファベットが業務を実行するサーバを示しており、「最大」とはそのサーバへの振り分けが許される要求の最大数を示している。
振り分け処理部112は、振り分け状態が活性である振り分け条件グループの定義を使用して振り分け先のサーバを決定する。運用の切り換えは、活性状態の振り分け条件グループを非活性状態とし、新しい運用に使用すべき振り分け条件グループを活性状態とすることにより行う。
図21は図20に示した振り分け定義による運用の切り換え状況を示す図である。なお、運用の切り換え状況を説明する図(図21、図24、図26、図28、図30、図34)では、各サーバ10,20,30とアプリケーション11,21,31とには、その時の定義で与えられている名称を表記している。従って、与えられている定義によって、図中のサーバ等の表記も異なる。
「振り分け条件グループA1」と「振り分け条件グループB1」が活性状態の場合(図中、上側)では、利用者の端末63,64等からの業務Aの要求140は全てサーバ10に対する要求141となり、処理できる最大の要求数は「100」である。業務Bの要求150は、サーバ20とサーバ30とに対する要求151,152となり、サーバ20,30の処理できる最大の要求数はそれぞれ「100」ずつである。
ここで運用を「振り分け条件グループA2」と「振り分け条件グループB2」とを活性状態にすると(図中、下側)では、業務Aの要求140aは全てサーバ10に対する要求141aとなり、処理できる最大の要求数は「50」である。業務Bの要求150aは、サーバ20とサーバ30とに対する要求151a,152aとなり、サーバ20,30の処理できる最大の要求数はそれぞれ「50」ずつである。
ところで、上記の説明では各振り分け条件グループの状態(活性/非活性)を個々に切り換えることにより運用を切り換えているが、各分け条件グループを予め運用と対応づけておくことにより、運用の切り換え制御を簡略化することができる。
図22は振り分け条件グループと運用とを対応づけた場合の定義の例を示す図である。この例の定義は、図20に示したものと殆ど同じであるため、相違点のみを説明する。図20では各振り分け条件グループには振り分け状態が設定されていたが、図22の各振り分け条件グループには運用名が設定されている。この例では、「振り分け条件グループA1」は「運用α」、「振り分け条件グループA2」は「運用β」、「振り分け条件グループB1」は「運用α」、「振り分け条件グループB2」は「運用β」である。そして、図22で追加された項目として運用の振り分け状態の設定がある。図では、「運用α」の振り分け状態が「活性」、「運用β」の振り分け状態が「非活性」である。
そして、振り分け制御部112は、運用の振り分け状態を変更することにより運用の切り換えを行うことができる。従って、個々の振り分けグループを管理する必要がなく、切り換えの制御が簡略化される。
さらに、振り分け条件グループの定義にユーザの指定を追加し、ネットワークの利用者を指定することもできる。その場合、振り分け条件グループのユーザの指定には、ネットワーク利用者の端末名、ワイルドカード(*)、及び任意の端末群をグループ化したユーザグループに定義付けられた名前等を指定することができる。なお、ワイルドカードは、全ての利用者を振り分け可能であることを意味する。また、要求の一部をキーとして指定することにより、そのキーを有する要求を対象とすることもできる。
図23はユーザの指定を追加した振り分け定義を示す図である。この例では簡単のために2つのサーバ10,20で説明する。
実資源の定義として、サーバ10,20をそれぞれ「サーバX」、「サーバY」とし、各サーバ10,20内で業務を実行するアプリケーション11,21を、それぞれ「業務A」、「業務B」と定義している。
振り分けの定義において、「業務A」は、「振り分け条件グループA11(運用=運用α、ユーザ=端末群1)」、「振り分け条件グループA12(運用=運用α、ユーザ=端末群2)」、及び「振り分け条件グループA2(運用=運用β、ユーザ=*)」に分かれている。「振り分け条件グループA11」の振り分け条件は「振り分け条件A11X(最大50)」であり、「振り分け条件グループA12」の振り分け条件は「振り分け条件A12X(最大50)」であり、「振り分け条件グループA2」の振り分け条件は「振り分け条件A2X(最大50)」である。
「業務B」は、「振り分け条件グループB11(運用=運用α、ユーザ=端末群1)」、「振り分け条件グループB12(運用=運用α、ユーザ=端末群2)」、「振り分け条件グループB21(運用=運用β、ユーザ=端末群1)」、「振り分け条件グループB22(運用=運用β、ユーザ=端末群2)」とに分かれている。「振り分け条件グループB11」の振り分け条件は「振り分け条件B11Y(最大50)」、「振り分け条件グループB12」の振り分け条件は「振り分け条件B12Y(最大50)」、「振り分け条件グループB21」の振り分け条件は「振り分け条件B21Y(最大25)」、「振り分け条件グループB22」の振り分け条件は「振り分け条件B22Y(最大25)」である。
図では、運用αの振り分け状態が活性であり、運用βの振り分け状態が非活性である。
このような定義が設定された状態で、振り分け処理部112は、利用者からの要求に付加されるユーザ情報や要求内容と活性状態の振り分け条件とを対比することにより、振り分け先を決定する。そして、運用の振り分け状態を変更することにより、運用を切り換えることができる。
図24はユーザの指定を追加した振り分け定義による運用の切り換え状況を示す図である。ここで、端末63,64は第1の端末群181に含まれ、端末65,66は第2の端末群182に含まれている。
[運用α]の状態では、第1の端末群181から業務Aへの要求160は全てサーバ10への要求162となり、最大の要求数は「50」である。第1の端末群181から業務Bへの要求170は全てサーバ20への要求172となり、最大の要求数は「50」である。第2の端末群182から業務Aへの要求161は全てサーバ10への要求163となり、最大の要求数は「50」である。第2の端末群182から業務Bへの要求171は全てサーバ20への要求173となり、最大の要求数は「50」である。
ここで、運用が切り換えられ[運用β]になると、第1の端末群181から業務Aへの要求160aと第2の端末群182から業務Aへの要求161aとは、全てサーバ10への要求164となる。そして、要求164の最大の要求数は、双方の端末群からの総要求数で換算して「50」である。一方、第1の端末群181から業務Bへの要求170aは全てサーバ20への要求172aとなり、最大の要求数は「25」である。第2の端末群182から業務Bへの要求171aは全てサーバ20への要求173aとなり、最大の要求数は「25」である。
この図に示すようにユーザを指定した運用の切り換えを行うことにより、利用者の利用頻度の地域格差を考慮した運用の切り換えが可能となる。
次に、第5の機能である、第1の機能で管理している各サーバの負荷状態に応じて、動的に振り分け条件を切り換える機能について説明する。運用操作部113は、状態管理部111が管理している各サーバの負荷状態等に応じて運用の切り換えを行うこともできる。この場合、アプリケーションの定義に「振り分け状態」の設定項目を設ける。この「振り分け状態」は、対応するアプリケーションの振り分けが可能な場合には「活性」とし、振り分けが不可能な場合には「非活性」とする。
図25はアプリケーションの状態の定義を追加した振り分け定義を示す図である。この図では、実資源の定義として、サーバ10,20,30をそれぞれ「サーバX」、「サーバY」、「サーバZ」とし、各サーバ10,20,30内で業務を実行するアプリケーション11,21,31を、それぞれ「業務プログラムA(業務A)」、「業務プログラムB(業務B)」、「業務プログラムB(業務B)」と定義している。さらに、各アプリケーション11,21,31には振り分け状態が設定されており、図中では全て「活性」である。なお、振り分けの定義は、図22に示した例と同じである。
ロードシェア形態の業務で特定のサーバのアプリケーションにトラブルが発生した場合、トラブルが発生したサーバ内に配置された状態管理エージェントから状態管理部111へアプリケーションに障害が発生した旨が通知される。状態管理部111は、障害の発生したアプリケーションの状態を「非活性」とする。
図26はロードシェア形態でのトラブル対処の例を示す図である。図中のトラブル発生前の状態(図中、上側)は、図21の[運用α]の状態と同じである。ただし、この図では、各サーバ10,20,30内に状態管理エージェント13,23,33を図示している。ここで、例えば、サーバ20に障害が発生した場合には、サーバ20内の状態管理エージェント23が、通信制御装置100内の状態管理部111にアプリケーション21が使用できないことを通知する。状態管理部111は、アプリケーション21の状態を「非活性」とする。これにより、利用者から業務Bへの要求がアプリケーション21へ振り分けられることはなくなる。
トラブル発生後の状態(図中、下側)では、利用者から業務Bへの要求150は、全てサーバ30に対する要求152aとなる。ここで、サーバ20のアプリケーション21が復旧した場合には、サーバ20内の状態管理エージェント23がアプリケーション21が復旧した旨を状態管理部111に通知する。状態管理部111は、その通知を受けてアプリケーション21の振り分け状態を活性とする。これにより、アプリケーション21に対する要求の振り分けが再開される。
このように、定義内に各アプリケーションの振り分け状態を設定しておき、振り分け処理部112は「活性」状態のアプリケーションの中から振り分け先を選択することにより、アプリケーションのメンテナンス時にも利用者に対する業務の提供を停止させずにすむ。
次に、システム運用におけるサーバ障害発生時の運用について説明する。この場合、サーバの定義に「振り分け状態」を持たせ、振り分け可能な場合に「活性状態」、振り分け不可能な場合に「非活性状態」として管理する。
図27はホットスタンバイ切り換えを実現するための振り分け定義を示す図である。この例では、1つのデータベースを共有しているサーバ20,30のうち、サーバ20を現用、サーバ30を待機として運用している。実資源の定義として、サーバ20,30をそれぞれ「サーバX」、「サーバY」とし、各サーバ20,30内で業務を実行するアプリケーション21,31をともに「業務A」と定義している。
振り分けの定義において、「業務A」は、「振り分け条件グループA1(運用名=運用α)」と「振り分け条件グループA2(運用名=運用β)」とに分かれている。「振り分け条件グループA1」の振り分け条件は「振り分け条件A1X(最大100)」と「振り分け条件A1Y(最大100)」とであり、「振り分け条件グループA2」の振り分け条件は「振り分け条件A2X(最大50)」と「振り分け条件A2Y(最大50)」とである。
現在、「運用α」が活性状態であり、「運用β」が非活性状態である。
図28はホットスタンバイ切り換えの状況を示す図である。2つのサーバ20,30が共に正常に動作している状態(図中、上側)では、端末63,64やシステム51からの業務Aの要求142は、現用であるサーバ20への要求143として振り分けられている。この時、双方のサーバ20,30内の状態管理エージェント23,33は、定期的に通信を行うことにより、互いに監視し合っている。従って、一方のサーバがダウンすると、他方のサーバ内の状態管理エージェントがそのことを検出する仕組みになっている。
この状態において、現用のサーバ20にトラブルが発生すると、サーバ20からの通信が滞ったことをサーバ30内の状態管理エージェント33が検出し、サーバ20がダウンしたことを認識する。すると、状態管理エージェント33は通信制御装置100の振り分けプログラム110(その中の状態管理部111)との間の通信パスを利用して、サーバ20がダウンした旨を通信制御装置に通知する。通信制御装置100の状態管理部111がその通知を受け取ると、それに応じて、運用操作部113がサーバ20の振り分け状態を非活性状態に変更する。続いて、サーバ30の振り分け状態を活性状態に変更する。これにより、待機サーバであったサーバ30が新たに現用サーバとなる。従って、振り分け状態変更後(図中、下側)では、利用者の端末63,64等から出力された要求が、全てサーバ30への要求144となる。
この方式を使用して、各サーバの振り分け状態を順次操作することで、業務を停止せずにホットスタンバイ運用のメンテナンスを行うことができる。
次に、業務の振り分け先の決定を、様々な要素を考慮して行うこともできる。その決定のファクターとしては、例えば、サーバ間の相対振り分け比率、アプリケーションに対する最大振り分け数を指定する。
サーバ間の相対振り分け比率とは、ロードシェア形態の各サーバ上のアプリケーション間の相対的な振り分け比率である。アプリケーションに対する最大振り分け数とは、アプリケーションがそのサーバで同時に処理可能な要求数である。
ところで、振り分け処理部112は、利用者からの要求が全アプリケーションの最大振り分け数の合計を超えた場合に、いずれかのサーバのアプリケーションが振り分け可能になるまで、待ち合わせ(保留)を行う機能を有している。この際、要求を無制限に待ち合わせると、通信制御装置が資源枯渇したり、ネットワーク利用者の端末がハングする事態が生じる。
そこで、振り分け条件グループに、業務の最大処理数を超えた場合の処理を決定するためのファクターとして「要求の最大保留数」と「要求の最大保留時間」を指定する。この指定により、待ち合わせの上限が設定される。従って、待ち合わせが「要求の最大保留数」と「要求の最大保留時間」とのいずれかを超えた場合には、振り分け処理部112から利用者に対して処理不能の旨の応答を返し、利用者からの要求を失敗させる。
上記の2つの指定(「要求の最大保留数」,「要求の最大保留時間」)は、利用者からの要求を受信した際に振り分け先を決定するために使用する情報であり、運用中に変更操作を行っても利用者に悪影響を及ぼさない。振り分け処理部112は、これらの2つの指定を動的に変更することにより、振り分け配分を最適に保つことができる。
図29は振り分け配分の動的な変更を行うための定義の例を示す図である。この例では、実資源の定義として、サーバ20,30をそれぞれ「サーバX」、「サーバY」とし、各サーバ20,30内で業務を実行するアプリケーション21,31を、共に「業務A」と定義している。この2つのサーバ20,30はロードシェア形態をとっている。
振り分けの定義において、業務Aには振り分け条件グループA1(最大保留数=5,最大保留時間60)が定義されている。振り分け条件グループA1には、2つの振り分け条件として、振り分け条件A1X(振り分け比率=3,最大振り分け数=100)と振り分け条件A1Y(振り分け比率=3,最大振り分け数=100)が設定されている。
さらに、変更内容が設定されており、その内容は、振り分け条件A1Yに対して、振り分け比率を「3」→「1」、最大振り分け数を「100」→「50」とするものである。
図30は振り分け配分の動的な変更状況を示す図である。通常動作時(図中、上側)は、利用者からの要求が、アプリケーション21への要求190とアプリケーション31への要求191とに均等に割り振られている。ここで、サーバ30に臨時業務35が発生すると(図中、下側)、アプリケーション31への振り分け比率が「1」になる。従って、アプリケーション21への要求190aはアプリケーション31への要求191aの3倍となる。
以上の説明が、図2に示したマルチサーバシステムで行うことができる各種処理機能である。ここで、通信制御装置100内の振り分けプログラム110とサーバ内の状態管理エージェントの内部構成について説明する。
図31は振り分けプログラムと状態管理エージェントの内部構成を示すブロック図である。サーバ30の状態管理エージェント33は、他サーバ監視部33a、アプリケーション監視部33b、コマンド機能部33c、及び通信制御機能部33dを有している。他サーバ監視部33aは、サーバ10,20内の他サーバ監視部と通信を行っており、互いに正常に動作していることを確認し合っている。アプリケーション監視部33bは、サーバ30内の複数のアプリケーション31,31aの動作状況を監視している。コマンド制御部33cは、操作端末30aからのコマンド入力に応じて、各種命令を出力する。通信制御機能部33dは、LAN41を介した通信を制御する。
振り分けプログラム110は、図2に示した状態管理部111、振り分け処理部112、運用操作部113に加え、通信制御部114とコマンド機能部115とを有している。通信制御部114は、LAN41を介した通信を制御する。コマンド機能部115は、操作端末105からのコマンド入力に応じて、サーバに対する状態要求等を出力する。また、操作端末105からの入力により、運用切り換え命令を運用操作部113に出力する。運用操作部113は運用切り換え命令に従って、運用の切り換えを行う。
以上の説明が、1台の通信制御装置によりロードシェアシステムを構成した場合である。以下に、2台の通信制御装置によりロードシェアシステムを構成した場合を説明する。まず、2台の通信制御装置で1システムビューを実現する場合を以下に示す。
図32は2台の通信制御装置を有するマルチサーバシステムを示す図である。このシステムには、ロードシェア運用を行っている3台のサーバ210,220,230と2台の通信制御装置240,250がLAN202を介して接続されている。通信制御装置240,250は、通信媒体203を介して他のシステム260,270と接続されている。
サーバ210,220,230は、同じ業務を行うアプリケーション211,221,231を有しており、このアプリケーション211,221,231によって1つのデータベース(DB)201を共有している。また、各サーバ210,220,230は、それぞれ異なるアドレスを有している。通信制御装置240,250は、それぞれ振り分けプログラム241,251を有している。また、通信制御装置240,250は同じ通信アドレスを有している。サーバからサービスを受けるシステム260,270は、それぞれアプリケーション261,271を有している。
このような構成により、システム260内で動作するアプリケーション261が、サーバ210,220,230内のアプリケーション211,221,231と振り分け機能を利用して通信する。
このような運用では、アプリケーション261と通信制御装置との間に確立するコネクションは、通信アドレスNと通信アドレス(4)との通信アドレスペアのコネクション上に、複数の上位レベルのコネクションを確立することができる。そのため、個々のコネクションを識別するための識別子が必要となる。
ここで、2台の通信制御装置240,250がそれぞれ上位レベルのコネクションに「10」を割り振ったとする。すると、ネットワークの利用者である通信相手のシステム260では、コネクションの確認ができなくなる。
この問題を回避するために、通信制御装置240,250のそれぞれが管理する上位の通信資源の範囲を、定義等によって重複しないようにする。通信資源を分割する方法としては、以下の3パターンが考えられる。
第1の方法は定義を用いる方法である。これは、通信制御装置240,250での管理範囲をそれぞれの通信制御単位に事前に定義することで分割管理を実現する方法である。
例えば、トランスポート層のレファレンス値は、通信時のNSAPアドレス単位に1〜65535までの値であるため、これを4分割して、その2つをそれぞれ通信制御装置240,250に定義する。残りの2つのブロックは、将来の通信制御装置の増設用に未割当とする。
第2の方法は管理プログラムによる方法である。この方法では、上位レベルの資源の分割範囲を管理するプログラムと、各通信制御装置内の通信制御プログラムとで、動的に分割範囲を獲得または配分する。
図33は管理プログラムによる通信資源の分割の状況を示す図である。通信制御装置240は、資源の分配管理プログラム242と通信制御・振り分けプログラム243とを有している。通信制御装置250は、通信制御・振り分けプログラム252を有している。
各通信制御装置240,250内の通信制御・振り分けプログラム243,252は、システム起動時や上位レベルのコネクション確立時に振り分け処理部から資源の分割範囲を入手する。図の例では、通信制御・振り分けプログラム243には1〜100が割り当てられ、通信制御・振り分けプログラム252には501〜600が割り当てられている。
第3の方法はコネクション確立時に分配する方法である。この方法では、上位レベル(トランスポート層)のコネクションの確立時に上位資源を管理するプログラム(図33における分配管理プログラム242に該当する)から資源を獲得する。
以上のいずれかの方法で、分配管理を実現することができる。
また、通信制御装置を2台設けた場合には、サーバの内の状態管理エージェントから各通信制御装置へ状態の変化を通知する。図34は通信制御装置が2台ある場合のサーバからの通知による運用切り換え状況を示す図である。図において、2台のサーバ310,320と2台の通信制御装置301,302とは、LANを介して接続されている。通信制御装置301,302には、それぞれ個別の通信媒体343,344を介して、端末361〜364や他のシステム351,352が接続されている。
サーバ310,320内には、アプリケーション(業務プログラムA)311,アプリケーション(業務プログラムB)321と状態管理エージェント312,322が設けられている。通信制御装置301,302内には、振り分けプログラム301a,302aが設けられている。
切り換え前の状態(図中、上側)では、通信媒体343を介して送られてきた業務A要求はサーバ310へ、業務Bの要求はサーバ320へ送られる。それらの最大は、共に100である。同様に、通信媒体344を介して送られてきた業務A要求はサーバ310へ、業務Bの要求はサーバ320へ送られる。それらの最大は、共に100である。
ここで、状態管理エージェント312から業務プログラムAの利用率低下などの情報が、各通信制御装置301,302へ送られると、サーバ310へ送られる要求の最大数が抑制される。図では(図中、下側)、各通信制御装置301,302からの最大要求数が50に制限されている。