[Hinemos6.1] クラスタ構成のHinemosエージェントサーバでジョブを実行する

こんにちは。

近頃、例えば、クラスタを構成するサーバAとサーバBがある環境で、
以下3つの動作を別々に行わせることはできないかという質問がよく届きます。

  • サーバAだけに対してジョブを実行する。
  • サーバBだけに対してジョブを実行する。
  • 仮想IPアドレスを持つサーバだけに対してジョブを実行する。

設定ファイルとリポジトリの登録内容を変更することで、簡単に実現できますので、
今回は、以下に設定手順をご案内いたします。

<設定>

・”/opt/hinemos_agent/conf/Agent.properties”のfacilityIdパラメータをコメントアウトする。

※ ホスト名とIPアドレスからファシリティIDを解決するようになります。

・”/opt/hinemos_agent/conf/hinemos_agent.cfg”のHOSTNAMEを任意の値に設定する。(ここでは、hostXに設定)

※ HOSTNAMEの設定により、HinemosエージェントがファシリティIDを解決する際に、
Hinemosマネージャへ送信する自身のホスト名を、実際のホスト名(hostnameコマンドの値)から
変更することができます。

・設定反映のため、Hinemosエージェントを再起動する。

・上記3つの作業をクラスタを構成するもう一つのサーバでも行う。

・Hinemosマネージャに以下3つのノードを登録する。(ノード名は”hinemos_agent.cfg”のHOSTNAMEに合わせる。)

  • nodeAのノード情報
    ノード名: hostX
    IPアドレス: サーバAの物理IPアドレス
  • nodeBのノード情報
    ノード名: hostX
    IPアドレス: サーバBの物理IPアドレス
  • nodeXのノード情報
    ノード名: hostX
    IPアドレス: 仮想IPアドレス

以上で、設定は完了です。

この設定により、以下の動作を行うことができます。

・nodeAを対象にジョブを実行 → サーバAでジョブが実行される
・nodeBを対象にジョブを実行 → サーバBでジョブが実行される
・nodeXを対象にジョブを実行 → 仮想IPアドレスを持つサーバでジョブが実行される

<動作確認>

それでは、実際に任意のサーバにジョブを実行できるか試してみたいと思います。

まず、サーバA(node-013-077)とサーバB(node-013-078)のIPアドレスを確認してみます。
(10.2.13.150は仮想IPアドレスです。)

そして、先ほど作成したnodeA、nodeB、nodeXのそれぞれに、
上記”hostname -I”コマンドを実行させ、ジョブ履歴から確認してみます。

nodeAへのジョブ実行結果では、10.2.13.77 10.2.13.150
nodeBへのジョブ実行結果では、10.2.13.78
nodeXへのジョブ実行結果では、10.2.13.77 10.2.13.150

想定通り、nodeAとnodeXはサーバAに、nodeBはサーバBに対してジョブを実行していました。

次は、仮想IPアドレスを付け替えたうえで、もう一度試してみたいと思います。

先ほど実行したジョブを、再実行してみます。

nodeAへのジョブ実行結果では、10.2.13.77
nodeBへのジョブ実行結果では、10.2.13.78 10.2.13.150
nodeXへのジョブ実行結果では、10.2.13.78 10.2.13.150

今度は、nodeAはサーバAに、nodeBとnodeXはサーバBに対してジョブを実行していることが確認できました!

以上のように、Hinemosエージェントの設定ファイルとリポジトリの登録内容を組み合わせることで、
VIPが付け変わるサーバに対しても、より自由にジョブの実行対象を選択できるようになります。

皆さんも試してみてください!

Leave a Reply

You must be logged in to post a comment.