4 votos

Error de marcapasos en failback con drbd

Tengo dos nodos en mi grupo con drbd+marcapasos+corosync Cuando el primer nodo falla, el segundo asume el servicio y está bien, pero cuando tenemos a la conmutación por recuperación (nodo1 de nuevo en línea) muestra algunos de los errores y el clúster deja de funcionar.

Es un CentOS 6 clúster con el kernel 2.6.32-504.12.2.el6.x86_64 y estos paquetes:

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

Drbd config:

    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
    }
}

Marcapasos:

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)"

Errores:

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

¿Hay algún otro registro que yo pudiera ver?

Me registré en el segundo nodo /dev/drbd1 no umount tras la conmutación por recuperación. Si se me reinicie el servicio NFS y aplicar la regla, todo funciona bien.

Edit: Gracias a Dok se está trabajando ahora, sólo tengo que ajustar el tiempo para que 120s y establecer el tiempo de espera de inicio!

3voto

Dok Puntos 373
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

Muestra que los recursos res_exportfs2 podido detener por un tiempo de espera. Puede ser simplemente que necesita un tiempo de espera más largo. Tratar de configurar un tiempo de espera de parada para este recurso así:

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

Si el tiempo de espera no funciona Revise los mensajes de log o corosync.log en el momento que se muestra en los errores para las pistas (31 de Mar 12:53:04 2015).

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: