(57)【要約】【課題】リクエストを処理する装置の切り替えを適切に実施する。【解決手段】通信部２１１は、検査信号を第１装置へ送信し、検査信号に対する応答と第１装置の負荷を示す負荷情報とを、第１装置から受信する。計算部２１２は、所定期間内における応答と負荷情報とに基づいて、第１装置の負荷毎に、検査信号に対する第１装置の応答時間の閾値を計算する。制御部２１３は、所定期間の経過後に、第１装置の応答時間が第１装置の負荷に対応する閾値を超えた場合、第１装置に対するリクエストを第１装置と第２装置とに振り分ける。決定部２１４は、リクエストが第１装置と第２装置とに振り分けられた後、第１装置から受信する負荷情報が示す第１負荷と、第２装置から受信する負荷情報が示す第２負荷とを比較した結果に基づいて、第１装置から第２装置への切り替えを決定する。【選択図】図２
2019144715.tif 000002
【特許請求の範囲】
【請求項１】
検査信号を第１装置へ送信し、前記検査信号に対する応答と前記第１装置の負荷を示す負荷情報とを、前記第１装置から受信する通信部と、
所定期間内における前記応答と前記負荷情報とに基づいて、前記第１装置の負荷毎に、前記検査信号に対する前記第１装置の応答時間の閾値を計算する計算部と、
前記所定期間の経過後に、前記第１装置の応答時間が前記第１装置の負荷に対応する閾値を超えた場合、前記第１装置に対するリクエストを前記第１装置と第２装置とに振り分ける制御部と、
前記リクエストが前記第１装置と前記第２装置とに振り分けられた後、前記第１装置から受信する負荷情報が示す第１負荷と、前記第２装置から受信する負荷情報が示す第２負荷とを比較した結果に基づいて、前記第１装置から前記第２装置への切り替えを決定する決定部と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記決定部は、前記第２負荷が前記第１負荷よりも小さく、かつ、前記第１装置の応答時間が前記第１負荷に対応する閾値を超えている場合、前記第１装置から前記第２装置への切り替えを決定することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記制御部は、前記第２負荷が前記第１負荷よりも大きく、かつ、前記第２負荷と前記第１負荷との差分が所定値よりも大きい場合、前記第１装置に対するリクエストを前記第１装置と第３装置とに振り分け、
前記決定部は、前記リクエストが前記第１装置と前記第３装置とに振り分けられた後、前記第１装置から受信する負荷情報が示す負荷と、前記第３装置から受信する負荷情報が示す負荷とを比較した結果に基づいて、前記第１装置から前記第３装置への切り替えを決定することを特徴とする請求項１又は２記載の情報処理装置。
【請求項４】
前記制御部は、前記第２負荷が前記第１負荷よりも大きく、かつ、前記第２負荷と前記第１負荷との差分が前記所定値以下である場合、前記第１装置に対するリクエストを、前記第１装置内で動作する第１仮想マシンと、前記第３装置内で動作する第２仮想マシンとに振り分け、
前記第２仮想マシンは、前記第１仮想マシンよりも性能が高い仮想マシンであり、
前記決定部は、前記リクエストが前記第１仮想マシンと前記第２仮想マシンとに振り分けられた後、前記第１装置から受信する負荷情報が示す負荷と、前記第３装置から受信する負荷情報が示す負荷とを比較した結果に基づいて、前記第１装置から前記第３装置への切り替えを決定することを特徴とする請求項３記載の情報処理装置。
【請求項５】
第１装置と、
第２装置と、
前記第１装置に対するリクエストを受信し、受信したリクエストを前記第１装置へ送信する情報処理装置とを備え、
前記情報処理装置は、
検査信号を第１装置へ送信し、前記検査信号に対する応答と前記第１装置の負荷を示す負荷情報とを、前記第１装置から受信する通信部と、
所定期間内における前記応答と前記負荷情報とに基づいて、前記第１装置の負荷毎に、前記検査信号に対する前記第１装置の応答時間の閾値を計算する計算部と、
前記所定期間の経過後に、前記第１装置の応答時間が前記第１装置の負荷に対応する閾値を超えた場合、前記リクエストを前記第１装置と前記第２装置とに振り分ける制御部と、
前記リクエストが前記第１装置と前記第２装置とに振り分けられた後、前記第１装置から受信する負荷情報が示す負荷と、前記第２装置から受信する負荷情報が示す負荷とを比較した結果に基づいて、前記第１装置から前記第２装置への切り替えを決定する決定部と、
を含むことを特徴とする情報処理システム。
【請求項６】
所定期間内において、検査信号を第１装置へ送信し、
前記検査信号に対する応答と前記第１装置の負荷を示す負荷情報とを、前記第１装置から受信し、
前記応答と前記負荷情報とに基づいて、前記第１装置の負荷毎に、前記検査信号に対する前記第１装置の応答時間の閾値を計算し、
前記所定期間の経過後に、前記検査信号を前記第１装置へ送信し、
前記検査信号に対する応答と前記第１装置の負荷を示す負荷情報とを、前記第１装置から受信し、
前記第１装置の応答時間が前記第１装置の負荷に対応する閾値を超えた場合、前記第１装置に対するリクエストを前記第１装置と第２装置とに振り分け、
前記リクエストが前記第１装置と前記第２装置とに振り分けられた後、前記第１装置から受信する負荷情報が示す第１負荷と、前記第２装置から受信する負荷情報が示す第２負荷とを比較した結果に基づいて、前記第１装置から前記第２装置への切り替えを決定する、
処理をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理システム、及びプログラムに関する。
【背景技術】
【０００２】
複数のクライアント端末からのリクエストを処理する情報処理システムにおいて、可用性を向上させる技術として、ロードバランサによりサーバのフェイルオーバを実施する方法が存在する。
【０００３】
ロードバランサを用いて複数のサーバを１台の仮想的なサーバに見立てる技術、及びサーバ等のヘルスチェックを行う技術も知られている（例えば、特許文献１〜特許文献３を参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−２６５７７８号公報
【特許文献２】特表２０１４−５３４４９１号公報
【特許文献３】特開２００９−１１７９１５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ロードバランサがヘルスチェック通信を行うことでサーバのフェイルオーバを実施する場合、必ずしも適切なタイミングでフェイルオーバが実施されるとは限らない。
【０００６】
なお、かかる問題は、ロードバランサがサーバのフェイルオーバを実施する場合に限らず、他の情報処理装置がリクエストを処理する装置の切り替えを決定する場合においても生ずるものである。
【０００７】
１つの側面において、本発明は、リクエストを処理する装置の切り替えを適切に実施することを目的とする。
【課題を解決するための手段】
【０００８】
１つの案では、情報処理装置は、通信部、計算部、制御部、及び決定部を含む。通信部は、検査信号を第１装置へ送信し、検査信号に対する応答と第１装置の負荷を示す負荷情報とを、第１装置から受信する。計算部は、所定期間内における応答と負荷情報とに基づいて、第１装置の負荷毎に、検査信号に対する第１装置の応答時間の閾値を計算する。
【０００９】
制御部は、所定期間の経過後に、第１装置の応答時間が第１装置の負荷に対応する閾値を超えた場合、第１装置に対するリクエストを第１装置と第２装置とに振り分ける。決定部は、リクエストが第１装置と第２装置とに振り分けられた後、第１装置から受信する負荷情報が示す第１負荷と、第２装置から受信する負荷情報が示す第２負荷とを比較した結果に基づいて、第１装置から第２装置への切り替えを決定する。
【発明の効果】
【００１０】
１つの実施形態によれば、リクエストを処理する装置の切り替えを適切に実施することができる。
【図面の簡単な説明】
【００１１】
【図１】情報処理システムの構成図である。
【図２】情報処理装置の機能的構成図である。
【図３】制御処理のフローチャートである。
【図４】可変の閾値を用いる情報処理システムの構成図である。
【図５】ロードバランサの機能的構成図である。
【図６】サーバの第１の機能的構成図である。
【図７】応答時間情報を示す図である。
【図８】閾値情報を示す図である。
【図９】フェイルオーバを示す図である。
【図１０】負荷情報通知処理のフローチャートである。
【図１１】第１の制御処理のフローチャートである。
【図１２】予備サーバのスケールアップを示す図である。
【図１３】予備サーバの交換を示す図である。
【図１４Ａ】第２の制御処理のフローチャート（その１）である。
【図１４Ｂ】第２の制御処理のフローチャート（その２）である。
【図１５】サーバの第２の機能的構成図である。
【図１６】情報処理装置のハードウェア構成図である。
【発明を実施するための形態】
【００１２】
以下、図面を参照しながら、実施形態を詳細に説明する。
図１は、ロードバランサを含む情報処理システムの構成例を示している。図１の情報処理システムは、ロードバランサ１０１、サーバ１０２−１、及びサーバ１０２−２を含む。クライアント端末１０３−１〜クライアント端末１０３−３は、通信ネットワーク１０４を介してロードバランサ１０１と通信し、リクエストをロードバランサ１０１へ送信する。
【００１３】
サーバ１０２−１は現用サーバであり、サーバ１０２−２は予備サーバである。ロードバランサ１０１は、クライアント端末１０３−１〜クライアント端末１０３−３から受信したリクエストをサーバ１０２−１へ送信し、サーバ１０２−１から受信した応答をクライアント端末１０３−１〜クライアント端末１０３−３へ送信する。
【００１４】
ロードバランサ１０１は、ヘルスチェック通信によりサーバ１０２−１の健全性を監視し、サーバ１０２−１で異常が発生していると判定した場合、サーバ１０２−１からサーバ１０２−２へのフェイルオーバを実施する。これにより、現用サーバがサーバ１０２−１からサーバ１０２−２へ切り替えられ、サーバ１０２−１が行っていた処理がサーバ１０２−２に引き継がれるため、高可用性が実現される。
【００１５】
ヘルスチェック通信を行う場合、許容遅延時間及び連続失敗許容回数が設定ファイルに設定される。許容遅延時間は、ロードバランサ１０１がヘルスチェック通信における検査信号をサーバ１０２−１へ送信してから、その検査信号に対する応答をサーバ１０２−１から受信するまでの応答時間の許容値を表す。応答時間が許容遅延時間を超えた場合、ヘルスチェック通信が失敗したものと判定される。
【００１６】
連続失敗許容回数は、ヘルスチェック通信が連続して失敗する回数の許容値を表す。ヘルスチェック通信の連続失敗回数が連続失敗許容回数を超えた場合、サーバ１０２−１で異常が発生していると判定される。この場合、ロードバランサ１０１は、フェイルオーバを実施して、サーバ１０２−２へのリクエストの送信を開始する。
【００１７】
設定ファイルに設定される許容遅延時間及び連続失敗許容回数は、固定値であることが多いため、以下のような場合に、適切なフェイルオーバが行われない。
（１）許容遅延時間を短く設定した場合、サーバ１０２−１に小さな負荷がかかっただけでも、誤ってフェイルオーバが実施される。
（２）許容遅延時間を長く設定した場合、サーバ１０２−１に異常が発生したときに、サービスダウンタイムが長くなる。
（３）フェイルオーバの効果がない場合でも、フェイルオーバが実施される。
【００１８】
例えば、許容遅延時間が１ｍｓに設定された場合、サーバ１０２−１の異常発生時に、フェイルオーバが迅速に実施されるため、サービスダウンタイムは短くて済む。しかし、サーバ１０２−１のＣＰＵ（Central Processing Unit）使用率が１０％程度であっても、応答時間が１ｍｓを超えてしまい、ヘルスチェック通信の一時的な遅延によってフェイルオーバが実施されることがある。
【００１９】
一方、許容遅延時間が５分に設定された場合、ヘルスチェック通信の一時的な遅延によってフェイルオーバが実施されることはないが、サーバ１０２−１の異常発生時のサービスダウンタイムは長くなる。
【００２０】
図２は、実施形態の情報処理装置の機能的構成例を示している。図２の情報処理装置２０１は、通信部２１１、計算部２１２、制御部２１３、及び決定部２１４を含む。
【００２１】
図３は、図２の情報処理装置２０１が行う制御処理の例を示すフローチャートである。まず、通信部２１１は、所定期間内において、検査信号を第１装置へ送信し（ステップ３０１）、検査信号に対する応答と第１装置の負荷を示す負荷情報とを、第１装置から受信する（ステップ３０２）。そして、計算部２１２は、所定期間内における応答と負荷情報とに基づいて、第１装置の負荷毎に、検査信号に対する第１装置の応答時間の閾値を計算する（ステップ３０３）。
【００２２】
次に、通信部２１１は、所定期間の経過後に、検査信号を第１装置へ送信し（ステップ３０４）、検査信号に対する応答と第１装置の負荷を示す負荷情報とを、第１装置から受信する（ステップ３０５）。
【００２３】
次に、制御部２１３は、第１装置の応答時間が第１装置の負荷に対応する閾値を超えた場合、第１装置に対するリクエストを第１装置と第２装置とに振り分ける（ステップ３０６）。そして、決定部２１４は、第１装置から受信する負荷情報が示す第１負荷と、第２装置から受信する負荷情報が示す第２負荷とを比較した結果に基づいて、第１装置から第２装置への切り替えを決定する（ステップ３０７）。
【００２４】
図２の情報処理装置２０１によれば、リクエストを処理する装置の切り替えを適切に実施することができる。
【００２５】
図４は、可変の閾値を用いる情報処理システムの構成例を示している。図４の情報処理システムは、ロードバランサ４０１、サーバ４０２−１、及びサーバ４０２−２を含み、ロードバランサ４０１は、図２の情報処理装置２０１に対応する。
【００２６】
クライアント端末４０３−１〜クライアント端末４０３−３は、通信ネットワーク４０４を介してロードバランサ４０１と通信し、リクエストをロードバランサ４０１へ送信する。クライアント端末の台数は３台には限られず、２台以下であってもよく、４台以上であってもよい。
【００２７】
サーバ４０２−１及びサーバ４０２−２は、第１装置及び第２装置にそれぞれ対応する。サーバ４０２−１は現用サーバであり、サーバ４０２−１内では、現用仮想マシン（Virtual Machine，ＶＭ）が動作している。サーバ４０２−２は予備サーバであり、サーバ４０２−２内には、フェイルオーバが実施される前に予備ＶＭが生成される。
【００２８】
ロードバランサ４０１は、クライアント端末４０３−１〜クライアント端末４０３−３から受信したリクエストをサーバ４０２−１のＶＭへ送信し、そのＶＭから受信した応答をクライアント端末４０３−１〜クライアント端末４０３−３へ送信する。
【００２９】
図５は、図４のロードバランサ４０１の機能的構成例を示している。図５のロードバランサ４０１は、通信部５１１、記憶部５１２、選択部５１３、計算部５１４、制御部５１５、及び決定部５１６を含む。通信部５１１、計算部５１４、制御部５１５、及び決定部５１６は、図２の通信部２１１、計算部２１２、制御部２１３、及び決定部２１４にそれぞれ対応する。
【００３０】
ユーザにより設定された所定の評価期間において、通信部５１１は、ヘルスチェック通信における検査信号をサーバ４０２−１へ送信し、その検査信号に対する応答とサーバ４０２−１の負荷を示す負荷情報とを、サーバ４０２−１から受信する。評価期間は、情報処理システムの構成又は条件に応じて決定され、例えば、数日〜数週間であってもよい。負荷情報としては、ＣＰＵ使用率、ディスクＩ／Ｏ（Input/Output）量、ロードアベレージ、通信ネットワークのトラフィック量、メモリ又はスワップの使用量等を用いることができる。
【００３１】
選択部５１３は、予備ＶＭを配備するサーバ４０２−２を選択し、選択したサーバ４０２−２に対してＶＭの生成を指示する。
【００３２】
計算部５１４は、評価期間内におけるサーバ４０２−１の応答時間と、サーバ４０２−１から受信する負荷情報とに基づいて、サーバ４０２−１の負荷の変化に対する応答時間の変化を示す応答時間情報５２１を生成し、記憶部５１２に格納する。そして、計算部５１４は、応答時間情報５２１を用いて、負荷毎に応答時間の閾値を計算し、計算した閾値を示す閾値情報５２２を生成して、記憶部５１２に格納する。
【００３３】
評価期間が経過した後も、通信部５１１は、検査信号をサーバ４０２−１へ送信し、その検査信号に対する応答とサーバ４０２−１の負荷を示す負荷情報とを、サーバ４０２−１から受信する。制御部５１５は、閾値情報５２２に基づいて、サーバ４０２−１の応答時間及び負荷を監視し、応答時間が負荷に対応する閾値を超えた場合、サーバ４０２−１に対するリクエストを、一時的にサーバ４０２−１及びサーバ４０２−２に振り分ける。
【００３４】
その後、通信部５１１は、サーバ４０２−２の負荷を示す負荷情報を、サーバ４０２−２から受信する。そして、決定部５１６は、ＶＭサーバ４０２−１の応答時間及び負荷と、サーバ４０２−２の負荷とに基づいて、サーバ４０２−１からサーバ４０２−２へのフェイルオーバを実施するか否かを決定する。
【００３５】
図６は、図４のサーバ４０２−ｉ（ｉ＝１，２）の第１の機能的構成例を示している。図６のサーバ４０２−ｉは、ＶＭ６１１、通知部６１２、及び生成部６１３を含む。ＶＭ６１１は、ロードバランサ４０１から受信したリクエストを処理して、そのリクエストに対する応答をロードバランサ４０１へ送信する。通知部６１２は、サーバ４０２−ｉの負荷を示す負荷情報をロードバランサ４０１へ送信する。生成部６１３は、ロードバランサ４０１からの指示に基づいて、ＶＭ６１１を生成する。
【００３６】
図７は、応答時間情報５２１の例を示している。図７の横軸はＣＰＵ使用率を表し、縦軸は応答時間を表す。曲線７０１は、応答時間情報５２１を表し、ＣＰＵ使用率の変化に対する応答時間の変化を示している。点７１１〜点７１４は、評価期間においてサーバ４０２−１から受信した応答の応答時間と、応答とともに受信した負荷情報が示すＣＰＵ使用率とをマッピングした結果を表す。計算部５１４は、２つの点の間のデータを補間することで、点７１１〜点７１４を繋ぐ曲線７０１を生成する。
【００３７】
一方、直線７０２は、ＣＰＵ使用率に依存しない最大許容遅延時間を表し、例えば、ユーザによって設定される。
【００３８】
図８は、閾値情報５２２の例を示している。曲線８０１は、図７の曲線７０１から計算される応答時間の閾値Ｔ１を表し、曲線７０１が示す応答時間よりも所定の割合Ｒ１だけ大きな値に設定されている。割合Ｒ１は、情報処理システムの構成又は条件に応じて決定され、例えば、０％〜３０％の範囲であってもよい。
【００３９】
一方、直線８０２は、図７の直線７０２から計算される応答時間の閾値Ｔ２を表し、直線７０２が示す応答時間よりも所定の割合Ｒ２だけ小さな値に設定されている。所定の割合Ｒ２は、情報処理システムの構成又は条件に応じて決定され、例えば、０％〜３０％の範囲であってもよい。
【００４０】
制御部５１５は、サーバ４０２−１の応答時間が、閾値Ｔ１又は閾値Ｔ２のいずれかを超えた場合、リクエストを一時的にサーバ４０２−１及びサーバ４０２−２に振り分けて、負荷の変化を検証する。そして、決定部５１６は、例えば、以下の条件が満たされた場合に、サーバ４０２−１からサーバ４０２−２へのフェイルオーバを実施すると決定する。
【００４１】
（Ｃ１）サーバ４０２−２のＣＰＵ使用率がサーバ４０２−１のＣＰＵ使用率よりも小さい。
（Ｃ２）サーバ４０２−１の応答時間が、閾値Ｔ１又は閾値Ｔ２のいずれかを超えている。
【００４２】
条件（Ｃ１）は、サーバ４０２−１及びサーバ４０２−２の負荷が不均衡になっていることを表し、条件（Ｃ２）は、リクエストの振り分けを行っても、サーバ４０２−１のＣＰＵ使用率が低下しないことを表す。
【００４３】
図９は、図４の情報処理システムにおけるフェイルオーバの例を示している。例えば、サーバ４０２−１のＣＰＵ使用率が９０％であり、サーバ４０２−２のＣＰＵ使用率が２０％である場合、条件（Ｃ１）が満たされる。さらに、条件（Ｃ２）も満たされた場合、決定部５１６は、フェイルオーバの実施を決定し、制御部５１５は、サーバ４０２−１のＶＭに対するリクエストの送信を停止する。
【００４４】
そして、選択部５１３は、サーバ４０２−２を現用サーバに設定し、サーバ４０２−２のＶＭを現用ＶＭに設定し、サーバ４０２−１に対してＶＭの削除を指示する。また、選択部５１３は、新たなサーバ４０２−３を予備サーバに設定し、サーバ４０２−３に対してＶＭの生成を指示する。これにより、サーバ４０２−２のＶＭを新たな現用ＶＭとし、サーバ４０２−３のＶＭを新たな予備ＶＭとして、サーバ４０２−２の応答時間及び負荷の監視が開始される。
【００４５】
このような情報処理システムによれば、現用サーバの負荷に応じた可変の許容遅延時間を用いてヘルスチェックを行うことができ、負荷に応じた適切なタイミングでフェイルオーバを実施することが可能になる。
【００４６】
また、現用サーバの応答時間が許容遅延時間を超えた場合であっても、直ちにフェイルオーバを実施するのではなく、事前に負荷の変化を検証することで、負荷が低下することを確認した上でフェイルオーバを実施することが可能になる。これにより、フェイルオーバの効果が期待できる場合にフェイルオーバが実施され、情報処理システムが確実に復旧する。
【００４７】
図１０は、図６の通知部６１２が行う負荷情報通知処理の例を示すフローチャートである。まず、通知部６１２は、サーバ４０２−１の負荷を測定し（ステップ１００１）、測定した負荷を示す負荷情報をロードバランサ４０１へ送信する（ステップ１００２）。そして、通知部６１２は、ロードバランサ４０１から負荷情報の送信停止を指示されたか否かをチェックする（ステップ１００３）。
【００４８】
負荷情報の送信停止を指示されていない場合（ステップ１００３，ＮＯ）、通知部６１２は、ステップ１００１以降の処理を繰り返し、負荷情報の送信停止を指示された場合（ステップ１００３，ＹＥＳ）、通知部６１２は、処理を終了する。
【００４９】
図１１は、図５のロードバランサ４０１が行う第１の制御処理の例を示すフローチャートである。第１の制御処理では、負荷情報としてＣＰＵ使用率が用いられ、閾値情報５２２として、図８の曲線８０１が示す閾値Ｔ１及び直線８０２が示す閾値Ｔ２が用いられる。
【００５０】
まず、制御部５１５は、現用サーバであるサーバ４０２−１のＶＭの応答時間を、サーバ４０２−１のＣＰＵ使用率に対応する閾値Ｔ１と比較する（ステップ１１０１）。応答時間が閾値Ｔ１よりも長い場合（ステップ１１０１，ＹＥＳ）、制御部５１５は、サーバ４０２−１に対するリクエストを、サーバ４０２−１のＶＭと、予備サーバであるサーバ４０２−２のＶＭとに振り分ける制御を開始する（ステップ１１０３）。
【００５１】
一方、応答時間が閾値Ｔ１以下である場合（ステップ１１０１，ＮＯ）、制御部５１５は、応答時間を閾値Ｔ２と比較する（ステップ１１０２）。応答時間が閾値Ｔ２よりも長い場合（ステップ１１０２，ＹＥＳ）、ロードバランサ４０１は、ステップ１１０３以降の処理を行う。一方、応答時間が閾値Ｔ２以下である場合（ステップ１１０２，ＮＯ）、ロードバランサ４０１は、処理を終了する。
【００５２】
リクエストがサーバ４０２−１及びサーバ４０２−２に振り分けられた後、決定部５１６は、サーバ４０２−１のＣＰＵ使用率とサーバ４０２−２のＣＰＵ使用率とを比較する（ステップ１１０４）。サーバ４０２−２のＣＰＵ使用率がサーバ４０２−１のＣＰＵ使用率以上である場合（ステップ１１０４，ＮＯ）、ロードバランサ４０１は、処理を終了する。
【００５３】
一方、サーバ４０２−２のＣＰＵ使用率がサーバ４０２−１のＣＰＵ使用率よりも小さい場合（ステップ１１０４，ＹＥＳ）、決定部５１６は、サーバ４０２−１のＶＭの応答時間を、サーバ４０２−１のＣＰＵ使用率に対応する閾値Ｔ１と比較する（ステップ１１０５）。応答時間が閾値Ｔ１よりも長い場合（ステップ１１０１，ＹＥＳ）、決定部５１６は、フェイルオーバの実施を決定し、制御部５１５は、サーバ４０２−１のＶＭに対するリクエストの送信を停止する（ステップ１１０７）。
【００５４】
次に、選択部５１３は、サーバ４０２−２を現用サーバに設定し、サーバ４０２−２のＶＭを現用ＶＭに設定する（ステップ１１０８）。次に、選択部５１３は、新たなサーバ４０２−３を予備サーバに設定し、サーバ４０２−３に対してＶＭの生成を指示する（ステップ１１０９）。そして、選択部５１３は、旧現用サーバであるサーバ４０２−１に対してＶＭの削除を指示する（ステップ１１１０）。
【００５５】
一方、応答時間が閾値Ｔ１以下である場合（ステップ１１０５，ＮＯ）、決定部５１６は、応答時間を最大許容遅延時間と比較する（ステップ１１０６）。応答時間が最大許容遅延時間よりも長い場合（ステップ１１０６，ＹＥＳ）、ロードバランサ４０１は、ステップ１１０７以降の処理を行う。一方、応答時間が最大許容遅延時間以下である場合（ステップ１１０６，ＮＯ）、ロードバランサ４０１は、ステップ１１０５以降の処理を行う。
【００５６】
第１の制御処理によれば、リクエストの振り分け開始後に、予備サーバの負荷が現用サーバの負荷よりも小さく、かつ、現用サーバの応答時間が閾値Ｔ１又は最大許容遅延時間を超えている場合に、フェイルオーバを実施することが可能になる。
【００５７】
ところで、リクエストをサーバ４０２−１及びサーバ４０２−２に振り分けても、ＶＭの性能が限界に到達しているために、サーバ４０２−１及びサーバ４０２−２のＣＰＵ使用率に顕著な差異がないと判定される場合が考えられる。この場合、予備サーバの健全化のために、スケールアップを行うことが望ましい。
【００５８】
図１２は、予備サーバのスケールアップの例を示している。この例では、サーバ４０２−１及びサーバ４０２−２の各ＶＭは、１個の仮想ＣＰＵ（Virtual CPU，ＶＣＰＵ）と１Ｇバイトのメモリを有する。これらのＶＭに対するリクエストの振り分け開始後に、サーバ４０２−１のＣＰＵ使用率が７９％になり、サーバ４０２−２のＣＰＵ使用率が８０％になった場合、ＣＰＵ使用率の差分が小さいため、ＶＭの性能が限界に到達していると判定される。
【００５９】
そこで、ロードバランサ４０１は、新たなサーバ１２０１に対して、サーバ４０２−２のＶＭよりも高性能なＶＭの生成を指示し、サーバ１２０１は、２個のＶＣＰＵと２Ｇバイトのメモリを有するＶＭを生成する。
【００６０】
その後、ロードバランサ４０１は、サーバ１２０１を新たな予備サーバとして用いて、リクエストをサーバ４０２−１のＶＭとサーバ１２０１のＶＭとに振り分ける制御を開始する。そして、ロードバランサ４０１は、サーバ１２０１のＣＰＵ使用率をチェックし、サーバ１２０１のＣＰＵ使用率がサーバ４０２−２のＣＰＵ使用率よりも小さくなった場合、サーバ４０２−１からサーバ１２０１へのフェイルオーバを実施するか否かを決定する。
【００６１】
また、リクエストをサーバ４０２−１及びサーバ４０２−２に振り分けても、サーバ４０２−２に異常が発生しているために、サーバ４０２−２のＣＰＵ使用率がサーバ４０２−１のＣＰＵ使用率よりもかなり大きいと判定される場合も考えられる。この場合、予備サーバの健全化のために、サーバ４０２−２を別の予備サーバに交換することが望ましい。
【００６２】
図１３は、予備サーバの交換の例を示している。この例では、サーバ４０２−１及びサーバ４０２−２に対するリクエストの振り分け開始後に、サーバ４０２−１のＣＰＵ使用率が７０％になり、サーバ４０２−２のＣＰＵ使用率が９９％になっている。この場合、サーバ４０２−２のＣＰＵ使用率がサーバ４０２−１のＣＰＵ使用率よりもかなり大きいため、サーバ４０２−２に異常が発生していると判定される。
【００６３】
そこで、ロードバランサ４０１は、新たなサーバ１２０１に対してＶＭの生成を指示し、サーバ１２０１は、ＶＭを生成する。その後、ロードバランサ４０１は、サーバ１２０１を新たな予備サーバとして用いて、リクエストをサーバ４０２−１のＶＭとサーバ１２０１のＶＭとに振り分ける制御を開始し、サーバ４０２−１及びサーバ１２０１のＣＰＵ使用率をチェックする。そして、サーバ１２０１のＣＰＵ使用率がサーバ４０２−１のＣＰＵ使用率よりも小さくなった場合、ロードバランサ４０１は、サーバ４０２−１からサーバ１２０１へのフェイルオーバを実施するか否かを決定する。
【００６４】
図１４Ａ及び図１４Ｂは、図５のロードバランサ４０１が行う第２の制御処理の例を示すフローチャートである。第２の制御処理では、図１１に示した第１の制御処理に対して、予備サーバのスケールアップ及び交換の処理が付加されている。ステップ１４０１〜ステップ１４１０の処理は、図１１のステップ１１０１〜ステップ１１１０の処理と同様である。
【００６５】
ステップ１４０４において、サーバ４０２−２のＣＰＵ使用率がサーバ４０２−１のＣＰＵ使用率以上である場合（ステップ１４０４，ＮＯ）、制御部５１５は、それらのＣＰＵ使用率の差分を所定値と比較する（ステップ１４１１）。例えば、所定値としては、１％〜１０％の範囲の値を用いることができる。
【００６６】
ＣＰＵ使用率の差分が所定値以下である場合（ステップ１４１１，ＹＥＳ）、選択部５１３は、新たなサーバ１２０１を新予備サーバに設定し、サーバ１２０１に対して、サーバ４０２−２のＶＭよりも高性能なＶＭの生成を指示する（ステップ１４１２）。
【００６７】
次に、制御部５１５は、リクエストをサーバ４０２−１のＶＭとサーバ１２０１のＶＭとに振り分ける制御を開始し（ステップ１４１３）、旧予備サーバであるサーバ４０２−２のＶＭに対するリクエストの送信を停止する（ステップ１４１４）。
【００６８】
次に、選択部５１３は、サーバ４０２−２に対してＶＭの削除を指示し（ステップ１４１５）、制御部５１５は、サーバ１２０１のＣＰＵ使用率と、ステップ１４１１におけるサーバ４０２−２のＣＰＵ使用率とを比較する（ステップ１４１６）。
【００６９】
サーバ１２０１のＣＰＵ使用率がサーバ４０２−２のＣＰＵ使用率よりも小さい場合（ステップ１４１６，ＹＥＳ）、ロードバランサ４０１は、ステップ１４０４以降の処理を行う。一方、サーバ１２０１のＣＰＵ使用率がサーバ４０２−２のＣＰＵ使用率以上である場合（ステップ１４１６，ＮＯ）、ロードバランサ４０１は、処理を終了する。
【００７０】
ＣＰＵ使用率の差分が所定値よりも大きい場合（ステップ１４１１，ＮＯ）、選択部５１３は、新たなサーバ１２０１を新予備サーバに設定し、サーバ１２０１に対してＶＭの生成を指示する（ステップ１４１７）。
【００７１】
次に、制御部５１５は、リクエストをサーバ４０２−１のＶＭとサーバ１２０１のＶＭとに振り分ける制御を開始し（ステップ１４１８）、旧予備サーバであるサーバ４０２−２のＶＭに対するリクエストの送信を停止する（ステップ１４１９）。
【００７２】
次に、選択部５１３は、サーバ４０２−２に対してＶＭの削除を指示し（ステップ１４２０）、制御部５１５は、サーバ１２０１のＣＰＵ使用率と、現用サーバであるサーバ４０２−１のＣＰＵ使用率とを比較する（ステップ１４２１）。
【００７３】
サーバ１２０１のＣＰＵ使用率がサーバ４０２−１のＣＰＵ使用率よりも小さい場合（ステップ１４２１，ＹＥＳ）、ロードバランサ４０１は、ステップ１４０４以降の処理を行う。一方、サーバ１２０１のＣＰＵ使用率がサーバ４０２−１のＣＰＵ使用率以上である場合（ステップ１４２１，ＮＯ）、ロードバランサ４０１は、処理を終了する。
【００７４】
第２の制御処理によれば、リクエストの振り分け開始後に、予備サーバの負荷が現用サーバの負荷以上である場合に、予備サーバのスケールアップ又は交換を行うことで、予備サーバの負荷を低下させることができる。これにより、フェイルオーバを円滑に実施することが可能になる。
【００７５】
なお、ステップ１４１２及びステップ１４１７において、選択部５１３は、新たなサーバ１２０１の代わりに、サーバ４０２−２に対してＶＭの生成を指示することも可能である。この場合、以降の処理において、サーバ１２０１の代わりに、サーバ４０２−２が予備サーバとして用いられる。
【００７６】
図１５は、図４のサーバ４０２−ｉの第２の機能的構成例を示している。図１５のサーバ４０２−ｉは、図６のサーバ４０２−ｉとは異なり、ＶＭ１５１１及び生成部１５１２を含む。ＶＭ１５１１は、通知部１５１３を含み、ロードバランサ４０１から受信したリクエストを処理して、そのリクエストに対する応答をロードバランサ４０１へ送信する。通知部１５１３は、サーバ４０２−ｉの負荷を示す負荷情報をロードバランサ４０１へ送信する。生成部１５１２は、ロードバランサ４０１からの指示に基づいて、ＶＭ１５１１を生成する。
【００７７】
このようなサーバ４０２−ｉの構成によれば、ＶＭ１５１１が負荷情報をロードバランサ４０１へ送信することが可能になる。
【００７８】
図２の情報処理装置２０１の構成は一例に過ぎず、情報処理装置２０１の用途又は条件に応じて、一部の構成要素を省略又は変更してもよい。
【００７９】
図１、図４、図９、図１２、及び図１３の情報処理システムの構成は一例に過ぎず、情報処理システムの用途又は条件に応じて、一部の構成要素を省略又は変更してもよい。例えば、現用サーバ及び予備サーバは、２台以上であってもよい。
【００８０】
図５のロードバランサ４０１の構成は一例に過ぎず、情報処理システムの用途又は条件に応じて、一部の構成要素を省略又は変更してもよい。図６及び図１５のサーバ４０２−ｉの構成は一例に過ぎず、情報処理システムの用途又は条件に応じて、一部の構成要素を省略又は変更してもよい。
【００８１】
図３、図１０、図１１、図１４Ａ、及び図１４Ｂのフローチャートは一例に過ぎず、情報処理システムの構成又は条件に応じて一部の処理を省略又は変更してもよい。例えば、最大許容遅延時間及び閾値Ｔ２が設定されていない場合は、図１１のステップ１１０２、ステップ１１０６、図１４Ａのステップ１４０２、及びステップ１４０６の処理を省略することができる。
【００８２】
図１１、図１４Ａ、及び図１４Ｂの制御処理において、ＣＰＵ使用率の代わりに、ディスクＩ／Ｏ量、ロードアベレージ、通信ネットワークのトラフィック量、メモリ又はスワップの使用量等を負荷情報として用いてもよい。
【００８３】
図７の応答時間情報及び図８の閾値情報は一例に過ぎず、応答時間情報及び閾値情報は、情報処理システムの構成又は条件と負荷情報の種類に応じて変化する。
【００８４】
図１６は、図２の情報処理装置２０１又は図５のロードバランサ４０１として用いられる情報処理装置（コンピュータ）のハードウェア構成例を示している。図１６の情報処理装置は、ＣＰＵ１６０１、メモリ１６０２、入力装置１６０３、出力装置１６０４、補助記憶装置１６０５、媒体駆動装置１６０６、及びネットワーク接続装置１６０７を含む。これらの構成要素はバス１６０８により互いに接続されている。
【００８５】
メモリ１６０２は、例えば、ＲＯＭ（Read Only Memory）、ＲＡＭ（Random Access Memory）、フラッシュメモリ等の半導体メモリであり、処理に用いられるプログラム及びデータを格納する。メモリ１６０２は、図５の記憶部５１２として用いることができる。
【００８６】
ＣＰＵ１６０１（プロセッサ）は、例えば、メモリ１６０２を利用してプログラムを実行することにより、図２の計算部２１２、制御部２１３、及び決定部２１４として動作する。ＣＰＵ１６０１は、メモリ１６０２を利用してプログラムを実行することにより、図５の選択部５１３、計算部５１４、制御部５１５、及び決定部５１６としても動作する。
【００８７】
入力装置１６０３は、例えば、キーボード、ポインティングデバイス等であり、オペレータ又はユーザからの指示又は情報の入力に用いられる。出力装置１６０４は、例えば、表示装置、プリンタ、スピーカ等であり、オペレータ又はユーザへの問い合わせ又は指示、及び処理結果の出力に用いられる。
【００８８】
補助記憶装置１６０５は、例えば、磁気ディスク装置、光ディスク装置、光磁気ディスク装置、テープ装置等である。補助記憶装置１６０５は、ハードディスクドライブであってもよい。情報処理装置は、補助記憶装置１６０５にプログラム及びデータを格納しておき、それらをメモリ１６０２にロードして使用することができる。補助記憶装置１６０５は、図５の記憶部５１２として用いることができる。
【００８９】
媒体駆動装置１６０６は、可搬型記録媒体１６０９を駆動し、その記録内容にアクセスする。可搬型記録媒体１６０９は、メモリデバイス、フレキシブルディスク、光ディスク、光磁気ディスク等である。可搬型記録媒体１６０９は、ＣＤ−ＲＯＭ（Compact Disk Read Only Memory）、ＤＶＤ（Digital Versatile Disk）、ＵＳＢ（Universal Serial Bus）メモリ等であってもよい。オペレータ又はユーザは、この可搬型記録媒体１６０９にプログラム及びデータを格納しておき、それらをメモリ１６０２にロードして使用することができる。
【００９０】
このように、処理に用いられるプログラム及びデータを格納するコンピュータ読み取り可能な記録媒体は、メモリ１６０２、補助記憶装置１６０５、又は可搬型記録媒体１６０９のような、物理的な（非一時的な）記録媒体である。
【００９１】
ネットワーク接続装置１６０７は、ＬＡＮ（Local Area Network）、ＷＡＮ（Wide Area Network）等の通信ネットワークに接続され、通信に伴うデータ変換を行う通信インタフェース回路である。情報処理装置は、プログラム及びデータを外部の装置からネットワーク接続装置１６０７を介して受信し、それらをメモリ１６０２にロードして使用することができる。ネットワーク接続装置１６０７は、図２の通信部２１１又は図５の通信部５１１として用いることができる。
【００９２】
なお、情報処理装置が図１６のすべての構成要素を含む必要はなく、用途又は条件に応じて一部の構成要素を省略することも可能である。例えば、ユーザ又はオペレータとのインタフェースが不要である場合は、入力装置１６０３及び出力装置１６０４を省略してもよい。また、可搬型記録媒体１６０９を使用しない場合は、媒体駆動装置１６０６を省略してもよい。
【００９３】
図１６の情報処理装置は、図６のサーバ４０２−ｉとしても用いることができる。この場合、ＣＰＵ１６０１は、メモリ１６０２を利用してプログラムを実行することにより、通知部６１２及び生成部６１３として動作するとともに、ＶＭ６１１を動作させる。
【００９４】
図１６の情報処理装置は、図１５のサーバ４０２−ｉとしても用いることができる。この場合、ＣＰＵ１６０１は、メモリ１６０２を利用してプログラムを実行することにより、生成部１５１２として動作するとともに、ＶＭ１５１１及び通知部１５１３を動作させる。
【００９５】
開示の実施形態とその利点について詳しく説明したが、当業者は、特許請求の範囲に明確に記載した本発明の範囲から逸脱することなく、様々な変更、追加、省略をすることができるであろう。
【００９６】
図１乃至図１６を参照しながら説明した実施形態に関し、さらに以下の付記を開示する。
（付記１）
検査信号を第１装置へ送信し、前記検査信号に対する応答と前記第１装置の負荷を示す負荷情報とを、前記第１装置から受信する通信部と、
所定期間内における前記応答と前記負荷情報とに基づいて、前記第１装置の負荷毎に、前記検査信号に対する前記第１装置の応答時間の閾値を計算する計算部と、
前記所定期間の経過後に、前記第１装置の応答時間が前記第１装置の負荷に対応する閾値を超えた場合、前記第１装置に対するリクエストを前記第１装置と第２装置とに振り分ける制御部と、
前記リクエストが前記第１装置と前記第２装置とに振り分けられた後、前記第１装置から受信する負荷情報が示す第１負荷と、前記第２装置から受信する負荷情報が示す第２負荷とを比較した結果に基づいて、前記第１装置から前記第２装置への切り替えを決定する決定部と、
を備えることを特徴とする情報処理装置。
（付記２）
前記決定部は、前記第２負荷が前記第１負荷よりも小さく、かつ、前記第１装置の応答時間が前記第１負荷に対応する閾値を超えている場合、前記第１装置から前記第２装置への切り替えを決定することを特徴とする付記１記載の情報処理装置。
（付記３）
前記制御部は、前記第２負荷が前記第１負荷よりも大きく、かつ、前記第２負荷と前記第１負荷との差分が所定値よりも大きい場合、前記第１装置に対するリクエストを前記第１装置と第３装置とに振り分け、
前記決定部は、前記リクエストが前記第１装置と前記第３装置とに振り分けられた後、前記第１装置から受信する負荷情報が示す負荷と、前記第３装置から受信する負荷情報が示す負荷とを比較した結果に基づいて、前記第１装置から前記第３装置への切り替えを決定することを特徴とする付記１又は２記載の情報処理装置。
（付記４）
前記制御部は、前記第２負荷が前記第１負荷よりも大きく、かつ、前記第２負荷と前記第１負荷との差分が前記所定値以下である場合、前記第１装置に対するリクエストを、前記第１装置内で動作する第１仮想マシンと、前記第３装置内で動作する第２仮想マシンとに振り分け、
前記第２仮想マシンは、前記第１仮想マシンよりも性能が高い仮想マシンであり、
前記決定部は、前記リクエストが前記第１仮想マシンと前記第２仮想マシンとに振り分けられた後、前記第１装置から受信する負荷情報が示す負荷と、前記第３装置から受信する負荷情報が示す負荷とを比較した結果に基づいて、前記第１装置から前記第３装置への切り替えを決定することを特徴とする付記３記載の情報処理装置。
（付記５）
第１装置と、
第２装置と、
前記第１装置に対するリクエストを受信し、受信したリクエストを前記第１装置へ送信する情報処理装置とを備え、
前記情報処理装置は、
検査信号を第１装置へ送信し、前記検査信号に対する応答と前記第１装置の負荷を示す負荷情報とを、前記第１装置から受信する通信部と、
所定期間内における前記応答と前記負荷情報とに基づいて、前記第１装置の負荷毎に、前記検査信号に対する前記第１装置の応答時間の閾値を計算する計算部と、
前記所定期間の経過後に、前記第１装置の応答時間が前記第１装置の負荷に対応する閾値を超えた場合、前記リクエストを前記第１装置と前記第２装置とに振り分ける制御部と、
前記リクエストが前記第１装置と前記第２装置とに振り分けられた後、前記第１装置から受信する負荷情報が示す負荷と、前記第２装置から受信する負荷情報が示す負荷とを比較した結果に基づいて、前記第１装置から前記第２装置への切り替えを決定する決定部と、
を含むことを特徴とする情報処理システム。
（付記６）
前記決定部は、前記第２負荷が前記第１負荷よりも小さく、かつ、前記第１装置の応答時間が前記第１負荷に対応する閾値を超えている場合、前記第１装置から前記第２装置への切り替えを決定することを特徴とする付記５記載の情報処理システム。
（付記７）
前記情報処理システムは、第３装置をさらに備え、
前記制御部は、前記第２負荷が前記第１負荷よりも大きく、かつ、前記第２負荷と前記第１負荷との差分が所定値よりも大きい場合、前記第１装置に対するリクエストを前記第１装置と前記第３装置とに振り分け、
前記決定部は、前記リクエストが前記第１装置と前記第３装置とに振り分けられた後、前記第１装置から受信する負荷情報が示す負荷と、前記第３装置から受信する負荷情報が示す負荷とを比較した結果に基づいて、前記第１装置から前記第３装置への切り替えを決定することを特徴とする付記５又は６記載の情報処理システム。
（付記８）
前記制御部は、前記第２負荷が前記第１負荷よりも大きく、かつ、前記第２負荷と前記第１負荷との差分が前記所定値以下である場合、前記第１装置に対するリクエストを、前記第１装置内で動作する第１仮想マシンと、前記第３装置内で動作する第２仮想マシンとに振り分け、
前記第２仮想マシンは、前記第１仮想マシンよりも性能が高い仮想マシンであり、
前記決定部は、前記リクエストが前記第１仮想マシンと前記第２仮想マシンとに振り分けられた後、前記第１装置から受信する負荷情報が示す負荷と、前記第３装置から受信する負荷情報が示す負荷とを比較した結果に基づいて、前記第１装置から前記第３装置への切り替えを決定することを特徴とする付記７記載の情報処理システム。
（付記９）
所定期間内において、検査信号を第１装置へ送信し、
前記検査信号に対する応答と前記第１装置の負荷を示す負荷情報とを、前記第１装置から受信し、
前記応答と前記負荷情報とに基づいて、前記第１装置の負荷毎に、前記検査信号に対する前記第１装置の応答時間の閾値を計算し、
前記所定期間の経過後に、前記検査信号を前記第１装置へ送信し、
前記検査信号に対する応答と前記第１装置の負荷を示す負荷情報とを、前記第１装置から受信し、
前記第１装置の応答時間が前記第１装置の負荷に対応する閾値を超えた場合、前記第１装置に対するリクエストを前記第１装置と第２装置とに振り分け、
前記リクエストが前記第１装置と前記第２装置とに振り分けられた後、前記第１装置から受信する負荷情報が示す第１負荷と、前記第２装置から受信する負荷情報が示す第２負荷とを比較した結果に基づいて、前記第１装置から前記第２装置への切り替えを決定する、
処理をコンピュータに実行させるためのプログラム。
（付記１０）
前記コンピュータは、前記第２負荷が前記第１負荷よりも小さく、かつ、前記第１装置の応答時間が前記第１負荷に対応する閾値を超えている場合、前記第１装置から前記第２装置への切り替えを決定することを特徴とする付記９記載のプログラム。
（付記１１）
前記コンピュータは、前記第２負荷が前記第１負荷よりも大きく、かつ、前記第２負荷と前記第１負荷との差分が所定値よりも大きい場合、前記第１装置に対するリクエストを前記第１装置と第３装置とに振り分け、前記リクエストが前記第１装置と前記第３装置とに振り分けられた後、前記第１装置から受信する負荷情報が示す負荷と、前記第３装置から受信する負荷情報が示す負荷とを比較した結果に基づいて、前記第１装置から前記第３装置への切り替えを決定することを特徴とする付記９又は１０記載のプログラム。
（付記１２）
前記コンピュータは、前記第２負荷が前記第１負荷よりも大きく、かつ、前記第２負荷と前記第１負荷との差分が前記所定値以下である場合、前記第１装置に対するリクエストを、前記第１装置内で動作する第１仮想マシンと、前記第３装置内で動作する第２仮想マシンとに振り分け、
前記第２仮想マシンは、前記第１仮想マシンよりも性能が高い仮想マシンであり、
前記コンピュータは、前記リクエストが前記第１仮想マシンと前記第２仮想マシンとに振り分けられた後、前記第１装置から受信する負荷情報が示す負荷と、前記第３装置から受信する負荷情報が示す負荷とを比較した結果に基づいて、前記第１装置から前記第３装置への切り替えを決定することを特徴とする付記１１記載のプログラム。
【符号の説明】
【００９７】
１０１、４０１  ロードバランサ
１０２−１、１０２−２、４０２−１〜４０２−３、１２０１  サーバ
１０３−１〜１０３−３、４０３−１〜４０３−３  クライアント端末
１０４、４０４  通信ネットワーク
２０１  情報処理装置
２１１、５１１  通信部
２１２、５１４  計算部
２１３、５１５  制御部
２１４、５１６  決定部
５１２  記憶部
５１３  選択部
５２１  応答時間情報
５２２  閾値情報
６１１、１５１１  ＶＭ
６１２、１５１３  通知部
６１３、１５１２  生成部
７０１、８０１  曲線
７０２、８０２  直線
７１１〜７１４  点
１６０１  ＣＰＵ
１６０２  メモリ
１６０３  入力装置
１６０４  出力装置
１６０５  補助記憶装置
１６０６  媒体駆動装置
１６０７  ネットワーク接続装置
１６０８  バス
１６０９  可搬型記録媒体
【図１】
2019144715.tif 000003
【図２】
2019144715.tif 000004
【図３】
2019144715.tif 000005
【図４】
2019144715.tif 000006
【図５】
2019144715.tif 000007
【図６】
2019144715.tif 000008
【図７】
2019144715.tif 000009
【図８】
2019144715.tif 000010
【図９】
2019144715.tif 000011
【図１０】
2019144715.tif 000012
【図１１】
2019144715.tif 000013
【図１２】
2019144715.tif 000014
【図１３】
2019144715.tif 000015
【図１４Ａ】
2019144715.tif 000016
【図１４Ｂ】
2019144715.tif 000017
【図１５】
2019144715.tif 000018
【図１６】
2019144715.tif 000019