2017年4月23日日曜日

Job ArrangerからESXiの仮想ホスト自動起動

Zabbixから死活監視をして仮想ホストが死んでいる場合、仮想ホストを起動しなければならないです。起動方法はvSphereにログインしてホストを起動するか?ESXiにssh接続して起動するか?など人の手を借りて解決します。
どうすればrun boot見たいに自動でホストを起動するかを考えたところ登場したものがJobArrangerでありましたので、その起動方法を紹介して見ます。
JobArrangerはCで作られているのでLinux環境ではよいと思います。

1.ESXiにJob Arranger Agentをインストール

ESXiにはrpmコマンドがないのでrpmインストールができませんので他のLinuxサーバーからjobarranger-agentd-3.2.0-1.el6.x86_64.rpmをDownloadして
rpm2cpio jobarranger-agentd-3.2.0-1.el6.x86_64.rpm | cpio -idv
コマンドで解凍します。
解凍したらフォルダetc, usr, varを一つに纏めてzipファイルを作ります。
ESXiサーバの/vmfs/volumes/datastore1/ 下にjobフォルダを作成します。
作成したjobフォルダにzipファイルを入れ解凍します。

参考1:ESXiサーバは再起動しても/vmfs/volumes/datastore*の下は変わりませんので自由に使います。
参考2:jobフォルダはご自由に変更してもかまいません。

2.jobarg_agentd.confファイルの修正

解凍したzipファイルからjobarg_agentd.confを修正します。
僕の場合は
/vmfs/volumes/datastore1/job/etc/jobarrangerにありますのでこれを修正します。
vi jobarg_agentd.conf

Hostname=esxi6
JaExtjobPath=/vmfs/volumes/datastore1/job/etc/jobarranger/extendedjob
TmpDir=/vmfs/volumes/datastore1/job/var/lib/jobarranger/tmp
JaLogFile=/vmfs/volumes/datastore1/job/var/log/jobarranger/jobarg_agentd.log
JaPidFile=/vmfs/volumes/datastore1/job/var/run/jobarranger/jobarg_agentd.pid
JaDatabaseFile=/vmfs/volumes/datastore1/job/var/lib/jobarranger/jobarg_agentd.db
JaExtjobPath=/vmfs/volumes/datastore1/job/etc/jobarranger/extendedjob

の部分を環境に合わせて修正します。
僕と同じパスならばそのまま使ってください。
HostnameはZabbixへ登録する名を入れてください。

3.jobarg_start.sh作成

cd /vmfs/volumes/datastore1/job
ここから作業します。
vi jobarg_start.sh
##JOB ARRANGER START SHELL
JOB_EXE=/vmfs/volumes/datastore1/job/usr/sbin/jobarg_agentd
JOB_CNF=/vmfs/volumes/datastore1/job/etc/jobarranger/jobarg_agentd.conf

cd `dirname $0`
./jobarg_stop.sh

${JOB_EXE} -c ${JOB_CNF}
exit $?

僕の場合は簡単に書きました。
重複チェックよりは必ずreboot感じで作成しました。


4.jobarg_stop.sh作成

vi jobarg_stop.sh
cd `dirname $0`

JOB_PROCESSES=`ps -Tcjstv | grep jobarg_agentd.conf | grep -v grep | awk '{ print $1 }'`

for i in  $JOB_PROCESSES
do
  echo $i
  kill -9 $i
done
exit $?

僕の場合は簡単に書きました。
皆さんは環境に合わせて書いてください。

5.実行権限

chmod 700 jobarg_start.sh jobarg_stop.sh

6. job arranger 実行

./jobarg_start.sh
で実行します。

7.Process確認

https://naiggy.blogspot.jp/2017/04/esxi.html
で紹介したように確認お願いいたします。

[root@localhost:~] ps -Tcjstv | grep job
35227  35227  jobarg_agentd                  35227  User,Native    WAIT    UWAIT   0,1       0.26419   /vmfs/volumes/datastore1/job/usr/sbin/jobarg_agentd -c /vmfs/volumes/datastore1/job/etc/jobarranger/jobarg_agentd.conf
35282  35282  jobarg_agentd                  35282  User,Native    WAIT    USLP    0,1       2.359539  /vmfs/volumes/datastore1/job/usr/sbin/jobarg_agentd -c /vmfs/volumes/datastore1/job/etc/jobarranger/jobarg_agentd.conf
35283  35283  jobarg_agentd                  35283  User,Native    WAIT    KTCP    0,1       0.691     /vmfs/volumes/datastore1/job/usr/sbin/jobarg_agentd -c /vmfs/volumes/datastore1/job/etc/jobarranger/jobarg_agentd.conf
35818  35818  grep                           35818  User,Native    WAIT    UPIPER  0,1       0.0       grep job
[root@localhost:~]

起動はできました。

8.esxi ファイアウォールを開けます

https://naiggy.blogspot.jp/2017/04/esxi_22.html
参照ください。

9.Zabbixへホスト登録

Zabbix GUIからESXiのホストを登録します。
僕の場合はホスト名はesxi6になります。
Zabbixへactionを登録します。
actionの起動scriptは
https://naiggy.blogspot.jp/2017/04/job-arrangerifjobargexec.html
をご参照ください。

10.JobNetへ登録します

ジョブの登録の実行欄に
test1のホストを実行するコマンドです。
RUN_HOST=`vim-cmd vmsvc/getallvms | grep test1 | awk '{ print $1 }'`
vim-cmd vmsvc/power.on ${RUN_HOST}





















このジョブが実行されると自動でtest1のホストがパワーオンになります。

結論

ZabbixのTemplate Virt VMware Guest: Power stateアイテムと組み合わせで自動でホストを起動することができます。
反対にホストを停止することもできますので
これを見てご自由に使用してください。

ESXiをrebootするとJob Arrangerが自動起動にならないので
vi /etc/rc.local.d/local.sh
/vmfs/volumes/datastore1/job/jobarg_start.sh
を追記するとESXiをrebootしても自動にjob arrangerが起動されます。


以上です。

0 件のコメント: