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

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

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

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 ]

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

Спасибо.

0
задан 9 January 2020 в 17:09
1 ответ

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

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

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

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

1
ответ дан 10 January 2020 в 10:29

Теги

Похожие вопросы