Назад | Перейти на главную страницу

NFS-кластер corosync + кардиостимулятор + drbd

Я создал кластер NFS с кардиостимулятором DRBD и corosync с двумя узлами, все работало нормально, в моих тестах пробовал другой сценарий аварийного переключения, мой кластер полностью сломан, я больше не могу переключиться на основной узел, только второй работает , поэтому, когда я останавливаю службу на вторичном узле, моя служба не работает. Я попытался повторно синхронизировать диски, воссоздать том на основном сервере, но кардиостимулятор останавливает мою сервисную группу, потому что том не может быть установлен

Вот мои конфигурации

    logging {   
      debug: off   
      to_syslog: yes 
    } 
    nodelist {   
       node {
        name: nfs01-master
        nodeid: 1
        quorum_votes: 1
        ring0_addr: 10.x.x.150   
        }   
        node {
           name: nfs02-slave
           nodeid: 2
           quorum_votes: 1
           ring0_addr: 10.x.x.151   
        } 
   }
  quorum {   
  provider: corosync_votequorum 
} 
totem {   
  cluster_name: nfs-cluster-ha   
  config_version: 3   
  ip_version: ipv4   
  secauth: on   
  version: 2   
interface {
        bindnetaddr: 10.x.x.0
        ringnumber: 0   
  } 
}

Конфигурация DRBD на обоих узлах

resource res1 {

    startup {
        wfc-timeout 30;
        degr-wfc-timeout 15;
    }

    disk {
    on-io-error detach;
    no-disk-flushes;
    no-disk-barrier;
    c-plan-ahead 0;
    c-fill-target 24M;
    c-min-rate 80M;
    c-max-rate 720M;
    }
  net {
    max-buffers 36k;
    sndbuf-size 1024k;
    rcvbuf-size 2048k;
  }

    syncer {
    rate 1000M;
}
    on nfs01-master {
        device /dev/drbd0;
        disk /dev/nfs01-master-vg/data;
        address 10.x.x.150:7788;
        meta-disk internal;
    }
    on nfs02-slave {
        device /dev/drbd0;
        disk /dev/nfs02-slave-vg/data;
        address 10.x.x.151:7788;
        meta-disk internal;
    }
}

Когда происходит аварийное переключение, pacemakder не может смонтировать / dev / drbd0 на nfs01-master и застрял как scondary, но когда я останавливаю все службы, кроме DRBD, я делаю это как мастер, я могу смонтировать раздел

Кардиостимулятор настроен следующим образом

node 1: nfs01-master \
        attributes standby=off
node 2: nfs02-slave
primitive drbd_res1 ocf:linbit:drbd \
        params drbd_resource=res1 \
        op monitor interval=20s
primitive fs_res1 Filesystem \
        params device="/dev/drbd0" directory="/data" fstype=ext4
primitive nfs-common lsb:nfs-common
primitive nfs-kernel-server lsb:nfs-kernel-server
primitive virtual_ip_ens192 IPaddr2 \
        params ip=10.x.x.153 cidr_netmask=24 nic="ens192:1" \
        op start interval=0s timeout=60s \
        op monitor interval=5s timeout=20s \
        op stop interval=0s timeout=60s \
        meta failure-timeout=5s
group services fs_res1 virtual_ip_ens192 nfs-kernel-server nfs-common
ms ms_drbd_res1 drbd_res1 \
        meta master-max=1 master-node-max=1 clone-max=2 clone-node-max=1 notify=true
location drbd-fence-by-handler-res1-ms_drbd_res1 ms_drbd_res1 \
        rule $role=Master -inf: #uname ne nfs02-slave
location location_on_nfs01-master ms_drbd_res1 100: nfs01-master
order services_after_drbd inf: ms_drbd_res1:promote services:start
colocation services_on_drbd inf: services ms_drbd_res1:Master
property cib-bootstrap-options: \
        have-watchdog=false \
        dc-version=2.0.1-9e909a5bdd \
        cluster-infrastructure=corosync \
        cluster-name=debian \
        stonith-enabled=false \
        no-quorum-policy=ignore \
        last-lrm-refresh=1577978640 \
        stop-all-resources=false

и мой общий NFS

STATDOPTS="-n 10.x.x.153 --port 32765 --outgoing-port 32766"
NEED_IDMAPD=yes
NEED_GSSD=no

Как я уже сказал, поскольку вторичный активен, служба работает нормально, но аварийное переключение не работает нормально, так как первичный активен, он имеет приоритет в службах, которые он переключается на вторичный, только если первичный не работает

На моем первичном

Stack: corosync
Current DC: nfs01-master (version 2.0.1-9e909a5bdd) - partition WITHOUT quorum
Last updated: Thu Jan  9 15:21:03 2020
Last change: Thu Jan  9 11:58:28 2020 by root via cibadmin on nfs02-slave

2 nodes configured
6 resources configured

Online: [ nfs01-master ]
OFFLINE: [ nfs02-slave ]

Full list of resources:

 Resource Group: services
     fs_res1    (ocf::heartbeat:Filesystem):    Stopped
     virtual_ip_ens192  (ocf::heartbeat:IPaddr2):   Stopped
     nfs-kernel-server  (lsb:nfs-kernel-server):    Stopped
     nfs-common (lsb:nfs-common):   Stopped
 Clone Set: ms_drbd_res1 [drbd_res1] (promotable)
     Slaves: [ nfs01-master ]
     Stopped: [ nfs02-slave ]

Если кто-нибудь может помочь, я был бы признателен

Спасибо.

Мне удалось решить свою проблему, в моей конфигурации была опция ограждения при удалении переключателей кластера при потере узла.

Я удалил эту строку

location drbd-fence-by-handler-res1-ms_drbd_res1 ms_drbd_res1 \
        rule $role=Master -inf: #uname ne nfs02-slave

Мне нужно больше узнать об ограждении и не включать ведущее устройство, когда диск не синхронизируется, если ведомое устройство пишет на нем