サイト内の現在位置を表示しています。

【2024年版】サービス起動遅延時間設定機能の紹介

CLUSTERPRO オフィシャルブログ ~クラブロ~

はじめに

今回は、CLUSTERPRO Xの機能の中からCLUSTERPRO Xのサービス起動遅延時間を設定する機能と、設定する時間の計算方法についてご紹介します。

本記事はpopup以前の記事の改訂版(2024年版)です。以前の記事には、サービス起動遅延時間として検討すべき事項に不足があったため、新たに記事を作成しました。
そのため、CLUSTERPRO Xのバージョンに関わらず、以前の記事ではなく今回の記事を参照ください。

この記事の内容

1. 起動遅延が必要な理由

CLUSTERPRO Xのサービスを起動するまでの時間が適切に設定されていない場合、以下のような問題が発生する可能性があります。

  • 対向サーバーのOS再起動を認識しない
  • 両系活性が発生する
  • クラスター起動処理中に強制停止が実行される
  • 共有ディスクの起動が完了していない状態でリソース活性する

CLUSTERPRO X 4.3以前のバージョンでは、CLUSTERPRO Xのサービスが起動するまでの時間を調整するには、OSが起動するまでの時間を遅延させるか、Windowsの場合はarmdelayコマンドにより設定する必要がありました。
しかし、OSが起動するまでの時間を遅延させると、CLUSTERPRO Xでクラスター化しないサービスの起動も遅延する、というデメリットがあります。

CLUSTERPRO X 5.0以降のバージョンでは、各サーバーに電源を投入してからCLUSTERPRO Xのサービスが起動するまでの時間を遅延させる設定が追加されました。これにより、OSが起動するまでの時間を遅延させずに、CLUSTERPRO Xのサービス起動だけ遅延させることができるようになりました。

サービス起動遅延時間に設定するべき時間は、構築するクラスター構成によって変わってきます。項番1.1以降では、設定が必要な理由と、必要な時間を求めるための計算式について解説します。

なお、CLUSTERPRO X 5.0より前のバージョンをご利用の場合は、OS起動時間を調整する必要があります。
以降の説明のサービス起動遅延時間設定の部分をOS起動時間調整と読み替えて参照ください。
サービス起動遅延時間設定とOS起動時間調整の詳細については、インストール&設定ガイドにも記載があります。併せて参照ください。

【参考】
● CLUSTERPRO X 5.2 > Windows > インストール&設定ガイド
→第 2 章 システム構成を決定する
→2.6 ハードウェア構成後の設定
→2.6.3. CLUSTERPRO のサービス起動時間を調整する (必須)

● CLUSTERPRO X 5.2 > Linux > インストール&設定ガイド
→第 2 章 システム構成を決定する
→2.8 ハードウェア構成後の設定
→2.8.5. CLUSTERPRO のサービス起動時間を調整する (必須)

1.1 対向サーバーのOS再起動を認識しない

サーバーの再起動を契機としてフェールオーバーを発生させたい場合に、再起動したサーバーにおけるクラスターサービスの起動がハートビートタイムアウトとハートビートインターバルを加算した時間内に完了してしまうと、相手側からはハートビートが継続しているとみなされ、再起動を認識せず、フェールオーバーが発生しません。

この問題を回避するためには、CLUSTERPRO Xのサービスが起動するまでの時間を、ハートビートタイムアウトとハートビートインターバルを加算した時間より長くする必要があります。
そのため、以下の時間をサービス起動遅延時間に追加してください。

  • ハートビートタイムアウト時間 + ハートビートインターバル時間
  •   ※ハートビートタイムアウト時間の既定値 (Windows:30秒、Linux:90秒)
    ハートビートインターバル時間の既定値:3秒

1.2 両系活性が発生する

CLUSTERPRO Xは、待機系が現用系のハートビート途絶を検知すると、ネットワークパーティション解決(以下、NP解決と記載します)を実行します。NP解決につきましては、popupこちらの記事を参照ください。
NP解決は基本的に短時間で完了しますが、DISK方式によるNP解決については解決処理に数十秒の時間を要する場合があります。

クラスターサーバーの現用系で障害が発生して再起動が行われた場合、待機系でハートビートタイムアウトが検出されてDISK方式によるNP解決が実行されると、NP解決処理が完了する前に現用系が再起動して、両サーバーでフェールオーバーグループが起動する両系活性が発生する可能性があります。この問題を回避するためには、現用系でCLUSTERPRO Xがサービスを起動するまでの時間を、DISK NP解決リソースのNP解決が完了するまでの時間より長くする必要があります。
そのため、以下の時間をサービス起動遅延時間に追加してください。

  • DISK NP解決リソースの IO 待ち時間 + 10 秒
  •   ※DISK NP解決リソースの IO 待ち時間の既定値:80秒

なお、DISK NP解決リソースはWindows版のみ利用できる機能のため、Linux版では考慮する必要はありません。
DISK NP解決リソースについては以下のリファレンスガイドも参照ください。

【参考】
● CLUSTERPRO X 5.2 > Windows > リファレンスガイド
→第 6 章 ネットワークパーティション解決リソースの詳細
→6.2 DISK 方式によるネットワークパーティション解決を理解する

1.3 クラスター起動処理中に強制停止が実行される

CLUSTERPRO X 5.0以降では、両系活性を防ぐための強制停止リソースが標準で準備されています。
強制停止リソースの詳細についてはpopupこちらの記事を参照ください。

