Différences entre les versions de « Vm kvm cluster verification bis »

De BlaxWiki
Aller à la navigationAller à la recherche
 
(Aucune différence)

Version actuelle datée du 23 septembre 2013 à 10:36

Ceci est un autre script permettant de vérifier la présence d'une vm sur le bon noeud du cluster et de vérifier si celle ci tourne bien. Il faudrait modifier le script pour remonter un minimum d'info dans la supervision et non juste un ok.

A savoir le test sur hv1b remonte dans la sup de hv2 et inverserment : Quel est l'intéret ??

Cluster.conf[modifier]

<?xml version="1.0"?>
<cluster config_version="17" name="randstad001">
        <clusternodes>
                <clusternode name="hv1b_node.randstad.fr" nodeid="1" votes="1">
                        <fence>
                                <method name="1">
                                        <device name="fence_fake" nodename="hv1b_node.randstad.fr"/>
                                </method>
                        </fence>
                </clusternode>
                <clusternode name="hv2_node.randstad.fr" nodeid="2" votes="1">
                        <fence>
                                <method name="1">
                                        <device name="fence_fake" nodename="hv2_node.randstad.fr"/>
                                </method>
                        </fence>
                </clusternode>
        </clusternodes>
        <cman expected_votes="1" two_node="1"/>
        <fencedevices>
                <fencedevice agent="fence_fake" name="fence_fake"/>
        </fencedevices>
        <rm>
                <failoverdomains>
                        <failoverdomain name="kvm_node01" nofailback="0" ordered="1" restricted="0">
                                <failoverdomainnode name="hv1b_node.randstad.fr" priority="1"/>
                                <failoverdomainnode name="hv2_node.randstad.fr" priority="2"/>
                        </failoverdomain>
                        <failoverdomain name="kvm_node02" nofailback="0" ordered="1" restricted="0">
                                <failoverdomainnode name="hv2_node.randstad.fr" priority="1"/>
                                <failoverdomainnode name="hv1b_node.randstad.fr" priority="2"/>
                        </failoverdomain>
                </failoverdomains>
                <resources/>
              <vm autostart="1" domain="kvm_node01" exclusive="0" hypervisor="qemu" migrate="live" name="www5" path="/etc/libvirt/qemu/" recovery="relocate" use_virsh="1"/>
              <vm autostart="1" domain="kvm_node01" exclusive="0" hypervisor="qemu" migrate="live" name="www6" path="/etc/libvirt/qemu/" recovery="relocate" use_virsh="1"/>
              <vm autostart="1" domain="kvm_node01" exclusive="0" hypervisor="qemu" migrate="live" name="www1.recette" path="/etc/libvirt/qemu/" recovery="relocate" use_virsh="1"/>
              <vm autostart="1" domain="kvm_node01" exclusive="0" hypervisor="qemu" migrate="live" name="sql1.recette" path="/etc/libvirt/qemu/" recovery="relocate" use_virsh="1"/>
              <vm autostart="1" domain="kvm_node01" exclusive="0" hypervisor="qemu" migrate="live" name="dotnet1.recette" path="/etc/libvirt/qemu/" recovery="relocate" use_virsh="1"/>
              <vm autostart="1" domain="kvm_node02" exclusive="0" hypervisor="qemu" migrate="live" name="www7" path="/etc/libvirt/qemu/" recovery="relocate" use_virsh="1"/>
              <vm autostart="1" domain="kvm_node02" exclusive="0" hypervisor="qemu" migrate="live" name="www8" path="/etc/libvirt/qemu/" recovery="relocate" use_virsh="1"/>
              <vm autostart="1" domain="kvm_node02" exclusive="0" hypervisor="qemu" migrate="live" name="www1.preprod" path="/etc/libvirt/qemu/" recovery="relocate" use_virsh="1"/>
              <vm autostart="1" domain="kvm_node02" exclusive="0" hypervisor="qemu" migrate="live" name="sql1.preprod" path="/etc/libvirt/qemu/" recovery="relocate" use_virsh="1"/>
              <vm autostart="1" domain="kvm_node02" exclusive="0" hypervisor="qemu" migrate="live" name="dotnet1.preprod" path="/etc/libvirt/qemu/" recovery="relocate" use_virsh="1"/>
        </rm>
</cluster>

test_vm_presence.sh sur hv1b.randstad.fr (kvm_node01)[modifier]

#!/bin/bash
## VARIABLES
PATH=$PATH:/bin:/usr/bin:/sbin:/usr/sbin
VC=/opt/agarik/Vision/bin/bb_send_raw
VCDISPLAY=supervision.agarik.com
VCTARGET=$(uname -n | sed 's/\./,/g')
VCSERVICE=appli
LOG=/var/log/chkvmlocation.log
LOG2=/var/log/chkvmalien.log
XML_CONFDIR=/etc/libvirt/qemu/
VCTARGET2="hv2,randstad,fr"
VCSERVICE2=appli2
##INIT
#
# Ici on liste en dur les vm qui doivent tourner sur l autre noeud (ici "kvm_node01") du cluster, mais il vaudrait mieux avec une variable pour cela qui parse le cluster.conf
pour en extraire le nom
ArrayVM_DaBlieben=( dotnet1.recette lb1 sql1.recette www1.recette www5 www6 )

