1. ホーム
  2. 研究日誌
  3. 【Hinemos】Hinemosエージェントの冗長化構成について

STUDY研究日誌

Hinemosをはじめ、
様々な技術のノウハウを発信しています。

【Hinemos】Hinemosエージェントの冗長化構成について

投稿日: / 更新日:

■はじめに

こんにちは。

本記事では、Hinemosエージェントの冗長化により個別ノードでは無くクラスターサービス単位での管理を実現し、フェイルオーバー発生時にもサービスを継続して管理できることを確認したいと思います。

1.前提条件

●実行環境

・マネージャサーバ(OS : Red Hat Enterprise Linux 9)
 ⇒「Hinemosマネージャ(ver7.2)」
 ⇒「Hinemos Webクライアント(ver7.2)」

・ノードA(OS : Red Hat Enterprise Linux 9)
 ⇒「Hinemosエージェント(ver7.2)」

・ノードB(OS : Red Hat Enterprise Linux 9)
 ⇒「Hinemosエージェント(ver7.2)」

●実施内容

・擬似的なクラスターサービスを構成し、Hinemosエージェントの冗長化を確認する

・疑似クラスターサービスは以下によって構成する
 ⇒揮発性のVIPの利用
 ⇒マスター/スタンバイそれぞれ1台ずつのアクティブ/スタンバイ構成

※本記事はクラスターサービスのフェイルオーバー時の確認を行うことが目的である為、
 ネットワーク障害対策、データの同期等の実装は対象外となっております。

2.事前準備(疑似クラスター環境)

●ノードAに配置するスクリプト

・以下のスクリプトにより、疑似クラスターサービスの起動を行う

●ノードBに配置するスクリプト

・以下のスクリプトにより、ノードAの停止を検知しフェイルオーバーを行う

※本スクリプトの制限事項とリスク
・上記スクリプトは、デモ用にping監視のみで構成された簡易的なものです。
そのため、上記スクリプト利用時にノード間でネットワーク障害が発生した場合、スタンバイ側がマスター側の状態を誤認し、両系で同時にVIPやHinemosエージェントが立ち上がってしまうリスク(スプリットブレイン状態)があります。

・本番環境で運用する場合は本スクリプトは使用せず、必ず Pacemaker 等のクラスターソフトを採用し、ネットワーク障害時にも確実に片系のみが起動する仕様となるよう注意してください。

3.Hinemosエージェントの設定

1.ノードA, BそれぞれにインストールしたHinemosエージェントのhinemos_agent.cfgの以下を変更する

共通のHOSTNAMEを指定することで、どちらのノードがアクティブであっても、Hinemosマネージャ側には「demo-test」という同一エージェントから通信しているように認識させることが可能になります。

2.クラスターサービス監視のため、Hinemosエージェントの自動起動は無効にする

※OS起動時などに両系のHinemosエージェントが同時に起動してしまうと、Hinemosマネージャ側で通信の送信元(実体)が区別できなくなり、「ジョブが意図しないノードで実行される」「監視データが重複・混在して正しいしきい値判定ができない」といった問題が発生するリスクがあります。

そのため、OSの起動と同時にHinemosエージェントが立ち上がらないよう、明示的に自動起動を無効化しておく必要があります。

4.Hinemosマネージャ側の設定

1.事前準備でノードAに配置したスクリプトを実行する

ノードAのスクリプト実行結果

2.ノードAにVIPが割り当てられたことを確認後、ノードBに配置したスクリプトを実行する

ノードBのスクリプト実行結果

3.「リポジトリ」パースペクティブから、VIPと共通ホスト名を指定してサービスをHinemosマネージャに登録する

リポジトリへのノード登録

4.フェイルオーバー確認用に、以下のコマンドジョブ(cmd01)を作成する

5.フェイルオーバーの確認

1.コマンドジョブ(cmd01)を実行
コマンドジョブ(cmd01)を実行し、ノードAの「/tmp」に以下の様なファイルが生成されていることを確認してください。
ジョブ履歴(マスター:ノードA) コマンド実行結果(マスター:ノードA)

2.フェイルオーバー発生まで待機
スクリプトによりノードAが再起動されるまで待機 or 直接再起動を行ってください。

ノードAの再起動後、ノードBにVIPが割り当てられていることを確認してください。

フェイルオーバーの確認

3.フェイルオーバーの確認
コマンドジョブ(cmd01)を実行し、ノードBの「/tmp」に以下の様なファイルが生成されていることを確認してください。

ジョブ履歴(マスター:ノードB) コマンド実行結果(マスター:ノードB)

■おわりに

本記事では、VIPの切り替えと「hinemos_agent.cfg」のホスト名共有化を行うことで、
個別ノード単位では無く「クラスターサービス」単位で管理する方法をご紹介いたしました。
これにより、運用者はどちらのノードが動いているかを意識する必要がなくなり、
フェイルオーバー発生時にもHinemosマネージャー側の設定を変えること無く、継続してサービスを管理することが可能となります。

なお、今回はフェイルオーバーの挙動確認をメインとしたためデータの同期等は対象外としましたが、本番環境へ導入する際は、クラスターソフト(Pacemaker等)による厳密な制御や、共有ディスク等を用いたデータ同期の設計を合わせてご検討ください。

Hinemosを用いた可用性の高い監視環境を設計する際の参考になれば幸いです。
最後までお読みいただきありがとうございました!

関連する記事

Hinemos導入はアトミテックにお任せください

見積もりを依頼する

最新情報発信中

Xやメルマガでも、Hinemosの保守、
開発、導入、構築やカスタマイズ等の
お役立ち情報を発信しています。
是非ご登録ください。