Tips Proxmox : Script Sederhana Untuk Check Fencing Agar Otomatis Failover

Posted by

Artikel Sebelumnya : tips-proxmox-configure-proxmox-high-availability-without-fencing-device

Pada artikel sebelumnya kita sudah dapat melakukan konfigurasi Proxmox High Availability tanpa device fencing. Fencing device ini digunakan untuk melakukan monitoring terhadap host-host server yang mana host server yang dimaksud disini adalah Proxmox. Apakah server Proxmox tersebut dalam keadaan hidup atau mati. Jika Proxmox dalam keadaan hidup, maka fencing device tidak akan melakukan action apa-apa, namun apabila Proxmox mati maka fencing device akan melakukan action dengan memindahkan VM yang sedang dikelola oleh Proxmox yang mati tersebut pada Proxmox yang sedang hidup.

Timbul pertanyaan, bagaimana apabila konfigurasi Proxmox High Availability tidak menggunakan device fencing seperti pada tulisan sebelumnya disini  dan ingin agar otomatis failover ketika salah satu server Proxmox mati?

Sebenarnya, pada tulisan sebelumnya sudah dijelaskan bagaimana semua VM yang ada pada Proxmox yang mati dapat diambil alih oleh Proxmox yang sedang hidup dengan cara menjalankan perintah berikut fence_ack_manual hostname-proxmox-lawan misalnya fence_ack_manual pve2 dimana pve2 adalah Proxmox yang mati. Agar semua VM yang telah dikonfigurasi dapat diambil diharuskan mengetik absolutely, baru semua VM diambil alih.

storage-migration

Dari pola pengambilan VM diatas adalah diharuskan menjalankan perintah fence_ack_manual dan dijawab dengan ketik absolutely. Bagaimana perintah-nya agar otomatis menjawab absolutely tanpa harus diketik terlebih dahulu?. Salah satu command line yang dapat digunakan adalah echo. Untuk melakukan pengecheckan server Proxmox dalam keadaan hidup atau tidak dapat menggunakan perintah ping. Logika script berikut akan melakukan pengechekan server dengan ping apakah hidup atau tidak, jika hidup maka tidak akan ada action apa-apa sedangkan jika server mati maka akan melakukan action berupa perintah fence_ack_manual dan menjawab absolutely.

Script ini saya pelajari dan ambil dari http://www.cyberciti.biz/ dengan menambahkan beberapa penyesuaian. Buatlah script tersebut pada masing-masing server Proxmox dan simpan pada suatu folder, misalnya pada folder /srv/
[code lang=’bash’]
cd /srv/
vi check-fencing.sh
[/code]
Isi dengan isian berikut :
[code lang=’bash’]
#!/bin/bash
HOSTS=192.168.1.201
COUNT=1
for myHost in $HOSTS
do
count=$(ping -c $COUNT $myHost | grep ‘received’ | awk -F’,’ ‘{ print $2 }’ | awk ‘{ print $1 }’)
if [ $count -eq 0 ]; then
# 100% failed
echo absolutely | /usr/sbin/fence_ack_manual pve1
# echo “Host : $myHost is down (ping failed) at $(date)”
fi
done

[/code]
Yang harus disesuaikan adalah pada bagian HOST diganti dengan IP Proxmox lawan untuk melakukan pengecheckan ping. Pada tulisan pve1 diganti dengan hostname Proxmox lawan.

Berikan hak akses agar dapat dieksekusi
[code lang=’bash’]
chmod +x /srv/check-fencing.sh
[/code]
Buat cronjob agar melakukan pengecheckan setiap satu menit sekali
[code lang=’bash’]
crontab -e
[/code]
masukkan cronjob seperti berikut :
[code lang=’bash’]
*     *     *     *     *     sh /srv/check-fencing.sh
[/code]
Simpan cronjob tersebut dengan perintah :wq!. Coba matikan secara paksa Proxmox yang sedang menjalankan VM yang telah dikonfigurasi HA. Tunggu sekitar 1 menit dan seharusnya VM tersebut akan langsung diambil alih dalam posisi restart.

Silakan dicoba dan semoga bermanfaat 😀

4 comments

  1. mas saya mau tanya tentang yang :
    Simpan cronjob tersebut dengan perintah :wq!
    Maksudnya disimpan bagaimana?perintahnya taruh dimana mas?
    bukannya setelah edit langsung Ctrl+X dan Y lalu ke save ya mas
    mohon bantuannya.
    terima kasih mas

      1. mas mau tanya nih, bagaimana kalo node proxmo lawan lebih dari satu, misalkan saya punya 4 node, berarti saya harus melakukan pengecekan ke 3 node proxmox, bagimana scriptnya mas ? nuhun

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.