Keepalived não honrando nopreempt

1

Estou usando o Keepalived para gerenciar duas instâncias do Redis em uma configuração mestre / escravo. Estou passando por uma situação em que, se o Keepalived for encerrado na caixa mestre (aquele com a prioridade mais alta), o servidor de backup assumirá como mestre. Quando o Keepalived é reiniciado na caixa de prioridade mais alta, no entanto, o servidor de backup cede imediatamente o status do mestre para a caixa de prioridade mais alta, o que efetivamente limpa o cache do Redis.

Eu tentei adicionar a diretiva nopreempt ao meu keepalived.conf, mas esse comportamento ainda está acontecendo.

O abaixo é o keepalived.conf do servidor Backup (prioridade mais baixa).

global_defs{
        router_id redis_server_2
}

vrrp_script chk_redis {
        script "killall -0 redis-server"
        interval 5
}

vrrp_instance VI_1{
        interface eth0
        virtual_router_id 100
        priority 200
        advert_int 1
        state BACKUP
        nopreempt
        track_script {
                chk_redis
        }

        virtual_ipaddress {
                10.19.105.229
        }

        notify_master "/usr/bin/sudo /var/lib/redis/redis.sh -m"

        notify_backup "/usr/bin/sudo /var/lib/redis/redis.sh -s"

        notify_fault "/usr/bin/sudo /var/lib/redis/redis.sh -k"
    
por Chris 18.09.2012 / 20:20

1 resposta

2

Ok, resolvi isso depois de pensar nisso por alguns minutos.

Em VRRP_instance V1 na caixa de prioridade mais alta, eu tive o seguinte:

    state MASTER

Agora, o nopreempt não estava sendo aceito porque a caixa de prioridade mais alta estava começando como mestre. A caixa de menor prioridade viu um mestre com prioridade mais alta e mudou para o modo escravo. Alterando essa linha para

    state BACKUP

a caixa de prioridade mais alta começa como escrava, vê um mestre com uma prioridade mais alta e permanece escrava. Feito e feito.

    
por 18.09.2012 / 20:32