強制停止リソースを利用する場合、強制停止の条件を満たすと、両系活性を防ぐために待機系から現用系を強制的に停止させた後にフェールオーバーが行われます。強制停止処理はサーバーや仮想基盤、クラウド基盤の機能を利用して停止させるため、状況によっては現用系サーバーの停止まで時間を要する場合があります。
クラスターサーバーの現用系で障害が発生して再起動が行われた場合、待機系で強制停止処理が実行されると、現用系で起動途中のフェールオーバーグループを強制停止することにより、別の障害が発生してしまう可能性があります。

この問題を回避するためには、現用系でCLUSTERPRO Xがサービスを起動するまでの時間を、強制停止リソースが強制停止を完了するまでの時間より長くする必要があります。
そのため、以下の時間をサービス起動遅延時間に追加してください。

  • 強制停止リソースの強制停止タイムアウト時間 + 強制停止リソースの停止完了待ち時間
  •   ※カスタム強制停止リソースを利用する場合、強制停止リソースの停止完了待ち時間は0秒で計算します。
  •   ※強制停止タイムアウト時間・停止完了待ち時間の既定値は強制停止リソースの種類によって異なります。

強制停止リソースについては、以下のリファレンスガイドも参照ください。

【参考】
● CLUSTERPRO X 5.2 > Windows > リファレンスガイド
→第 7 章 強制停止リソースの詳細

● CLUSTERPRO X 5.2 > Linux > リファレンスガイド
→第 7 章 強制停止リソースの詳細

1.4 共有ディスクの起動が完了していない状態でリソース活性する

共有ディスクとサーバーの電源を入れてクラスターシステムを起動した際に、共有ディスクの起動がCLUSTERPRO Xのサービス起動処理に間に合わず、共有ディスクが認識されない状態でCLUSTERPRO Xが起動した場合、共有ディスクを利用するリソースの活性に失敗します。
そのため、以下の時間よりサービス起動遅延時間が長くなるように設定する必要があります。

  • 共有ディスクに電源を投入してから使用可能になるまでの時間

なお、共有ディスクがサーバーの起動前に使用可能となるような運用をしている場合や、共有ディスクを利用しない構成の場合については、本内容に関するサービス起動遅延時間の設定は不要です。

2. サービス起動遅延時間の計算と設定

本章では、第1章で解説したクラスター構成ごとの「サービス起動遅延時間に設定する時間」を、最終的にどのような計算式で算出するかを解説します。

まず、項番1.1から1.3で説明した値を以下のようにそれぞれ加算します。

計算式①
ハートビートタイムアウト時間 + ハートビートインターバル時間
 (+ DISK NP解決リソースの IO 待ち時間 + 10 秒)
 (+ 強制停止リソースの強制停止タイムアウト時間 + 強制停止リソースの停止完了待ち時間)

  •  ※DISK NP解決リソースを利用しない場合は2行目の加算は不要です。
  •  ※強制停止リソースを利用しない場合は3行目の加算は不要です。

次に、計算式①と項番1.4で説明した値(共有ディスクに電源を投入してから使用可能になるまでの時間)を比較し、より大きい値をサービス起動遅延時間として設定します。

計算式① > 項番1.4の値 の場合
  → 計算式①の時間を設定する
計算式① < 項番1.4の値 の場合
  → 項番1.4の値を設定する

上記で計算したサービス起動遅延時間の設定は、Cluster WebUIから行います。
Cluster WebUIを起動し、「設定モード」から、クラスターのプロパティで、タイムアウトタブを選択し、「サービス起動遅延時間」に遅延させたい秒数を0秒から9999秒の範囲で入力します。
以下の画面はWindows版の画面ですが、Linux版でも同様の箇所から設定が可能です。

Configuration

3. 動作確認

OSが起動してから、サービス起動遅延時間に設定した秒数経過後に、CLUSTERPRO Xのサービスが起動していることを確認します。今回の検証ではCLUSTERPRO X 5.0(内部Ver Windows:13.00、Linux:5.0.0-1)を利用し、サービス起動遅延時間を仮に"300秒"に設定しています。

OSを再起動した後、OSが起動した時間とCLUSTERPRO Xのサービスが起動した時間を確認します。
WindowsとLinuxで確認する手順が違うため、それぞれ記載します。

3.1 Windows

Windowsはイベントログの「システム」からサーバーの起動時間を確認します。

次に、イベントログの「アプリケーション」でクラスターサービスが開始したというメッセージとその発生日時を確認します。

以下のログを確認ください。
「クラスタサービスは正常に開始しました。」

今回はOSが起動した時間から、5分45秒(345秒)後にクラスターサービス起動が完了していることを確認できます。
  • ログに記録される時刻には若干の誤差が発生します。

3.2 Linux

Linuxは以下のコマンドを入力してサーバーの起動時間を確認します。

# last reboot

次に、以下のコマンドを入力して、CLUSTERPRO Xのサービスが起動した発生日時を確認します。

# cat /ver/log/messages | grep "Starting the cluster daemon"

今回はOSが起動した時間から、5分(300秒)以上経過した後にCLUSTERPRO Xのサービス起動が完了していることを確認できます。
  • コマンドで検索する文字は大文字小文字が区別されますのでご注意ください。
  • ログに記録される時刻には若干の誤差が発生します。

まとめ

今回は、CLUSTERPRO Xのサービス起動遅延時間を設定する機能と、設定する時間の計算方法についてご紹介しました。
本機能を利用することで、OSが起動するまでの時間を遅らせずに、Cluster WebUIから簡単にCLUSTERPRO Xのサービス起動遅延の設定ができますので、是非利用をご検討ください。

CLUSTERPRO Xをご検討の際は、CLUSTERPRO Xのpopup試用版を用いて検証した後、ご提案・構築ください。

お問い合わせ

本記事に関するお問い合わせは、popupお問い合わせ窓口までお問い合わせください。