Erro de marca-passo no failback com drbd

5

Eu tenho dois nós no meu cluster com o drbd + pacemaker + corosync Quando o primeiro nó falha, o segundo assume o serviço e está ok, mas quando temos que fazer o failback (node1 back online) ele mostra alguns erros e o cluster pára de funcionar.

É um cluster do CentOS 6 com o kernel 2.6.32-504.12.2.el6.x86_64 e estes pacotes:

kmod-drbd83-8.3.16-3, drbd83-utils-8.3.16-1, corosynclib-1.4.7-1, corosync-1.4.7-1, pacemaker-1.1.12-4, pacemaker-cluster-libs-1.1.12-4, pacemaker-libs-1.1.12-4, pacemaker-cli-1.1.12-4.

Configuração do Drbd:

    resource r0
{
    startup {
        wfc-timeout 30;
        outdated-wfc-timeout 20;
        degr-wfc-timeout 30;
    }

net {
    cram-hmac-alg sha1;
    shared-secret sync_disk;
    max-buffers 512;
    sndbuf-size 0;
}

syncer {
    rate 100M;
    verify-alg sha1;
}

on XXX2 {
    device minor 1;
    disk /dev/sdb;
    address xx.xx.xx.xx:7789;
    meta-disk internal;
}

on XXX1 {
    device minor 1;
    disk /dev/sdb;
    address xx.xx.xx.xx:7789;
    meta-disk internal;
}
}

Corosync:

compatibility: whitetank

totem {
    version: 2
    secauth: on
    interface {
        member {
            memberaddr: xx.xx.xx.1
        }
        member {
            memberaddr: xx.xx.xx.2
        }
        ringnumber: 0
        bindnetaddr: xx.xx.xx.1
        mcastport: 5405
        ttl: 1
    }
    transport: udpu
}

logging {
    fileline: off
    to_logfile: yes
    to_syslog: yes
    debug: on
    logfile: /var/log/cluster/corosync.log
    debug: off
    timestamp: on
    logger_subsys {
        subsys: AMF
        debug: off
    }
}

Marcapasso:

node XXX1 \
        attributes standby=off
node XXX2 \
        attributes standby=off
primitive drbd_res ocf:linbit:drbd \
        params drbd_resource=r0 \
        op monitor interval=29s role=Master \
        op monitor interval=31s role=Slave
primitive failover_ip IPaddr2 \
        params ip=172.16.2.49 cidr_netmask=32 \
        op monitor interval=30s nic=eth0 \
        meta is-managed=true
primitive fs_res Filesystem \
        params device="/dev/drbd1" directory="/data" fstype=ext4 \
        meta is-managed=true
primitive res_exportfs_export1 exportfs \
        params fsid=1 directory="/data/export" options="rw,async,insecure,no_subtree_check,no_root_squash,no_all_squash" clientspec="*" wait_for_leasetime_on_stop=false \
        op monitor interval=40s \
        op stop interval=0 timeout=120s \
        op start interval=0 timeout=120s \
        meta is-managed=true
primitive res_exportfs_export2 exportfs \
        params fsid=2 directory="/data/teste1" options="rw,async,insecure,no_subtree_check,no_root_squash,no_all_squash" clientspec="*" wait_for_leasetime_on_stop=false \
        op monitor interval=40s \
        op stop interval=0 timeout=120s \
        op start interval=0 timeout=120s \
        meta is-managed=true
primitive res_exportfs_root exportfs \
        params clientspec="*" options="rw,async,fsid=root,insecure,no_subtree_check,no_root_squash,no_all_squash" directory="/data" fsid=0 unlock_on_stop=false wait_for_leasetime_on_stop=false \
        operations $id=res_exportfs_root-operations \
        op monitor interval=30 start-delay=0 \
        meta
group rg_export fs_res res_exportfs_export1 res_exportfs_export2 failover_ip
ms drbd_master_slave drbd_res \
        meta master-max=1 master-node-max=1 clone-max=2 clone-node-max=1 notify=true
clone cl_exportfs_root res_exportfs_root \
        meta
colocation c_nfs_on_root inf: rg_export cl_exportfs_root
colocation fs_drbd_colo inf: rg_export drbd_master_slave:Master
order fs_after_drbd Mandatory: drbd_master_slave:promote rg_export:start
order o_root_before_nfs inf: cl_exportfs_root rg_export:start
property cib-bootstrap-options: \
        expected-quorum-votes=2 \
        last-lrm-refresh=1427814473 \
        stonith-enabled=false \
        no-quorum-policy=ignore \
        dc-version=1.1.11-97629de \
        cluster-infrastructure="classic openais (with plugin)"

Erros:

res_exportfs_export2_stop_0 on xx.xx.xx.1 'unknown error' (1): call=47, status=Timed Out, last-rc-change='Tue Mar 31 12:53:04 2015', queued=0ms, exec=20003ms
res_exportfs_export2_stop_0 on xx.xx.xx.1 'unknown error' (1): call=47, status=Timed Out, last-rc-change='Tue Mar 31 12:53:04 2015', queued=0ms, exec=20003ms
res_exportfs_export2_stop_0 on xx.xx.xxx.2 'unknown error' (1): call=52, status=Timed Out, last-rc-change='Tue Mar 31 12:53:04 2015', queued=0ms, exec=20001ms
res_exportfs_export2_stop_0 on xx.xx.xx.2 'unknown error' (1): call=52, status=Timed Out, last-rc-change='Tue Mar 31 12:53:04 2015', queued=0ms, exec=20001ms

Existe algum outro log que eu possa verificar?

Eu verifiquei no segundo nó / dev / drbd1 não desmontar após o failback. Se eu reiniciar o serviço NFS e aplicar a regra, tudo funcionará bem.

Edit: Graças ao Dok está funcionando agora, eu só tenho que ajustar o tempo para 120s e definir o tempo limite de início também!

    
por Leandro Ferreira 31.03.2015 / 20:20

1 resposta

4
res_exportfs_export2_stop_0 on xx.xx.xx.1 'unknown error' (1): call=47, status=Timed Out, last-rc-change='Tue Mar 31 12:53:04 2015', queued=0ms, exec=20003ms

Mostra que seus recursos res_exportfs2 não foram interrompidos devido a um tempo limite. Pode ser simplesmente que precisa de um tempo limite maior. Tente configurar um tempo limite de parada para esse recurso da seguinte forma:

primitive res_exportfs_export2 exportfs \
params fsid=2 directory="/data/teste1" options="rw,async,insecure,no_subtree_check,no_root_squash,no_all_squash" clientspec="*" wait_for_leasetime_on_stop=true \
op monitor interval=30s \
op stop interval=0 timeout=60s

Se o tempo limite não ajudar a verificar o log de mensagens e / ou o corosync.log no horário mostrado nos erros para dicas (31 de março de 2013).

    
por 01.04.2015 / 18:02