# Affiche par ordre la liste des vm en état de running
Array_VmRun=( `virsh list | awk 'NR>2 && $3 ~ /running/ {print $2}'|sort` )

# Affiche la liste des vm qui doivent tourner sur l'hote kvm_node02 (kvm_node02 étant l hote ou est éxécuté ce script)
Array_VmOtherNode=( `grep -i 'domain="kvm_node02"' /etc/cluster/cluster.conf|awk -F"name=\"" '{print $2}'|awk -F"\"" '{print $1}'|sort` )

##MAIN
# Fait une boucle incrémentale en partant de 0 jusque 6 (6 = ${#ArrayVM_DaBlieben[@]}) pour chercher les vm tournant sur l hote ou est éxécuté le script
for (( i=0; i<${#ArrayVM_DaBlieben[@]}; i++ ))
do
        vm_curr=${ArrayVM_DaBlieben[@]:$i:1}
        match=$(echo "${Array_VmRun[@]:0}"|grep -o $vm_curr)
        if [ -z $match ]
        then
                echo "VM : $vm_curr Absente ou Stoppée"
        fi
done
#

# Fait une boucle incrémentale en partant de 0 jusque 6 (6 = ${#ArrayVM_DaBlieben[@]}) pour chercher les vm tournant sur l'autre hote 
for (( i=0; i<${#Array_VmOtherNode[@]}; i++ ))
do
        vm_curr=${Array_VmRun[@]:$i:1}
        match=$(echo "${Array_VmOtherNode[@]:0}"|grep -o $vm_curr)
        if [ ! -z $match ]
        then
                echo "$vm_curr Est sur l AUTRE NOEUD"
        fi
done

## Check if we have some errors
grep Absente $LOG > /dev/null 2>&1
if [ $? -eq 0 ]; then
        VCCOLOR=red
else
        VCCOLOR=green
fi

#
grep AUTRE $LOG2 > /dev/null 2>&1
if [ $? -eq 0 ]; then
        VCCOLOR=red
else
        VCCOLOR=green
fi

test_vm_presence.sh sur hv2.randstad.fr (kvm_node02)[modifier]

#!/bin/bash
## VARIABLES
PATH=$PATH:/bin:/usr/bin:/sbin:/usr/sbin
VC=/opt/agarik/Vision/bin/bb_send_raw
VCDISPLAY=supervision.agarik.com
VCTARGET=$(uname -n | sed 's/\./,/g')
VCSERVICE=appli
LOG=/var/log/chkvmlocation.log
LOG2=/var/log/chkvmalien.log
XML_CONFDIR=/etc/libvirt/qemu/
VCTARGET2="hv1b,randstad,fr"
VCSERVICE2=appli2
##INIT
echo "" > $LOG
echo "" > $LOG2
#
ArrayVM_DaBlieben=( dotnet1.preprod lb2 sql1.preprod www1.preprod www7 www8 )
Array_VmRun=( `virsh list | awk 'NR>2 && $3 ~ /running/ {print $2}'|sort` )
Array_VmOtherNode=( `grep -i 'domain="kvm_node01"' /etc/cluster/cluster.conf|awk -F"name=\"" '{print $2}'|awk -F"\"" '{print $1}'|sort` )
##MAIN
for (( i=0; i<${#ArrayVM_DaBlieben[@]}; i++ ))
do
        vm_curr=${ArrayVM_DaBlieben[@]:$i:1}
        match=$(echo "${Array_VmRun[@]:0}"|grep -o $vm_curr)
        if [ -z $match ]
        then
                echo "VM : $vm_curr Absente ou Stoppée" >> $LOG
        fi
done
#
for (( i=0; i<${#Array_VmOtherNode[@]}; i++ ))
do
        vm_curr=${Array_VmRun[@]:$i:1}
        match=$(echo "${Array_VmOtherNode[@]:0}"|grep -o $vm_curr)
        if [ ! -z $match ]
        then
                echo "$vm_curr Est sur l AUTRE NOEUD" >> $LOG2
        fi
done
## Check if we have some errors
grep Absente $LOG > /dev/null 2>&1
if [ $? -eq 0 ]; then
        VCCOLOR=red
else
        VCCOLOR=green
fi

VCDATA="status+15 $VCTARGET.$VCSERVICE $VCCOLOR `/bin/date` $VCSERVICE
`cat $LOG`"
$VC $VCDISPLAY "$VCDATA"
#
grep AUTRE $LOG2 > /dev/null 2>&1
if [ $? -eq 0 ]; then
        VCCOLOR=red
else
        VCCOLOR=green
fi
VCDATA="status+15 $VCTARGET2.$VCSERVICE2 $VCCOLOR `/bin/date` $VCSERVICE2
`cat $LOG2`"
$VC $VCDISPLAY "$VCDATA"