(57)【特許請求の範囲】
【請求項１】
クラスタシステムを構成し、最新のプログラムのコピーおよびコピーした前記最新のプログラムの有効化によりプログラムのアップデートを行う複数の管理対象ノードに実装されている前記プログラムのアップデートの時期を、前記管理対象ノードとネットワークを介して接続されたコンピュータに管理させるアップデート管理プログラムであって、
前記コンピュータを、
前記最新のプログラムを記憶する複写元プログラム記憶手段、
前記複数の管理対象ノードが複数のグループに分かれて登録されており、各グループに対してアップデート順が定義されており、かつ、前記複写元プログラム記憶手段に記憶された前記最新のプログラムが未取得であることが初期状態として設定されたプログラム取得状態情報が各管理対象ノードに対応付けて設定されたアップデート管理テーブルを記憶するアップデート管理情報記憶手段、
前記管理対象ノードから前記複写元プログラム記憶手段に記憶された前記最新のプログラムを取得したことを示すプログラム取得通知を受け付け、前記アップデート管理テーブルにおける前記プログラム取得通知を送信した管理対象ノードに対応するプログラム取得状態情報を、取得済に変更するプログラム取得状態管理手段、
前記プログラムのアップデート指示に応答して、前記アップデート管理情報記憶手段を参照し、すべての管理対象ノードのプログラム取得状態情報が取得済になった場合に、最もアップデート順が早いグループを最初に選択し、その後、直前に選択したグループに属するすべての管理対象ノードのアップデート処理が完了するごとに、アップデート順に従って各グループを順番に選択するグループ選択手段、
前記アップデート管理テーブルを参照し、前記グループ選択手段で選択したグループに属する管理対象ノードに対して、当該管理対象ノードが記憶するプログラムに対する当該管理対象ノードが記憶する最新のプログラムの有効化を指示するアップデート要求を送信するアップデート指示手段、
前記アップデート要求を送信した各管理対象ノードからアップデート完了通知を受け付け、前記アップデート完了通知を送信した管理対象ノードのアップデート処理が完了したことを前記グループ選択手段に通知する完了通知取得手段、
として機能させることを特徴とするアップデート管理プログラム。
【請求項２】
前記アップデート管理テーブルには、アップデートが未完了であることが初期状態として設定されたアップデート状況情報が、各管理対象ノードに対応付けて設定されており、
前記グループ選択手段は、前記アップデート管理テーブルを参照し、直前に選択したグループに属するすべての管理対象ノードのアップデート状態がアップデート済になった場合、直前に選択したグループに属するすべての管理対象ノードのアップデート処理が完了したと判断し、
前記完了通知取得手段は、前記アップデート管理テーブルにおける前記アップデート完了通知を送信した管理対象ノードに対応するアップデート状況情報を、アップデート済に変更することで、前記アップデート完了通知を送信した管理対象ノードのアップデート処理が完了したことを前記グループ選択手段に通知することを特徴とする請求項１記載のアップデート管理プログラム。
【請求項３】
クラスタシステムを構成し、最新のプログラムのコピーおよびコピーした前記最新のプログラムの有効化によりプログラムのアップデートを行う複数の管理対象ノードにネットワークを介して接続され、前記複数の管理対象ノードに実装されている前記プログラムのアップデートの時期を管理するための管理ノードにおいて、
前記最新のプログラムを記憶する複写元プログラム記憶手段と、
前記複数の管理対象ノードが複数のグループに分かれて登録されており、各グループに対してアップデート順が定義されており、かつ、前記複写元プログラム記憶手段に記憶された前記最新のプログラムが未取得であることが初期状態として設定されたプログラム取得状態情報が各管理対象ノードに対応付けて設定されたアップデート管理テーブルを記憶するアップデート管理情報記憶手段と、
管理対象ノードから前記複写元プログラム記憶手段に記憶された前記最新のプログラムを取得したことを示すプログラム取得通知を受け付け、前記アップデート管理テーブルにおける前記プログラム取得通知を送信した管理対象ノードに対応するプログラム取得状態情報を、取得済に変更するプログラム取得状態管理手段と、
前記プログラムのアップデート指示に応答して、前記アップデート管理情報記憶手段を参照し、すべての管理対象ノードのプログラム取得状態情報が取得済になった場合に、最もアップデート順が早いグループを最初に選択し、その後、直前に選択したグループに属するすべての管理対象ノードのアップデート処理が完了するごとに、アップデート順に従って各グループを順番に選択するグループ選択手段と、
前記アップデート管理テーブルを参照し、前記グループ選択手段で選択したグループに属する管理対象ノードに対して、当該管理対象ノードが記憶するプログラムに対する当該管理対象ノードが記憶する最新のプログラムの有効化を指示するアップデート要求を送信するアップデート指示手段と、
前記アップデート要求を送信した各管理対象ノードからアップデート完了通知を受け付け、前記アップデート完了通知を送信した管理対象ノードのアップデート処理が完了したことを前記グループ選択手段に通知する完了通知取得手段と、
を有することを特徴とする管理ノード。
【請求項４】
クラスタシステムを構成し、最新のプログラムのコピーおよびコピーした前記最新のプログラムの有効化によりプログラムのアップデートを行う複数の管理対象ノードに実装されている前記プログラムのアップデートの時期を、前記管理対象ノードとネットワークを介して接続されたコンピュータで管理するためのアップデート管理方法であって、
前記コンピュータが、
前記管理対象ノードから前記コンピュータが備える複写元プログラム記憶手段に記憶された前記最新のプログラムを取得したことを示すプログラム取得通知を受け付け、前記コンピュータが備えるアップデート管理情報記憶手段が記憶するアップデート管理テーブルであって、前記複数の管理対象ノードが複数のグループに分かれて登録されており、各グループに対してアップデート順が定義されており、かつ、前記複写元プログラム記憶手段に記憶された前記最新のプログラムが未取得であることが初期状態として設定されたプログラム取得状態情報が各管理対象ノードに対応付けて設定されたアップデート管理テーブルにおける前記プログラム取得通知を送信した管理対象ノードに対応するプログラム取得状態情報を、取得済に変更し、
前記プログラムのアップデート指示に応答して、前記アップデート管理情報記憶手段を参照し、すべての管理対象ノードのプログラム取得状態情報が取得済になった場合に、最もアップデート順が早いグループを最初に選択し、その後、直前に選択したグループに属するすべての管理対象ノードのアップデート処理が完了するごとに、アップデート順に従って各グループを順番に選択し、
前記アップデート管理テーブルを参照し、選択したグループに属する管理対象ノードに対して、当該管理対象ノードが記憶するプログラムに対する当該管理対象ノードが記憶する最新のプログラムの有効化を指示するアップデート要求を送信し、
前記アップデート要求を送信した各管理対象ノードからアップデート完了通知を受け付け、前記アップデート完了通知を送信した管理対象ノードのアップデート処理が完了したことを前記アップデート管理情報記憶手段に設定する、
ことを特徴とするアップデート管理方法。
【請求項５】
最新のプログラムのコピーおよびコピーした前記最新のプログラムの有効化によりプログラムのアップデートを行う複数の管理対象ノードと管理ノードとがネットワークを介して接続されたクラスタシステムであって、
プログラム記憶手段と、前記管理ノードからアップデート要求を受信すると、前記プログラム記憶手段に記憶されたアップデート対象のプログラムに対して、前記プログラム記憶手段に記憶された最新のプログラムを有効化し、アップデートが完了したことを示すアップデート完了通知を前記管理ノードに送信するアップデート手段と、を具備する前記複数の管理対象ノードと、
前記最新のプログラムを記憶する複写元プログラム記憶手段と、前記複数の管理対象ノードが複数のグループに分かれて登録されており、各グループに対してアップデート順が定義されており、かつ、前記複写元プログラム記憶手段に記憶された前記最新のプログラムが未取得であることが初期状態として設定されたプログラム取得状態情報が各管理対象ノードに対応付けて設定されたアップデート管理テーブルを記憶するアップデート管理情報記憶手段と、管理対象ノードから前記複写元プログラム記憶手段に記憶された前記最新のプログラムを取得したことを示すプログラム取得通知を受け付け、前記アップデート管理テーブルにおける前記プログラム取得通知を送信した管理対象ノードに対応するプログラム取得状態情報を、取得済に変更するプログラム取得状態管理手段と、前記プログラムのアップデート指示に応答して、前記アップデート管理情報記憶手段を参照し、すべての管理対象ノードのプログラム取得状態情報が取得済になった場合に、最もアップデート順が早いグループを最初に選択し、その後、直前に選択したグループに属するすべての管理対象ノードのアップデート処理が完了するごとに、アップデート順に従って各グループを順番に選択するグループ選択手段と、前記アップデート管理テーブルを参照し、前記グループ選択手段で選択したグループに属する管理対象ノードに対して、プログラムのアップデート要求を送信するアップデート指示手段と、前記アップデート要求を送信した各管理対象ノードからアップデート完了通知を受け付け、前記アップデート完了通知を送信した管理対象ノードのアップデート処理が完了したことを前記グループ選択手段に通知する完了通知取得手段と、を具備する前記管理ノードと、
を有することを特徴とするクラスタシステム。
【請求項６】
前記管理対象ノードは、前記複写元プログラム記憶手段に前記最新のプログラムとして格納された複写元プログラムの更新の有無を定期的に確認し、更新されていた場合、前記複写元プログラムのコピーを前記プログラム記憶手段に格納するプログラム取得手段をさらに有し、
前記管理ノードは、前記管理ノードと接続された入力装置から受け付けた操作入力に応答して、前記管理対象ノードに配布される前記複写元プログラムを記憶する前記複写元プログラム記憶手段に対して最新の複写元プログラムを格納し、前記グループ選択手段に対して前記複写元プログラムからコピーされた前記プログラムの前記アップデート指示を出力するプログラム更新手段をさらに有することを特徴とする請求項５記載のクラスタシステム。
【請求項７】
前記管理対象ノードは、前記複写元プログラム記憶手段から前記最新のプログラムを取得し、前記プログラム記憶手段に設けられた第１の領域に格納するプログラム取得手段をさらに有し、
前記プログラム記憶手段に設けられた第２の領域には、前記アップデート対象のプログラムが格納されており、
前記アップデート手段は、前記有効化の際に、前記第２の領域に格納されたプログラムの動作を停止させた後、前記第１の領域に格納された前記最新のプログラムを起動し、その後、前記プログラム記憶手段に設けられた第３の領域に前記第１の領域に格納された前記最新のプログラムをコピーする、
ことを特徴とする請求項５記載のクラスタシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はアップデート管理プログラム、管理ノード、アップデート管理方法、およびクラスタシステムに関し、特に遠隔操作によりプログラムのアップデートを行うアップデート管理プログラム、管理ノード、アップデート管理方法、およびクラスタシステムに関する。
【背景技術】
【０００２】
複数のコンピュータを接続したクラスタシステムは、運用を停止せずにクラスタを構成するコンピュータ（以下、ノードと呼ぶ）のメンテナンスが行われる。ノードのメンテナンスの１つとして、プログラムのアップデートがある。
【０００３】
コンピュータに実装されるソフトウェアのプログラムは、様々な理由で適宜アップデートされる。例えば、バグ（プログラムの誤りや不具合）を修正するためのアップデート、機能を拡張するためのアップデート、セキュリティーホールを塞ぐ（システムの安全性に関する弱点を取り除くこと）ためのアップデートなどである。
【０００４】
クラスタシステムのような複数のノードが連携して動作するシステムに実装されるプログラムの中には、すべてのノードでバージョン（版数）が揃っているべきものがある。そのようなプログラムをアップデートする場合、アップデートのタイミングを同期させる必要がある。そこで、すべてのエージェントに対して構成変更に必要な構成情報を配信完了後に、構成変更開始の指示情報を各エージェントに配信する技術が考えられている（例えば、特許文献１参照）。この技術を用いれば、構成変更のタイミングを同期させることができる。
【特許文献１】特開平１０−３３４０２０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかし、アップデートの対象となるプログラムやアップデートの内容によっては、すべてのノードで完全に同期してアップデート処理を行うことが不適切な場合もある。例えば、アップデートの内容によっては、プログラムの再起動やＯＳのリブートが必要な場合がある。このようなアップデート処理をクラスタシステム内のすべてのノードで同時に実行すると、サービスが一時的に停止する。その結果、多重障害が発生した場合と同様の事態を招くこととなる。
【０００６】
本発明はこのような点に鑑みてなされたものであり、すべての管理対象ノードが同時にプログラムのアップデートを開始することによる多重障害の発生を防止できるアップデート管理プログラム、管理ノード、アップデート管理方法、およびクラスタシステムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、クラスタシステムを構成し、最新のプログラムのコピーおよびコピーした最新のプログラムの有効化によりプログラムのアップデートを行う複数の管理対象ノードに実装されているプログラムのアップデートの時期を、管理対象ノードとネットワークを介して接続されたコンピュータに管理させるアップデート管理プログラムが提供される。このアップデート管理プログラムを実行するコンピュータは、複写元プログラム記憶手段、アップデート管理情報記憶手段、プログラム取得状態管理手段、グループ選択手段、アップデート指示手段および完了通知取得手段として機能する。複写元プログラム記憶手段は、最新のプログラムを記憶する。アップデート管理情報記憶手段は、複数の管理対象ノードが複数のグループに分かれて登録されており、各グループに対してアップデート順が定義されており、かつ、複写元プログラム記憶手段に記憶された最新のプログラムが未取得であることが初期状態として設定されたプログラム取得状態情報が各管理対象ノードに対応付けて設定されたアップデート管理テーブルを記憶する。プログラム取得状態管理手段は、管理対象ノードから複写元プログラム記憶手段に記憶された最新のプログラムを取得したことを示すプログラム取得通知を受け付け、アップデート管理テーブルにおけるプログラム取得通知を送信した管理対象ノードに対応するプログラム取得状態情報を、取得済に変更する。グループ選択手段は、プログラムのアップデート指示に応答して、アップデート管理情報記憶手段を参照し、すべての管理対象ノードのプログラム取得状態情報が取得済になった場合に、最もアップデート順が早いグループを最初に選択し、その後、直前に選択したグループに属するすべての管理対象ノードのアップデート処理が完了するごとに、アップデート順に従って各グループを順番に選択する。アップデート指示手段は、アップデート管理テーブルを参照し、グループ選択手段で選択したグループに属する管理対象ノードに対して、その管理対象ノードが記憶するプログラムに対するその管理対象ノードが記憶する最新のプログラムの有効化を指示するアップデート要求を送信する。完了通知取得手段は、アップデート要求を送信した各管理対象ノードからアップデート完了通知を受け付け、アップデート完了通知を送信した管理対象ノードのアップデート処理が完了したことをグループ選択手段に通知する。
【０００８】
また、上記課題を解決するために、上記アップデート管理プログラムを実行するコンピュータと同様の機能を有する管理ノードが提供される。
【０００９】
また、上記課題を解決するために、上記アップデート管理プログラムを実行するコンピュータと同様の処理を行うアップデート管理方法が提供される。
【００１０】
また、上記課題を解決するために、最新のプログラムのコピーおよびコピーした最新のプログラムの有効化によりプログラムのアップデートを行う複数の管理対象ノードと管理ノードとがネットワークを介して接続されたクラスタシステムが提供される。複数の管理対象ノードは、プログラム記憶手段およびアップデート手段を具備する。プログラム記憶手段は、アップデート対象のプログラムと最新のプログラムとを記憶する。アップデート手段は、管理ノードからアップデート要求を受信すると、プログラム記憶手段に記憶されたアップデート対象のプログラムに対して、プログラム記憶手段に記憶された最新のプログラムを有効化し、アップデートが完了したことを示すアップデート完了通知を管理ノードに送信する。管理ノードは、複写元プログラム記憶手段、アップデート管理情報記憶手段、プログラム取得状態管理手段、グループ選択手段、アップデート指示手段および完了通知取得手段を具備する。複写元プログラム記憶手段は、最新のプログラムを記憶する。アップデート管理情報記憶手段は、複数の管理対象ノードが複数のグループに分かれて登録されており、各グループに対してアップデート順が定義されており、かつ、複写元プログラム記憶手段に記憶された最新のプログラムが未取得であることが初期状態として設定されたプログラム取得状態情報が各管理対象ノードに対応付けて設定されたアップデート管理テーブルを記憶する。プログラム取得状態管理手段は、管理対象ノードから複写元プログラム記憶手段に記憶された最新のプログラムを取得したことを示すプログラム取得通知を受け付け、アップデート管理テーブルにおけるプログラム取得通知を送信した管理対象ノードに対応するプログラム取得状態情報を、取得済に変更する。グループ選択手段は、プログラムのアップデート指示に応答して、アップデート管理情報記憶手段を参照し、すべての管理対象ノードのプログラム取得状態情報が取得済になった場合に、最もアップデート順が早いグループを最初に選択し、その後、直前に選択したグループに属するすべての管理対象ノードのアップデート処理が完了するごとに、アップデート順に従って各グループを順番に選択する。アップデート指示手段は、アップデート管理テーブルを参照し、グループ選択手段で選択したグループに属する管理対象ノードに対して、プログラムのアップデート要求を送信する。完了通知取得手段は、アップデート要求を送信した各管理対象ノードからアップデート完了通知を受け付け、アップデート完了通知を送信した管理対象ノードのアップデート処理が完了したことをグループ選択手段に通知する。
【発明の効果】
【００１２】
上記管理ノードにより、直前のグループのアップデートの完了を待って、次の順番のグループの管理対象ノードにおいてプログラムのアップデートが実行され、すべての管理対象ノードが同時にアップデートを開始することによる多重障害の発生を防止できる。
【発明を実施するための最良の形態】
【００１３】
以下、本発明の実施の形態を図面を参照して説明する。
図１は、実施の形態の概要を示す図である。クラスタシステムは、管理ノード１と複数の管理対象ノード２〜７で構成される。管理ノード１は、クラスタシステムを構成する複数の管理対象ノードに実装されているプログラムのアップデートの時期を管理するために、アップデート管理情報記憶手段１ａ、グループ選択手段１ｂ、アップデート指示手段１ｃ、および完了通知取得手段１ｄを有する。
【００１４】
アップデート管理情報記憶手段１ａは、複数の管理対象ノード２〜７が複数のグループに分かれて登録されており、各グループに対してアップデート順が定義されたアップデート管理テーブル１ａａを記憶する。図１の例では、管理対象ノード２〜４で構成されるグループのアップデート順が最も早い。その後、管理対象ノード５〜７で構成されるグループのアップデート順となる。なお、アップデート管理テーブル１ａａには、図１に示すように、グループごとのアップデート順に加え、各グループに属するノードがアップデートを完了したか否かを示すアップデート状況を設定することができる。
【００１５】
グループ選択手段１ｂは、プログラムのアップデート指示に応答して、アップデート管理情報記憶手段１ａを参照し、最初に最もアップデート順が早いグループを選択する。その後、グループ選択手段１ｂは、直前に選択したグループに属するすべての管理対象ノードのアップデート処理が完了するごとに、アップデート順に従って各グループを順番に選択する。なお、プログラムのアップデート指示は、例えば、管理者による操作入力によってグループ選択手段１ｂに入力される。また、管理者からの操作入力に基づいて、最新のプログラム（複写元プログラム）を所定の場所に登録したときに、プログラムの登録機能（複写元プログラム更新機能）からグループ選択手段１ｂに対してプログラムのアップデート指示を入力することもできる。
【００１６】
アップデート指示手段１ｃは、アップデート管理テーブル１ａａを参照し、グループ選択手段１ｂで選択したグループに属する管理対象ノードに対して、プログラムのアップデート要求を送信する。例えば、グループ選択手段１ｂにおいて管理対象ノード２〜４が選択された場合、アップデート指示手段１ｃは、選択された管理対象ノード２〜４に対してアップデート要求を送信する。
【００１７】
完了通知取得手段１ｄは、アップデート指示手段１ｃがアップデート要求を送信した各管理対象ノードからアップデート完了通知を受け付け、アップデート完了通知を送信した管理対象ノードのアップデート処理が完了したことをグループ選択手段１ｂに通知する。なお、グループ選択手段１ｂへの通知処理は、アップデート管理テーブル１ａａを介して行うことができる。すなわち、完了通知取得手段１ｄは、アップデート管理テーブル１ａａにおけるアップデート完了通知を送信した管理対象ノードに対応するアップデート状況情報を、アップデート済に変更する。これにより、グループ選択手段１ｂは、アップデート管理情報記憶手段１ａを参照した際に、アップデート完了通知を送信した管理対象ノードのアップデート処理が完了したことを認識できる（管理対象ノードのアップデート完了を示す通知を受け取ることができる）。
【００１８】
このような管理ノード１によれば、最初に最もアップデート順が早いグループに属する管理対象ノード２〜４に対してアップデート要求が送信される。その後、直前に選択したグループに属するすべての管理対象ノード２〜４のアップデート処理が完了するごとに、アップデート順に従って次の順番のグループに属する管理対象ノード５〜７に対してアップデート要求が送信される。その結果、すべての管理対象ノード２〜７に対して同時にアップデートが行われるということがなくなる。その結果、プログラムのアップデートに起因する多重障害の発生を防止できる。
【００１９】
また、本実施の形態によるアップデート処理の対象となるのは、主として、プログラムのアップデートの際にＯＳ（Operating System）のリブートが必要となるプログラムや、プログラムのアップデートの際にそのプログラム自身のリスタートが必要となるプログラムである。このような、ＯＳのリブートやプログラムのリスタートは、プログラムの動作環境の変更や、メモリに常駐させるプログラムの処理内容の変更のために必要な処理である。
【００２０】
アップデートの際にＯＳのリブートやプログラム自身のリスタートが必要となるプログラムとしては、各管理対象ノードにおける動作環境を制御するための制御プログラムがある。例えば、管理対象ノード間の負荷分散を行うとき、負荷情報を収集し、必要に応じて単位時間当たりの処理量を変更するための制御プログラムが使用される。また、データの冗長化のために、格納したデータのコピーを他の管理対象ノードに転送する場合、転送相手や転送場所を管理する制御プログラムが使用される。管理対象ノードにおいてこれらの制御プログラムが停止すると、その間、動作の信頼性が保てなくなるため、その管理対象ノードでの全体のサービスを停止する必要に迫られることがある。
【００２１】
そこで、制御プログラムをアップデートする場合を例にとって、実施の形態を具体的に説明する。なお、制御プログラムのアップデート処理は、大別して、プログラムのコピー段階（予備領域のプログラムの更新も含む）と、コピーした制御プログラムの有効化（予備領域のプログラムを運用状態とすること）段階とに分けることができる。プログラムのアップデートでは、有効化の際にＯＳのリブートやプログラムのリスタートが発生する。そのため、以下の実施の形態では、アップデート処理中の有効化の順番を制御することで、多重障害の発生を防止する。
【００２２】
図２は、本実施の形態のクラスタシステム構成例を示す図である。クラスタシステムでは、ネットワーク１０を介して、クライアント端末２１，２２からの処理要求に応答して処理を実行する複数の管理対象ノード２１０，２２０，２３０，２４０，２５０，２６０が接続されている。これらの管理対象ノード２１０，２２０，２３０，２４０，２５０，２６０は、ネットワーク１０を介して接続された管理ノード１００によって制御プログラムのアップデート処理が制御される。
【００２３】
管理ノード１００では、管理対象ノードＩＤによって各管理対象ノード２１０，２２０，２３０，２４０，２５０，２６０が識別される。管理対象ノード２１０のノードＩＤは「ノード＃１」である。管理対象ノード２２０のノードＩＤは「ノード＃２」である。管理対象ノード２３０のノードＩＤは「ノード＃３」である。管理対象ノード２４０のノードＩＤは「ノード＃４」である。管理対象ノード２５０のノードＩＤは「ノード＃５」である。管理対象ノード２６０のノードＩＤは「ノード＃６」である。
【００２４】
また、ネットワーク１０には、複数のクライアント端末２１，２２が接続されている。クライアント端末２１，２２は、ユーザからの操作入力になどに応答して、いずれかの管理対象ノード２１０，２２０，２３０，２４０，２５０，２６０に対して処理要求を送信する。
【００２５】
クラスタシステムを構成する管理対象ノード２１０，２２０，２３０，２４０，２５０，２６０は、複数のグループに分けられている。図２の例では、３台の管理対象ノード２１０，２２０，２３０で１つのグループを構成している。このグループには、「グループ＃１」というグループＩＤが付与されている。また、残る３台の管理対象ノード２４０，２５０，２６０で１つのグループを構成している。このグループには、「グループ＃２」というグループＩＤが付与されている。グループ分けは、予め管理者によって管理ノード１００に定義されている。
【００２６】
各グループには、同時に停止してもクラスタシステム全体としてのサービスが停止しない（多重障害とはならない）複数の管理対象ノードが属する。例えば、クラスタシステムにおいて複数のサービスが提供されており、各サービスが複数の管理対象ノードで提供されている場合がある。この場合、同一のサービスを提供する管理対象ノードが、すべてのグループに少なくとも１台ずつ含まれるようにグループ分けを行う。なお、すべての管理対象ノード２１０，２２０，２３０，２４０，２５０，２６０が同じサービスを提供するクラスタシステムの場合もある。このような場合であれば、グループ分けに際してサービスの内容を考慮する必要はない。
【００２７】
図３は、本実施の形態に用いる管理ノードのハードウェア構成例を示す図である。管理ノード１００は、ＣＰＵ（Central Processing Unit）１０１によって装置全体が制御されている。ＣＰＵ１０１には、バス１０７を介してＲＡＭ（Random Access Memory）１０２、ハードディスクドライブ（ＨＤＤ:Hard Disk Drive）１０３、グラフィック処理装置１０４、入力インタフェース１０５、および通信インタフェース１０６が接続されている。
【００２８】
ＲＡＭ１０２には、ＣＰＵ１０１に実行させるＯＳのプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、ＣＰＵ１０１による処理に必要な各種データが格納される。ＨＤＤ１０３には、ＯＳやアプリケーションプログラムが格納される。
【００２９】
グラフィック処理装置１０４には、モニタ１１が接続されている。グラフィック処理装置１０４は、ＣＰＵ１０１からの命令に従って、画像をモニタ１１の画面に表示させる。入力インタフェース１０５には、キーボード１２とマウス１３とが接続されている。入力インタフェース１０５は、キーボード１２やマウス１３から送られてくる信号を、バス１０７を介してＣＰＵ１０１に送信する。
【００３０】
通信インタフェース１０６は、ネットワーク１０に接続されている。通信インタフェース１０６は、ネットワーク１０を介して、他のコンピュータとの間でデータの送受信を行う。
【００３１】
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。なお、図３には、管理ノード１００のハードウェア構成を示しているが、他の管理対象ノード２１０，２２０，２３０，２４０，２５０，２６０やクライアント端末２１，２２も同様のハードウェア構成で実現することができる。
【００３２】
次に、管理ノード１００と各管理対象ノード２１０，２２０，２３０，２４０，２５０，２６０が有する機能について説明する。
図４は、管理ノードと管理対象ノードとの機能を示すブロック図である。なお、図４には、複数の管理対象ノード２１０，２２０，２３０，２４０，２５０，２６０のうち、管理対象ノード２１０の機能を代表で示している。他の管理対象ノード２２０，２３０，２４０，２５０，２６０の機能も、管理対象ノード２１０と同様である。
【００３３】
管理ノード１００は、複写元プログラム記憶部１１０、アップデート管理情報記憶部１２０、複写元プログラム更新部１３０、および有効化制御部１４０を有している。
複写元プログラム記憶部１１０は、クラスタシステム内の各管理対象ノード２２０，２３０，２４０，２５０，２６０に導入すべき最新の制御プログラム１１１を記憶するための記憶機能である。例えば、ＨＤＤ１０３の記憶領域の一部が、複写元プログラム記憶部１１０として使用される。
【００３４】
アップデート管理情報記憶部１２０は、各管理対象ノード２１０，２２０，２３０，２４０，２５０，２６０で実行される制御プログラムのアップデート処理の実行順や処理状況などに関する情報を記憶するための記憶機能である。例えば、ＨＤＤ１０３の記憶領域の一部が、アップデート管理情報記憶部１２０として使用される。なお、アップデート管理情報記憶部１２０には、各管理対象ノードが属するグループが設定されており、グループごとにアップデート処理の実行順が設定されている。
【００３５】
複写元プログラム更新部１３０は、管理者からの操作入力に応答して、制御プログラム１１１を複写元プログラム記憶部１１０に格納する。制御プログラム１１１は、例えば、ネットワーク１０を介して複写元プログラム記憶部１１０に転送される。また、複写元プログラム更新部１３０は、管理ノード１００内に設けられたエディタやコンパイラ（図示せず）などにより作成された制御プログラム１１１を、複写元プログラム記憶部１１０に格納することもできる。複写元プログラム更新部１３０は、最新の制御プログラム１１１を複写元プログラム記憶部１１０に格納した場合、その旨を有効化制御部１４０に通知する。
【００３６】
有効化制御部１４０は、各管理対象ノード２１０，２２０，２３０，２４０，２５０，２６０は、複写元プログラム記憶部１１０に格納された制御プログラム１１１の有効化を指示する（有効化要求を送信する）。すなわち、有効化制御部１４０は、図１に示したグループ選択手段１ｂ、アップデート指示手段１ｃ、および完了通知取得手段１ｄの機能を備えている。なお、図４に示すシステムでは、予め最新の制御プログラムを管理対象ノード２１０，２２０，２３０，２４０，２５０，２６０にコピーしている。これにより、管理ノード１００では、有効化の時期を制御すればよい。そのため、有効化制御部１４０では、図１の説明で説明したアップデート要求に代えて、有効化要求を管理対象ノード２１０，２２０，２３０，２４０，２５０，２６０に送信する。アップデート要求と有効化要求とは、共に最新の制御プログラムで運用を開始するタイミングを指示する情報である。
【００３７】
具体的には、有効化制御部１４０は、複写元プログラム更新部１３０から最新の制御プログラム１１１を複写元プログラム記憶部１１０に格納した旨の通知を受け取ると、アップデート管理情報記憶部１２０に格納されているアップデート管理情報を初期化する。その後、有効化制御部１４０は、各管理対象ノード２１０，２２０，２３０，２４０，２５０，２６０から複写元プログラムのコピー完了通知を受け取る。コピー完了通知を受け取った有効化制御部１４０は、どの管理対象ノードからコピー完了通知を受け取ったのかを示す情報を、アップデート管理情報記憶部１２０に格納する。
【００３８】
すべての管理対象ノード２１０，２２０，２３０，２４０，２５０，２６０からコピー完了通知を受け取ると、有効化制御部１４０は、アップデート管理情報記憶部１２０に設定されている順番で、各管理対象ノードに対して制御プログラム１１１の有効化を指示する。この際、先の順番のグループ内のすべての管理対象ノードで有効化処理が完了したことを確認後、次の順番のグループに属する各管理対象ノードに対して有効化を指示する。各管理対象ノードの有効化が完了したか否かは、有効化を指示した管理対象ノードから返される有効化完了通知によって認識できる。
【００３９】
なお、有効化制御部１４０は、各管理対象ノードの有効化の完了の有無を、アップデート管理情報記憶部１２０を用いて管理する。すなわち、有効化制御部１４０は、管理対象ノードから有効化完了通知を受け取ると、どの管理対象ノードから有効化完了通知を受け取ったのかを示す情報を、アップデート管理情報記憶部１２０に格納する。
【００４０】
管理対象ノード２１０は、２つのプログラム記憶部２１１，２１２、複写元プログラム取得部２１３、および有効化部２１４を有している。
プログラム記憶部２１１は、運用中の制御プログラム２１１ａを記憶するための記憶機能である。例えば、管理対象ノード２１０内のＨＤＤの記憶領域の一部がプログラム記憶部２１１として使用される。図４の例では、運用中の制御プログラム２１１ａの版数は「Ｖｅｒ．１」である。
【００４１】
プログラム記憶部２１２は、予備の制御プログラム２１２ａを記憶するための記憶機能である。例えば、管理対象ノード２１０内のＨＤＤの記憶領域の一部がプログラム記憶部２１２として使用される。管理ノード１００から取得した制御プログラム１１１のコピーは、予備領域であるプログラム記憶部２１２に格納される。
【００４２】
複写元プログラム取得部２１３は、定期的に管理ノード１００の複写元プログラム記憶部１１０内を参照する。そして、複写元プログラム記憶部１１０内に最新の制御プログラム１１１が格納されていた場合、複写元プログラム取得部２１３は、その制御プログラム１１１のプログラム記憶部２１２に格納する。
【００４３】
有効化部２１４は、管理ノード１００からの有効化の指示に応答して、予備領域であるプログラム記憶部２１２に格納されている予備の制御プログラムの有効化を行う。予備の制御プログラムの有効化処理では、運用中の制御プログラム２１１ａの機能停止、予備の制御プログラムの起動などが行われる。また、必要に応じて、管理対象ノード２１０のＯＳのリブートが行われる場合もある。なお、ＯＳがリブートされた場合、有効化部２１４や複写元プログラム取得部２１３は、ＯＳのリブート完了後に自動的に起動される。
【００４４】
なお、管理ノード１００の複写元プログラム記憶部１１０に格納される最新の制御プログラム１１１は、必要なプログラムがすべて含まれている場合と、差分のみの場合とがある。差分のみの制御プログラム１１１とは、欠陥の修正などのためのパッチファイルや、機能を拡張するためのアドオンプログラムなどである。パッチファイルやアドオンプログラムが複写元プログラム記憶部１１０に格納されていた場合、管理対象ノード２１０の複写元プログラム取得部２１３は、取得したパッチファイルやアドオンプログラムを用いて、予備領域であるプログラム記憶部２１２内の制御プログラム２１２ａを更新する。この更新処理により、プログラム記憶部２１２内の制御プログラムの版数が最新となる。
【００４５】
また、図４では、１つの制御プログラム１１１のみが示されているが、複数のプログラムを格納しておき、複数のプログラムのアップデートをまとめて実行することもできる。その場合、例えば、各プログラムの版数を示す版数管理テーブルを複写元プログラム記憶部１１０内に設けておく。版数管理テーブルには、格納されているプログラムの識別情報（例えば、ソフトウェア名）、プログラムが格納されたファイルの識別情報（例えば、ファイル名と格納場所）、およびプログラムの版数が対応づけて登録される。この場合、管理対象ノード２１０のプログラム記憶部２１１，２１２内にも、該当する記憶領域に格納されているプログラムを管理するための同様の版数管理テーブルを格納しておく。そして、複写元プログラム取得部２１３は、複写元プログラム記憶部１１０内の版数管理テーブルと予備領域であるプログラム記憶部２１２内の版数管理テーブルとを比較することで、最新のプログラムが複写元プログラム記憶部１１０に格納されているか否かを判断する。
【００４６】
次に、アップデート管理情報記憶部１２０内のデータ構造について説明する。
図５は、アップデート管理情報記憶部のデータ構造例を示す図である。アップデート管理情報記憶部１２０には、アップデート管理テーブル１２１が格納されている。アップデート管理テーブル１２１は、制御プログラムのアップデート処理に関する情報が登録されたデータテーブルである。アップデート管理テーブル１２１には、グループＩＤ、有効化順、ノードＩＤ、コピー状況、および有効化状況の欄が設けられている。
【００４７】
グループＩＤの欄には、クラスタシステム内の複数の管理対象ノードで構成される各グループの識別情報（グループＩＤ）が設定される。
有効化順の欄には、各グループに対して制御プログラムのアップデート処理を実行する順番が設定される。
【００４８】
ノードＩＤの欄には、各管理対象ノードの識別情報（ノードＩＤ）が設定される。
コピー状況の欄には、管理対象ノードごとに、複写元となる制御プログラムのコピーが完了したか否かを示す情報が設定される。コピーが完了した管理対象ノードに対して「済」と設定され、コピーが未完了の管理対象ノードに対して「未」と設定される。
【００４９】
有効化状況の欄には、管理対象ノードごとに、最新の制御プログラムの有効化が完了したか否かを示す情報が設定される。有効化が完了した管理対象ノードに対して「済」と設定され、有効化が未完了の管理対象ノードに対して「未」と設定される。
【００５０】
なお、アップデート管理テーブル１２１において、グループＩＤ、有効化順、およびノードＩＤの欄の値は、システムの管理者によって予め設定され、初期化処理においても値は維持される。コピー状況、有効化状況の値は、初期化によってすべての「未」に変更され、有効化制御部１４０によって適宜「済」に変更される。
【００５１】
以上のような構成のシステムによって、制御プログラムのアップデートが行われる。制御プログラムをアップデートする場合、管理者は、最新の制御プログラム１１１を管理ノード１００に対して入力する。すると、複写元プログラム更新部１３０は、制御プログラム１１１を複写元プログラム記憶部１１０に格納する。
【００５２】
各管理対象ノード２１０，２２０，２３０，２４０，２５０，２６０は、管理ノード１００の複写元プログラム記憶部１１０を参照して、制御プログラム１１１のコピーを自己のプログラム記憶領域に格納する。
【００５３】
図６は、各管理対象ノードにおける制御プログラムコピー処理手順を示すフローチャートである。以下、図６に示す処理をステップ番号に沿って説明する。なお、この処理は、予め設定された所定の間隔で実行される。
【００５４】
［ステップＳ１１］管理対象ノード２１０の複写元プログラム取得部２１３は、管理ノード１００の制御プログラム版数を調べる。具体的には、複写元プログラム取得部２１３は、管理ノード１００内の複写元プログラム記憶部１１０にアクセスし、複写元プログラム記憶部１１０に格納されている制御プログラム１１１の版数を取得する。なお、制御プログラム１１１の版数は、例えば、制御プログラム１１１が格納されたファイルのプロパティ（ファイルの属性を示す情報）に設定しておくことができる。この場合、複写元プログラム取得部２１３は、制御プログラム１１１のプロパティを参照し、版数情報を取得する。また、制御プログラム１１１が格納されたファイルの名称に版数を示す文字列を含めておくこともできる。その場合、複写元プログラム取得部２１３は、ファイルの名称から版数を示す文字列を抽出する。
【００５５】
［ステップＳ１２］複写元プログラム取得部２１３は、複写元プログラム取得部２１３内の制御プログラム１１１が、最新のものに更新されているか否かを判断する。具体的には、複写元プログラム取得部２１３は、運用中の制御プログラム２１１ａの版数を調べ、ステップＳ１１で取得した制御プログラム１１１の版数を比較する。そして、制御プログラム１１１の版数の方が後の版数であれば、複写元プログラム取得部２１３は、最新のものに更新されていると判断する。一方、比較の結果、版数が同じであるか、あるいは制御プログラム１１１の版数の方が前の版数であれば、複写元プログラム取得部２１３は、最新のものに更新されていないと判断する。制御プログラム１１１が更新されている場合、処理がステップＳ１３に進められる。制御プログラム１１１が更新されていない場合、処理が終了する。
【００５６】
［ステップＳ１３］複写元プログラム取得部２１３は、予備領域（プログラム記憶部２１２）の制御プログラムを更新する。具体的には、複写元プログラム取得部２１３は、管理ノード１００の複写元プログラム記憶部１１０に格納された制御プログラム１１１のコピーを取得し、コピーされた制御プログラムをプログラム記憶部２１２に格納する。その際、複写元プログラム取得部２１３は、プログラム記憶部２１２に格納されていた古い版数の制御プログラム２１２ａを削除する。
【００５７】
［ステップＳ１４］複写元プログラム取得部２１３は、コピー完了通知を管理ノード１００に対して送信する。
このようにして、管理対象ノード２１０において最新の制御プログラム１１１を取得し、予備領域であるプログラム記憶部２１２内の制御プログラムを更新することができる。なお、図６の説明では、管理対象ノード２１０が実行するものとして説明しているが、他の管理対象ノード２２０，２３０，２４０，２５０，２６０でも同様の処理が実行される。
【００５８】
次に、各管理対象ノード２１０，２２０，２３０，２４０，２５０，２６０において行われる制御プログラムの有効化処理について説明する。
図７は、各管理対象ノードにおける有効化処理の手順を示すフローチャートである。以下、図７に示す処理をステップ番号に沿って説明する。
【００５９】
［ステップＳ２１］管理対象ノード２１０の有効化部２１４は、管理ノード１００から有効化要求を受け取ると、予備領域であるプログラム記憶部２１２内の制御プログラムの有効化処理を行う。具体的には、有効化部２１４は、まず運用中のプログラム記憶部２１１内の制御プログラム２１１の動作を停止させる。次に有効化部２１４は、予備領域であるプログラム記憶部２１２に格納されている制御プログラム２１２ａを起動する。この際、ＯＳのリブートが必要であればＯＳのリブート後に、制御プログラム２１２ａが起動される。これにより、予備領域として使用していたプログラム記憶部２１２は、運用領域となる。
【００６０】
［ステップＳ２２］有効化部２１４は、新たに予備領域として使用するプログラム記憶領域を作成し、新たなプログラム記憶領域に運用中の制御プログラムをコピーする。この際、プログラム記憶部２１１に格納されている旧版の制御プログラム２１１ａを削除し、プログラム記憶部２１１を新たな予備領域とすることもできる。
【００６１】
［ステップＳ２３］有効化部２１４は、有効化完了通知を管理ノード１００に送信する。
このようにして、有効化要求に応じて、予備領域に記憶されていた制御プログラムを有効化することができる。
【００６２】
次に、管理ノード１００における制御プログラムのアップデート制御処理について説明する。
図８は、管理ノードにおける制御プログラムのアップデート制御処理の手順を示すフローチャートである。以下、図８に示す処理をステップ番号に沿って説明する。
【００６３】
［ステップＳ３１］管理ノード１００の複写元プログラム更新部１３０は、複写元となる制御プログラムを更新する。具体的には、複写元プログラム更新部１３０は、管理者からの操作入力に応答して、最新の制御プログラム１１１を複写元プログラム記憶部１１０内に格納する。そして、複写元プログラム更新部１３０は、有効化制御部１４０に対して、制御プログラムの更新を行った旨を通知する。
【００６４】
［ステップＳ３２］有効化制御部１４０は、アップデート管理情報記憶部１２０内のアップデート管理テーブル１２１を初期化する。初期化によって、アップデート管理テーブル１２１のコピー状況と有効化状況との欄のすべての値が「未」となる。
【００６５】
［ステップＳ３３］有効化制御部１４０は、各管理対象ノード２１０，２２０，２３０，２４０，２５０，２６０からコピー完了通知を取得したか否かを判断する。コピー完了通知を取得した場合、処理がステップＳ３４に進められる。コピー完了通知を取得していない場合、ステップＳ３３の処理が繰り返され、コピー完了通知が送られるのを待つ。
【００６６】
［ステップＳ３４］有効化制御部１４０は、コピー完了通知を送信した管理対象ノードのコピー状況を更新する。具体的には、有効化制御部１４０は、アップデート管理テーブル１２１において、コピー完了通知の送信元である管理対象ノードのコピー状況の値を「済」に変更する。
【００６７】
［ステップＳ３５］有効化制御部１４０は、すべての管理対象ノードでコピーが完了したか否かを判断する。具体的には、有効化制御部１４０は、アップデート管理テーブル１２１を参照し、コピー状況の欄のすべての値が「済」になっていれば、すべての管理対象ノードでコピーが完了したと判断する。また、有効化制御部１４０は、コピー状況の欄に「未」の値が残っている場合、コピー未完了の管理対象ノードがあると判断する。すべての管理対象ノードでコピーが完了した場合、処理がステップＳ３６に進められる。コピー未完了の管理対象ノードがある場合、処理がステップＳ３３に進められる。
【００６８】
［ステップＳ３６］有効化制御部１４０は、すべての管理対象ノードにおいて最新の制御プログラムのコピーが完了した場合、コピーした制御プログラムを有効化していないグループがあるか否かを判断する。具体的には、有効化制御部１４０は、アップデート管理テーブル１２１を参照し、有効化状況の欄のすべての値が「済」になっていれば、すべての管理対象ノードで有効化が完了していると判断する。また、有効化制御部１４０は、有効化状況の欄に「未」の値が残っている場合、有効化状況が「未」の管理対象ノードが属するグループに対して有効化を行っていないと判断する。有効化していないグループがある場合、処理がステップＳ３７に進められる。すべてのグループの有効化が完了していれば、処理が終了する。
【００６９】
［ステップＳ３７］有効化制御部１４０は、有効化順に従って、有効化していないグループのうち最も優先順位の高いグループを選択する。具体的には、有効化制御部１４０は、アップデート管理テーブル１２１を参照し、有効化状況が「未」のままの管理対象ノードを有しているグループのうち、有効化順の値が最も小さいグループを選択する。
【００７０】
［ステップＳ３８］有効化制御部１４０は、ステップＳ３７で選択したグループ内のすべての管理対象ノードに対して、有効化要求を送信する。
［ステップＳ３９］有効化制御部１４０は、有効化要求を送信した管理対象ノードから有効化完了通知を受け取ったか否かを判断する。有効化完了通知を受け取った場合、処理がステップＳ４０に進められる。有効化完了通知を受け取っていなければ、ステップＳ３９の処理を繰り返し、有効化完了通知が管理対象ノードから送られるのを待つ。
【００７１】
［ステップＳ４０］有効化制御部１４０は、有効化状況を更新する。具体的には、有効化制御部１４０は、アップデート管理テーブル１２１内の有効化完了通知の送信元の管理対象ノードに対応する有効化状況を、「済」に変更する。
【００７２】
［ステップＳ４１］有効化制御部１４０は、ステップＳ３７で選択したグループ内のすべての管理対象ノードで有効化が完了したか否かを判断する。具体的には、有効化制御部１４０は、アップデート管理テーブル１２１を参照し、ステップＳ３７で選択したグループに属するすべての管理対象ノードの有効化状況が「済」になっている場合、すべての管理対象ノードで有効化が完了したと判断する。少なくとも１つの管理対象ノードの有効化状況が「未」であれば、有効化未完了の管理対象ノードがあると判断する。すべての管理対象ノードの有効化が完了していれば、処理がステップＳ３６に進められる。有効化が未完了の管理対象ノードがあれば、処理がステップＳ３９に進められる。
【００７３】
このようにして、グループごとに順番に制御プログラムのアップデートが可能となる。以下、図９、図１０を参照して、制御プログラムをアップデート例について説明する。
図９は、制御プログラムのアップデート状況を示す第１の図である。第１の状態（ＳＴ１］は、制御プログラムのアップデート前の状態を示している。アップデート前は、管理ノード１００には、版数が「Ｖｅｒ．１」の制御プログラム１１２が格納されている。
【００７４】
グループＩＤ「グループ＃１」の管理対象ノード２１０の運用領域であるプログラム記憶部２１１には、版数が「Ｖｅｒ．１」の制御プログラム２１１ａが格納されている。管理対象ノード２１０の予備領域であるプログラム記憶部２１２には版数が「Ｖｅｒ．１」の制御プログラム２１２ａが格納されている。グループＩＤ「グループ＃１」に属する他の管理対象ノード２２０，２３０の運用領域と予備領域とにも、管理対象ノード２１０と同じ版数の制御プログラムが格納されている。
【００７５】
グループＩＤ「グループ＃２」の管理対象ノード２４０の運用領域であるプログラム記憶部２４１には、版数が「Ｖｅｒ．１」の制御プログラム２４１ａが格納されている。管理対象ノード２４０の予備領域であるプログラム記憶部２４２には版数が「Ｖｅｒ．１」の制御プログラム２４２ａが格納されている。グループＩＤ「グループ＃２」に属する他の管理対象ノード２５０，２６０の運用領域と予備領域とにも、管理対象ノード２４０と同じ版数の制御プログラムが格納されている。
【００７６】
このような状態から、制御プログラムの版数を、「Ｖｅｒ．２」にアップデートするものとする。その場合、管理者が、管理ノード１００の制御プログラム１１２を更新する。
第２の状態（ＳＴ２）は、管理ノード１００の制御プログラム更新後の状態を示している。管理ノード１００では、複写元プログラム記憶部１１０内に版数「Ｖｅｒ．２」の制御プログラム１１１が格納されている。
【００７７】
管理ノード１００の制御プログラム１１１が更新されると、各管理対象ノード２１０，２２０，２３０，２４０，２５０，２６０が独自に、管理ノード１００内の制御プログラム１１１の版数と、自己の予備領域の制御プログラムの版数とを比較する。そして、各管理対象ノード２１０，２２０，２３０，２４０，２５０，２６０は、管理ノード１００の制御プログラム１１１の版数が高いことを認識する。そして、各管理対象ノード２１０，２２０，２３０，２４０，２５０，２６０は、最新の版数の制御プログラム１１１のコピーを取得し、自己の予備領域の制御プログラムを更新する。
【００７８】
第３の状態（ＳＴ３）は、各管理対象ノード２１０，２２０，２３０，２４０，２５０，２６０の予備領域の制御プログラム更新後の状態を示す図である。グループＩＤ「グループ＃１」の管理対象ノード２１０の予備領域であるプログラム記憶部２１２は、版数が「Ｖｅｒ．２」の制御プログラム２１２ｂに更新されている。グループＩＤ「グループ＃１」に属する他の管理対象ノード２２０，２３０の予備領域の制御プログラムも、管理対象ノード２１０と同じ版数に更新されている。
【００７９】
グループＩＤ「グループ＃２」の管理対象ノード２４０の予備領域であるプログラム記憶部２４２は、版数が「Ｖｅｒ．２」の制御プログラム２４２ｂに更新されている。グループＩＤ「グループ＃２」に属する他の管理対象ノード２５０，２６０の予備領域の制御プログラムも、管理対象ノード２４０と同じ版数に更新されている。
【００８０】
すべての管理対象ノード２１０，２２０，２３０，２４０，２５０，２６０の予備領域に最新の制御プログラムが格納されると、管理ノード１００からの制御に基づいて、各グループの優先順に従って、グループごとに最新の制御プログラムが有効化される。
【００８１】
図１０は、制御プログラムのアップデート状況を示す第２の図である。第４の状態（ＳＴ４）では、グループＩＤ「グループ＃１」の管理対象ノード２１０において、第３の状態（ＳＴ３）では予備領域であったプログラム記憶部２１２が運用領域に変更され、第３の状態（ＳＴ３）では運用領域であったプログラム記憶部２１１が予備領域に変更されている。予備領域となったプログラム記憶部２１１の制御プログラムは、最新の版数「Ｖｅｒ．２」の制御プログラム２１１ｂに更新されている。グループＩＤ「グループ＃１」のグループに属する他の管理対象ノード２２０，２３０においても、同様に最新の制御プログラムの有効化処理が行われる。
【００８２】
優先順位が高いグループＩＤ「グループ＃１」のすべての管理対象ノード２１０，２２０，２３０における有効化処理が完了すると、管理ノード１００からの指示に基づいて、別のグループの各管理対象ノード２４０，２５０，２６０においても有効化処理が行われる。
【００８３】
第５の状態（ＳＴ５）では、グループＩＤ「グループ＃２」の管理対象ノード２４０において、第４の状態（ＳＴ４）では予備領域であったプログラム記憶部２４２が運用領域に変更され、第４の状態（ＳＴ４）では運用領域であったプログラム記憶部２４１が予備領域に変更されている。予備領域となったプログラム記憶部２４１の制御プログラムは、最新の版数「Ｖｅｒ．２」の制御プログラム２４１ｂに更新されている。グループＩＤ「グループ＃２」のグループに属する他の管理対象ノード２５０，２６０においても、同様に最新の制御プログラムの有効化処理が行われる。
【００８４】
以上説明したように、本実施の形態では、クラスタシステムを構成する複数の管理対象ノードを複数のグループに分け、グループごとに順番に制御プログラムのアップデートを行うようにした。この際、先にアップデートを実行するグループのすべての管理対象ノードでアップデート処理が完了したことを確認した後、次のグループに属する管理対象ノードのアップデート処理を行う。これにより、同一サービスを提供するすべての管理対象ノードが同時にリブートされることを防止できる。その結果、サービスを停止させずに制御プログラムのアップデートが可能となる。
【００８５】
しかも、予め制御プログラムを管理対象ノードにコピーしておくことにより、管理ノードからのアップデートの指示（有効化要求）を受けた管理対象ノードでの処理時間を短縮できる。その結果、異なるグループ間で制御プログラムの版数が不一致となる期間を最小限に抑えることができる。
【００８６】
なお、一般のプログラムのアップデートでは、運用中のプログラムを停止し、そのプログラムを削除した後、新しいプログラムを有効化する。すると、運用中のプログラムの削除の時間だけ、プログラムアップデート処理に時間が余分にかかることとなる。本実施の形態では、予備領域の制御プログラムを有効化（図７のステップＳ２１）した後、以前運用していた制御プログラムの削除などの処理（ステップＳ２２）を行う。これにより、制御プログラムのアップデートのために制御プログラムの動作が停止する時間が短縮される。
【００８７】
また、上記の実施の形態では、各管理対象ノード２１０，２２０，２３０，２４０，２５０，２６０が、定期的に制御プログラムの更新の有無をチェックしているが、更新の有無を管理ノード１００から通知してもよい。例えば、管理ノード１００の有効化制御部１４０は、複写元プログラム更新部１３０から最新の制御プログラムを更新した旨の通知を受けると、各管理対象ノード２１０，２２０，２３０，２４０，２５０，２６０に対して、制御プログラムのコピー要求を送信する。管理対象ノード２１０の複写元プログラム取得部２１３は、コピー要求に応答して、管理ノード１００の複写元プログラム記憶部１１０内の制御プログラム１１１のコピーを、予備領域であるプログラム記憶部２１２に格納する。他の管理対象ノード２２０，２３０，２４０，２５０，２６０も同様に、コピー要求に応答して制御プログラムのコピーを取得する。
【００８８】
また、すべての管理対象ノード２１０，２２０，２３０，２４０，２５０，２６０において最新の制御プログラムのコピーが完了したことを管理ノード１００が確認せずに、管理ノード１００から有効化要求を送信することもできる。すなわち、図８の処理では、ステップＳ３３〜Ｓ３５の処理で、すべての管理対象ノード２１０，２２０，２３０，２４０，２５０，２６０で制御プログラムのコピーが完了したことを確認しているが、この確認処理を省略することができる。その場合、図８の処理は、ステップＳ３２が終了すると、ステップＳ３６に処理が移行する。一方、各管理対象ノード２１０，２２０，２３０，２４０，２５０，２６０では、有効化要求を受信した際に、最新の制御プログラムのコピーが完了しているか否かを確認する。そして、各管理対象ノード２１０，２２０，２３０，２４０，２５０，２６０は、コピーが未完了であれば、管理ノード１００から最新の制御プログラムを取得後、有効化処理を実行する。
【００８９】
図１１は、有効化時に制御プログラムを取得する有効化処理の手順を示すフローチャートである。以下、図１１に示す処理をステップ番号に沿って説明する。この処理は、管理ノード１００から送信された有効化要求を受信した管理対象ノード（以下の説明では管理対象ノード２１０）において実行される。なお、管理ノード１００から送信される有効化要求には、最新の制御プログラムの版数情報が含まれているものとする。
【００９０】
［ステップＳ５１］管理対象ノード２１０の有効化部２１４は、有効化要求で指定された版数の制御プログラムが、予備領域であるプログラム記憶部２１２に格納されているか否かを判断する。格納されていれば、処理がステップＳ５５に進められる。格納されていなければ、処理がステップＳ５２に進められる。
【００９１】
［ステップＳ５２］有効化部２１４は、複写元プログラム取得部２１３に対して、最新の制御プログラムの取得を依頼する。複写元プログラム取得部２１３は、管理ノード１００内の制御プログラム１１１の版数を調べる。
【００９２】
［ステップＳ５３］複写元プログラム取得部２１３は、管理ノード１００において制御プログラムが更新されているか否かを判断する。具体的には、複写元プログラム取得部２１３は、管理ノード１００の複写元プログラム記憶部１１０内の制御プログラムの版数が、有効化要求で指定された版数と一致するか否かにより、更新の有無を判断する。制御プログラムが更新されている場合、処理がステップＳ５４に進められる。更新されていない場合、処理が終了する。
【００９３】
［ステップＳ５４］複写元プログラム取得部２１３は、予備領域（予備用のプログラム記憶部２１２）の制御プログラムを更新する。具体的には、複写元プログラム取得部２１３は、管理ノード１００の複写元プログラム記憶部１１０に格納された制御プログラム１１１のコピーを取得し、コピーされた制御プログラムをプログラム記憶部２１２に格納する。その際、複写元プログラム取得部２１３は、プログラム記憶部２１２に格納されていた古い版数の制御プログラム２１２ａを削除する。
【００９４】
［ステップＳ５５］有効化部２１４は、予備用のプログラム記憶部２１２内の制御プログラムの有効化処理を行う。具体的には、有効化部２１４は、まず運用中のプログラム記憶部２１１内の制御プログラム２１１の動作を停止させる。次に有効化部２１４は、予備のプログラム記憶部２１２に格納されている制御プログラム２１２ａを起動する。この際、ＯＳのリブートが必要であればＯＳのリブート後に、制御プログラム２１２ａが起動される。これにより、予備領域として使用していたプログラム記憶部２１２は、運用領域となる。
【００９５】
［ステップＳ５６］有効化部２１４は、新たに予備領域として使用するプログラム記憶領域を作成し、新たなプログラム記憶領域に運用中の制御プログラムをコピーする。
［ステップＳ５７］有効化部２１４は、有効化完了通知を管理ノード１００に送信する。
【００９６】
このようにして、有効化要求に応じて、最新の制御プログラムを取得し、取得した制御プログラムを有効化することができる。
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、管理ノード１００や各管理対象ノード２１０，２２０，２３０，２４０，２５０，２６０が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ＨＤＤ、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disc）などがある。
【００９７】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【００９８】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【００９９】
なお、本発明は、上述の実施の形態にのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変更を加えることができる。
以上説明した実施の形態の主な技術的特徴は、以下の付記の通りである。
【０１００】
（付記１）  クラスタシステムを構成する複数の管理対象ノードに実装されているプログラムのアップデートの時期をコンピュータに管理させるアップデート管理プログラムであって、
コンピュータを、
前記プログラムのアップデート指示に応答して、前記複数の管理対象ノードが複数のグループに分かれて登録されており、各グループに対してアップデート順が定義されたアップデート管理テーブルを記憶するアップデート管理情報記憶手段を参照し、最もアップデート順が早いグループを最初に選択し、その後、直前に選択したグループに属するすべての管理対象ノードのアップデート処理が完了するごとに、アップデート順に従って各グループを順番に選択するグループ選択手段、
前記アップデート管理テーブルを参照し、前記グループ選択手段で選択したグループに属する管理対象ノードに対して、プログラムのアップデート要求を送信するアップデート指示手段、
前記アップデート要求を送信した各管理対象ノードからアップデート完了通知を受け付け、前記アップデート完了通知を送信した管理対象ノードのアップデート処理が完了したことを前記グループ選択手段に通知する完了通知取得手段、
として機能させるアップデート管理プログラム。
【０１０１】
（付記２）  前記アップデート管理テーブルには、アップデートが未完了であることが初期状態として設定されたアップデート状況情報が、各管理対象ノードに対応付けて設定されており、
前記グループ選択手段は、前記アップデート管理テーブルを参照し、直前に選択したグループに属するすべての管理対象ノードのアップデート状態がアップデート済になった場合、直前に選択したグループに属するすべての管理対象ノードのアップデート処理が完了したと判断し、
前記完了通知取得手段は、前記アップデート管理テーブルにおける前記アップデート完了通知を送信した管理対象ノードに対応するアップデート状況情報を、アップデート済に変更することで、前記アップデート完了通知を送信した管理対象ノードのアップデート処理が完了したことを前記グループ選択手段に通知することを特徴とする付記１記載のアップデート管理プログラム。
【０１０２】
（付記３）  前記グループ選択手段は、前記複数の管理対象ノードのすべてが最新のプログラムを取得したことを確認した後、グループの選択処理を開始することを特徴とする付記１記載のアップデート管理プログラム。
【０１０３】
（付記４）  前記アップデート管理テーブルには、最新のプログラムが未取得であることが初期状態として設定されたプログラム取得状態情報が、各管理対象ノードに対応付けて設定されており、
前記グループ選択手段は、前記アップデート管理テーブルを参照し、すべての管理対象ノードのプログラム取得状態情報が取得済になった場合に、前記複数の管理対象ノードのすべてが最新のプログラムを取得したと判断し、
前記コンピュータを、さらに、
管理対象ノードから最新のプログラムを取得したことを示すプログラム取得通知を受け付け、前記アップデート管理テーブルにおける前記プログラム取得通知を送信した管理対象ノードに対応するプログラム取得状態情報を、取得済に変更するプログラム取得状態管理手段、
として機能させることを特徴とする付記３記載のアップデート管理プログラム。
【０１０４】
（付記５）  前記コンピュータをさらに、
操作入力に応答して、前記管理対象ノードに配布される前記プログラムを記憶するプログラム記憶手段に対して最新のプログラムを格納し、前記グループ選択手段に対して前記プログラムのアップデート指示を出力するプログラム更新手段として機能させることを特徴とする付記１記載のアップデート管理プログラム。
【０１０５】
（付記６）  前記アップデート管理テーブルでは、同一のサービスを提供する管理対象ノードが各グループに少なくとも１台ずつ含まれるようにグループ分けがされていることを特徴とする付記１記載のアップデート管理プログラム。
【０１０６】
（付記７）  クラスタシステムを構成する複数の管理対象ノードに実装されているプログラムのアップデートの時期を管理するための管理ノードにおいて、
前記プログラムのアップデート指示に応答して、前記複数の管理対象ノードが複数のグループに分かれて登録されており、各グループに対してアップデート順が定義されたアップデート管理テーブルを記憶するアップデート管理情報記憶手段を参照し、最もアップデート順が早いグループを最初に選択し、その後、直前に選択したグループに属するすべての管理対象ノードのアップデート処理が完了するごとに、アップデート順に従って各グループを順番に選択するグループ選択手段と、
前記アップデート管理テーブルを参照し、前記グループ選択手段で選択したグループに属する管理対象ノードに対して、プログラムのアップデート要求を送信するアップデート指示手段と、
前記アップデート要求を送信した各管理対象ノードからアップデート完了通知を受け付け、前記アップデート完了通知を送信した管理対象ノードのアップデート処理が完了したことを前記グループ選択手段に通知する完了通知取得手段と、
を有する管理ノード。
【０１０７】
（付記８）  クラスタシステムを構成する複数の管理対象ノードに実装されているプログラムのアップデートの時期をコンピュータで管理するためのアップデート管理方法であって、
前記コンピュータが、
前記プログラムのアップデート指示に応答して、前記複数の管理対象ノードが複数のグループに分かれて登録されており、各グループに対してアップデート順が定義されたアップデート管理テーブルを記憶するアップデート管理情報記憶手段を参照し、最もアップデート順が早いグループを最初に選択し、その後、直前に選択したグループに属するすべての管理対象ノードのアップデート処理が完了するごとに、アップデート順に従って各グループを順番に選択し、
前記アップデート管理テーブルを参照し、選択したグループに属する管理対象ノードに対して、プログラムのアップデート要求を送信し、
前記アップデート要求を送信した各管理対象ノードからアップデート完了通知を受け付け、前記アップデート完了通知を送信した管理対象ノードのアップデート処理が完了したことを前記アップデート管理情報記憶手段に設定する、
アップデート管理方法。
【０１０８】
（付記９）  クラスタシステムであって、
管理ノードからアップデート要求を受信すると、アップデート対象のプログラムを、プログラム記憶手段に記憶されている最新のプログラムを用いてアップデートし、アップデートが完了したことを示すアップデート完了通知を前記管理ノードに送信するアップデート手段を具備する複数の管理対象ノードと、
前記プログラムのアップデート指示に応答して、前記複数の管理対象ノードが複数のグループに分かれて登録されており、各グループに対してアップデート順が定義されたアップデート管理テーブルを記憶するアップデート管理情報記憶手段を参照し、最もアップデート順が早いグループを最初に選択し、その後、直前に選択したグループに属するすべての管理対象ノードのアップデート処理が完了するごとに、アップデート順に従って各グループを順番に選択するグループ選択手段と、前記アップデート管理テーブルを参照し、前記グループ選択手段で選択したグループに属する管理対象ノードに対して、プログラムのアップデート要求を送信するアップデート指示手段と、前記アップデート要求を送信した各管理対象ノードからアップデート完了通知を受け付け、前記アップデート完了通知を送信した管理対象ノードのアップデート処理が完了したことを前記グループ選択手段に通知する完了通知取得手段とを具備する前記管理ノードと、
を有するクラスタシステム。
【０１０９】
（付記１０）  前記管理対象ノードは、前記管理ノード内に設けられた複写元プログラム手段に格納された複写元プログラムの更新の有無を定期的に確認し、更新されていた場合、前記複写元プログラムのコピーを前記プログラム記憶手段に格納するプログラム取得手段をさらに有し、
前記管理ノードは、操作入力に応答して、前記管理対象ノードに配布される前記複写元プログラムを記憶する複写元プログラム記憶手段に対して最新の複写元プログラムを格納し、前記グループ選択手段に対して前記複写元プログラムからコピーされた前記プログラムのアップデート指示を出力するプログラム更新手段をさらに有することを特徴とする付記９記載のクラスタシステム。
【図面の簡単な説明】
【０１１０】
【図１】実施の形態の概要を示す図である。
【図２】本実施の形態のクラスタシステム構成例を示す図である。
【図３】本実施の形態に用いる管理ノードのハードウェア構成例を示す図である。
【図４】管理ノードと管理対象ノードとの機能を示すブロック図である。
【図５】アップデート管理情報記憶部のデータ構造例を示す図である。
【図６】各管理対象ノードにおける制御プログラムコピー処理手順を示すフローチャートである。
【図７】各管理対象ノードにおける有効化処理の手順を示すフローチャートである。
【図８】管理ノードにおける制御プログラムのアップデート制御処理の手順を示すフローチャートである。
【図９】制御プログラムのアップデート状況を示す第１の図である。
【図１０】制御プログラムのアップデート状況を示す第２の図である。
【図１１】有効化時に制御プログラムを取得する有効化処理の手順を示すフローチャートである。
【符号の説明】
【０１１１】
１  管理ノード
１ａ  アップデート管理情報記憶手段
１ａａ  アップデート管理テーブル
１ｂ  グループ選択手段
１ｃ  アップデート指示手段
１ｄ  完了通知取得手段
２〜７  管理対象ノード
【図１】
0004467623.tif 000002
【図２】
0004467623.tif 000003
【図３】
0004467623.tif 000004
【図４】
0004467623.tif 000005
【図５】
0004467623.tif 000006
【図６】
0004467623.tif 000007
【図７】
0004467623.tif 000008
【図８】
0004467623.tif 000009
【図９】
0004467623.tif 000010
【図１０】
0004467623.tif 000011
【図１１】
0004467623.tif 000012