HAproxy: executar script na alteração da verificação de integridade

3

Eu configurei uma configuração haproxy com um back-end com dois servidores parecidos com isso:

...
default
        option log-health-checks
...
mailers mta
        mailer smtp1 127.0.0.1:25
...
backend s_api
        balance roundrobin
        option httpchk GET /sites?site=q&limit=1

        http-check expect rstatus (2|3)[0-9][0-9]

        server s1_a 1.2.3.4:3600 check inter 5s fall 4 rise 1
        server s2_b 1.2.3.5:3600 check backup

        timeout queue 60s
        timeout server 60s
        timeout connect 60s

        email-alert mailers mta
        email-alert level notice
        email-alert from [email protected]
        email-alert to [email protected]

Agora sou notado por e-mail quando um servidor fica inativo e desce novamente. O que eu gostaria de arquivar é iniciar um script bash local quando um servidor estiver subindo e outro quando o servidor estiver inoperante.

Como isso pode ser feito?

    
por mr.simonski 15.11.2017 / 11:55

1 resposta

2

Eu provavelmente faria isso com um script de verificação externo e usaria isso para controlar os valores de subida e descida. Então, quando você encontrar o valor de subida ou descida, poderá executar seu próprio script. Defina a ascensão e queda em sua configuração haproxy para ser 1 e mude a seleção para externo

    external-check command ping.sh
    server s1_a 1.2.3.4:3600 check inter 5s fall 1 rise 1
    server s2_b 1.2.3.5:3600 check backup

    timeout queue 60s
    timeout server 60s
    timeout connect 60s

Em seguida, como um exemplo aproximado com uma verificação de ping externa

#!/bin/bash

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

# Set the maximum time in seconds to allow ping to run, 1-10 is a sensible range.
TMEOUT=1
# Interval between pings in seconds, 0.2-1 is a sensible range.
INT=1
# Number of pings to send.
NUM=1
RIP=$(echo ${3}))
VIP=$(echo ${1}) 
#Optionally provides source IP for Ping
SRC=

if [ "$SRC" != '' ]; then
        SRC_IP="-I $SRC"
fi
if ping ${SRC_IP} -n -w${TMEOUT} -i${INT} -c${NUM} ${RIP} >& /dev/null; then
            COUNTER="$(cat count)"
            if [COUNTER != 0]; then
                //run up script here
            fi
            echo 0 >> count         
            exit ${?}
else
            COUNTER="$(cat count)"
            if [COUNTER >= 3]; then
                //run down script here
            fi

            COUNTER=$[COUNTER + 1]
            echo COUNTER >> count
            exit ${?}
fi

Você também pode fazer isso com lua, mas eu não olhei para isso. Eu fiz algumas outras opções para alertas de e-mail, como pesquisar o soquete de estatísticas ou hacking haproxy, que poderia ser adaptado, mas a verificação externa provavelmente funcionaria melhor aqui. No entanto, se você quiser experimentá-los, poderá encontrá-los aqui. link .

    
por 22.11.2017 / 14:07