ページの先頭行へ戻る
PRIMECLUSTER  Cluster Foundation 導入運用手引書 4.5
FUJITSU Software

3.2 起動時の同期

リソースデータベースのコピーはクラスタ内の各ノードにローカルに保存されます。クラスタの稼動中はすべてのローカルコピーは同期しています。ただし、保守のためにノードを非稼動にしてからクラスタに再参入させた場合、リソースデータベースのコピーは最新ではなくなっている可能性があります。通常はこれで問題は生じません。ノードが稼動中のクラスタに参入すると、そのクラスタからリソースデータベースのコピーが自動的にダウンロードされるからです。古いデータは上書きされます。

問題が起こる場合が1つ考えられます。古いデータを保持するノードがクラスタに再参入する前にクラスタ全体が非稼動になったとします。その後すべてのノードを再度稼動状態にします。古いデータを保持したノードが最初に稼動してから他のノードが稼動すると、古いリソースデータベースがマスターコピーとなり、クラスタに参入したすべてのノードでこの古いデータが使用されることになります。

この状態を回避するため、リソースデータベースに起動時の同期処理を実装します。クラスタ内のすべてのノードでリソースデータベースが非稼動な状態から、いずれかのノードでリソースデータベースが起動すると、同期フェーズに入ります。このフェーズでは、稼動したノードが保持するリソースデータベースのコピーを他のノードがダウンロードするまでStartingWaitTimeで指定された秒数だけ待機します。この間にノード間のネゴシエーションによって最新のリソースデータベースを保持するノードが特定されます。すべてのノードの処理が完了したとき、またはStartingWaitTime秒が経過したときに同期フェーズは終了します。同期が終了すると、ネゴシエーションによって検出された最新のリソースデータベースのコピーがクラスタ全体のマスターコピーになります。

StartingWaitTimeのデフォルト値は60秒です。

この同期方式は、クラスタ内のすべてのノードが非稼動の状態から一斉に再起動した場合に対処することを目的にしています。たとえば、企業によっては、通常の営業時間帯に高可用性を求める一方で、夜間はノードの電源をオフにして電気代を節約し、翌日の始業後すぐにまた電源をオンにします。起動時間はノードによって多少異なるため、StartingWaitTimeで最大同期時間を指定することによって起動中のすべてのノードが最新のリソースデータベースのコピーを保持することを保証します。

すべてのノードが同時に起動した場合のもう1つの重要な方式として、ノードが設置場所で電源を一時的にオフにしてから再投入するケースがあります。

ただし、この方式はクラスタ内のすべてのノードの起動時間がStartingWaitTime秒未満であることを前提にしています。また、StartingWaitTimeの値を各自のクラスタに応じて適切な値に変更する必要があります。

以下のようにしてStartingWaitTimeの値を変更します。

  1. クラスタ内のすべてのノードを同時に起動します。 新規ノードをクラスタに追加する場合、既存ノードの再起動は必要ありません。

  2. 各ノードが起動したら、/var/log/messagesのメッセージ番号2200を確認します。これはリソースデータベースが最初に起動したときに出力されるメッセージです。 次のようにコマンドを入力します。

    # grep 2200 /var/log/messages
    Feb 23 19:00:41 fuji2 dcmmond[407]: [ID 888197 daemon.notice] 
    FJSVcluster: INFO: DCM: 2200: Cluster configuration management facility initialization started.

    各ノードのタイムスタンプを比較し、起動時間が最も短いノードと最も長いノードとの時間差を計算します。これにより最速のノードが最低速のノードを待機する必要がある時間がわかります。

  3. StartingWaitTimeの現在の値を確認するには、いずれかのノードでclsetparamコマンドを実行します。 次のようにコマンドを入力します。

    # /etc/opt/FJSVcluster/bin/clsetparam -p StartingWaitTime
    60

    上記の出力結果からStartingWaitTimeが60秒であることがわかります。

  4. 手順2で起動時間に差が出た場合、または起動時間の差とStartingWaitTimeの値が近い場合、StartingWaitTimeの値を増やします。それには、クラスタのいずれかのノードでclsetparamコマンドを実行します。 次のようにコマンドを入力します。

    # /etc/opt/FJSVcluster/bin/clsetparam -p StartingWaitTime 300

    StartingWaitTimeの値は5分 (300秒) に設定されています。