Failover de IP virtual quando a máquina está sobrecarregada

3

Estamos usando o keepalived em combinação com um endereço IP virtual há dois anos. Nos casos raros em que uma máquina trava, isso funciona muito bem.

Mas quando há problemas na própria caixa, vimos alguns casos em que nenhum failover ocorreu. Por exemplo, quando tivemos um problema em que o sistema estava trocando o tempo todo. A carga foi de 25 em vez do normal 5 e não havia maneira de ssh na máquina. Ping estava funcionando. Keepalived mantido em execução e o endereço IP virtual não foi assumido pelo outro escravo.

Também tivemos a situação em que, em uma configuração do MySql HA, alguém bloqueava o banco de dados completo por engano fazendo um backup no mestre em vez do escravo. Isso também não foi pego.

O problema aqui é que estou usando apenas os scripts incorretos para verificar a própria máquina se o mestre está funcionando bem ou isso é típico para uma configuração de IP virtual?

Sinto-me estranho que você não use um terceiro sistema para determinar se o mestre está disponível. Claro que eu entendo o porquê: keepalivd deve ser ligado no mestre pelo mestre.

Percebi recentemente que, para as configurações do Redis HA, as pessoas estão usando o Zookeeper (por exemplo, link ). Isso é por causa das limitações que encontrei?

    
por Marco 03.02.2013 / 14:35

1 resposta

1

Is the issue here that I am just using the wrong scripts to check on the machine itself if the master is working fine,

Sim.

For example when we had a issue where the system was swapping all the time. The load was 25 instead of the normal 5 and there was no way to ssh into the machine. Ping was working. Keepalived kept running and the virtual IP adress was not taken over by the other slave.

Você já tentou escrever seu próprio script para verificar a média de carga, algo assim:

#!/bin/bash

LOAD=$(/command/to/get/the/load/average)
if [ $LOAD -ge 25 ]; then
    exit 1
else
    exit 0
fi

use-o como track_script :

vrrp_script check_load {
    script "/path/to/check_load.sh"
    interval 2
    weight 2
}

vrrp_instance VI_1 {
    state BACKUP
    nopreempt
    ...
    authentication {
        auth_type PASS
        auth_pass Neifeaw7
    }
    virtual_ipaddress {
        192.168.6.8
    }
    track_script {
        check_load
    }
}

Mas espere, o que acontece se o IP virtual for comutado com muita frequência?

    
por 18.02.2013 / 05:19