Состояние DRBD после сбоя сети становится основным / неизвестным

У меня есть следующая структура:

  • 2 узла.
  • corosync + кардиостимулятор + DRBD + OCFS2.

==============

После сбоя теста сети статус от DRBD становится:

**** Primary / Unknown ****

dmesg показывает следующее:

Раздвоенный мозг обнаружил, но неразрешенное, разрывая соединение.

я могу получить статус от DRBD до основного / основного обратно вручную по командам, но я хочу это автоматически.

Моя конфигурация:/ etc / corosync / r0

resource r0 {
    protocol C;
    startup {
       become-primary-on both;
    }
    disk {
            on-io-error     detach;
            fencing         resource-only;
            resync-rate     1000M;
    }
    handlers {
            split-brain             "/usr/lib/drbd/notify-split-brain.sh root";
            fence-peer              "/usr/lib/drbd/crm-fence-peer.sh";
            after-resync-target     "/usr/lib/drbd/crm-unfence-peer.sh";
    }
    net {
            allow-two-primaries yes;
            cram-hmac-alg sha1;
            shared-secret "DRBD Super Secret Password";
            timeout 180;
            ping-int 3;
            ping-timeout 9;
            allow-two-primaries;
            after-sb-0pri discard-zero-changes;
            after-sb-1pri discard-secondary;
            after-sb-2pri disconnect;
    }
    on node01 {
            device /dev/drbd0;
            address 192.168.64.128:7788;
            meta-disk internal;
            disk /dev/mapper/SSDVolume-VMData;
            }
    on node02 {
            device /dev/drbd0;
            address 192.168.64.129:7788;
            meta-disk internal;
            disk /dev/mapper/SSDVolume-VMData;
            }

}


Моя программа настройки crm:

primitive drbd_r0 ocf:linbit:drbd \
    params drbd_resource=r0 \
    op monitor interval=20 role=Master timeout=30 \
    op monitor interval=30 role=Slave timeout=40
primitive filesys Filesystem \
    params device="/dev/drbd0" directory="/vmstore" fstype=ocfs2 
options="rw,noatime" \
    op start interval=0 timeout=60 \
    op stop interval=0 timeout=60
primitive virtual_ip IPaddr2 \
    params ip=192.168.38.10 cidr_netmask=32 \
    op monitor interval=10s \
    meta migration-threshold=10
ms ms_drbd_r0 drbd_r0 \
    meta master-max=2 master-node-max=1 notify=true
clone filesys_clone filesys \
    meta interleave=true
colocation col_filesys_clone-on-drbd_master inf: filesys_clone 
ms_drbd_r0:Master
order filesys_clone-after-drbd_master inf: ms_drbd_r0:promote 
filesys_clone:start
property cib-bootstrap-options: \
    have-watchdog=false \
    dc-version=1.1.14-70404b0 \
    cluster-infrastructure=corosync \
    cluster-name=debian \
    stonith-enabled=false \
    no-quorum-policy=ignore
rsc_defaults rsc-options: \
    resource-stickiness=100

Мой вопрос:

Что я должен сделать, чтобы снова автоматически получить статус от DRBD Primary/primary?

Заранее спасибо

1 ответ

При работе с DRBD в двух основных сетях любое прерывание сети репликации приведет к разделению мозга. Вам необходимо решить эту проблему вручную, следуя инструкциям в руководстве пользователя: https://docs.linbit.com/doc/users-guide-84/s-resolve-split-brain/

Что еще более важно, вы используете DRBD с двумя первичными системами без STONITH и ограждений. Это опасно и в конечном итоге подведет вас. Вы потеряете данные или испортите их. Использование DRBD, как это, не рекомендуется или не поддерживается.

Удачи!

Другие вопросы по тегам