2017年4月29日土曜日

Job Arranger에서 ESXi의 가상호스트 자동 실행

Zabbix에서 작동하고 있는지 감시하는 가상호스트가 만약에 정지해있다면, 가상호스트를 기동하지 않으면 안될 것입니다.  기동하는 방법으로는 vSphere에 로그인해서 파워온을 하거나? ESXi에 ssh접속해서 기동하지 않으면 안됩니다.
어떻게 하면 run boot같이 자동으로 호스트를 기동할수 있을까 생각해 보았습니다.
그래서, 알아낸것이 Job Arranger를 이용한 자동 실행이었습니다.
그방법을 여러분들께 소개해 보도록 하겠습니다.
Job Arrnager는 C로 만들어져서 Linux환경에 적합하다고 생각됩니다.

1.ESXi에 Job Arranger Agent를 인스톨

ESXi에는 rpm 명령어가 없어서 rpm으로 인스톨할수 없습니다. 그래서 RPM을 압축해제 하기위해 해제가 가능한 서버에서 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 서버는 reboot를 하면 모든것이 새로 작성됩니다만, /vmfs/volumes/datastore*밑은 새로 넣지 않기때문에 임의적인 install은 여기에 넣는 것이 좋습니다.
참고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

의 부분을 환경에 맞게 수정합니다.
저의 같은 PATH라면 이것을 붙이셔도 됩니다.
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 $?

저의 경우는 간단하게 적어 놓았습니다.
중복체크 대신 stop처리를 넣었습니다.

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_13.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 firewall을 열어놓습니다.ファイアウォールを開けます

https://naiggy.blogspot.jp/2017/04/esxi-firewall.html
참조해 주십시요.

9.Zabbixへホスト登録

Zabbix GUI에서 ESXi의 호스트를 등록합니다.
저의 경우는 호스트 명을 esxi6으로 하였습니다.
Zabbix의 action에 기동 script를 넣습니다.
https://naiggy.blogspot.jp/2017/04/job-arrangerifjobargexec_29.html
참조 바랍니다.

10.JobNet를 등록합니다.

JOB의 등록에 있는 실행란에
test1의 호스트를 실행하는 명령어 입니다.
RUN_HOST=`vim-cmd vmsvc/getallvms | grep test1 | awk '{ print $1 }'`
vim-cmd vmsvc/power.on ${RUN_HOST}






















이 JOB이 실행하면 자동으로 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 件のコメント: