Необходимо настроить высокодоступный сервис. В данной статье рассмотрены автоматическое переключение IP на доступную ноду и перевод DRBD ноды в состояние Primary.
Подготовительные шаги
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
pcs status Cluster name: COREMAIL Stack: corosync Current DC: coremail01 (version 1.1.19-8.el7_6.4-c3c624ea3d) - partition with quorum Last updated: Thu Mar 21 16:04:43 2019 Last change: Thu Mar 21 16:04:04 2019 by hacluster via crmd on coremail01 2 nodes configured 4 resources configured Online: [ coremail01 coremail02 ] Full list of resources: coremail (ocf::heartbeat:IPaddr2): Started coremail01 Resource Group: monitordrbd mountfs (ocf::heartbeat:Filesystem): Stopped Master/Slave Set: ms-drbd_arraydata [drbd_arraydata] Slaves: [ coremail01 coremail02 ] Daemon Status: corosync: active/enabled pacemaker: active/enabled pcsd: active/enabled |
Т.е. у нас получаются две ноды в состоянии SLAVE Выполним принудительное переключение (Вот тут не совсем верно! Данная команда задает принудительно Primary ноду. Т.е. после перезагрузки мастером будет указанный сервер)
1 2 3 |
pcs resource move ms-drbd_arraydata coremail01 --master |
Повторно проверим состояние системы
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
pcs status Cluster name: COREMAIL Stack: corosync Current DC: coremail01 (version 1.1.19-8.el7_6.4-c3c624ea3d) - partition with quorum Last updated: Thu Mar 21 16:05:02 2019 Last change: Thu Mar 21 16:05:00 2019 by root via crm_resource on coremail01 2 nodes configured 4 resources configured Online: [ coremail01 coremail02 ] Full list of resources: zs-coremail (ocf::heartbeat:IPaddr2): Started coremail01 Resource Group: monitordrbd mountfs (ocf::heartbeat:Filesystem): Started coremail01 Master/Slave Set: ms-drbd_arraydata [drbd_arraydata] Masters: [ coremail01 ] Slaves: [ coremail02 ] Daemon Status: corosync: active/enabled pacemaker: active/enabled pcsd: active/enabled |
Проверяем состояние SELinux
При настройке возникла ошибка
1 2 3 4 5 6 7 |
drbd(drbd_arraydata)[16773]: ERROR: maildata: Exit code 107 drbd(drbd_arraydata)[16773]: ERROR: maildata: Command output: lrmd[6058]: notice: drbd_arraydata_monitor_15000:16552:stderr [ Error signing on to the CIB service: Transport endpoint is not connected ] drbd(drbd_arraydata)[16773]: ERROR: maildata: Called /usr/sbin/crm_master -Q -l reboot -v 10000 |
Файл конфигурации SELinux сообщает следующее
1 2 3 4 5 |
grep -v -E "#|^$" /etc/sysconfig/selinux SELINUX=disabled SELINUXTYPE=targeted |
Т.е. отключен, но при загрузке системы вижу
1 2 3 4 5 6 7 8 9 10 11 12 |
sestatus SELinux status: enabled SELinuxfs mount: /sys/fs/selinux SELinux root directory: /etc/selinux Loaded policy name: targeted Current mode: permissive Mode from config file: enforcing Policy MLS status: enabled Policy deny_unknown status: allowed Max kernel policy version: 31 |
Возможно данная ситуация связана с тем, что я пересобираю ядро, с определенными параметрами. Отключить удалось только добавлением параметра ядра при загрузке в файле /boot/grub2/grub.cfg — selinux=0
1 2 3 4 5 |
linux16 /vmlinuz-3.10.0-957.5.1.el7.x86_64 root=/dev/mapper/centos_node-root ro rd.lvm.lv=centos_node/root zswap.enabled=1 zswap.max_pool_percent=30 elevator=noop transparent_hugepage=never LANG=ru_RU.UTF-8 selinux=0 |
После чего ошибка Error signing on to the CIB service: Transport endpoint is not connected ушла.
Настройка ресурсов Pacemaker
Воспользуемся командой crm. По умолчанию данная команда отсутствует в CentOS. Как установить ее написано в статье Pacemaker
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
crm configure node 1: node1 \ attributes node 2: node2 \ attributes primitive clusterip IPaddr2 \ params cidr_netmask=24 ip=101.201.203.50 \ op monitor interval=60s \ op start interval=0s timeout=20s \ op stop interval=0s timeout=20s primitive drbd_arraydata ocf:linbit:drbd \ params drbd_resource=maildata \ op monitor interval=15 role=Master \ op monitor interval=30 role=Slave primitive mountfs Filesystem \ params device="/dev/drbd0" directory="/mnt" fstype=ext4 options="noatime,nodiratime" \ op monitor interval=10s ms ms-drbd_arraydata drbd_arraydata \ meta master-max=1 master-node-max=1 clone-max=2 clone-node-max=1 notify=true colocation col-array_on_drbd inf: monitordrbd ms-drbd_arraydata:Master order o-drbd_before_mount inf: ms-drbd_arraydata:promote monitordrbd:start property cib-bootstrap-options: \ have-watchdog=false \ dc-version=1.1.19-8.el7_6.4-c3c624ea3d \ cluster-infrastructure=corosync \ cluster-name=DRBD \ stonith-enabled=false \ no-quorum-policy=ignore \ last-lrm-refresh=1551790931 \ stop-all-resources=no |
Небольшие пояснения
primitive clusterip IPaddr2 — задание IP адреса кластера, который будет перемещаться на Primary
primitive drbd_arraydata ocf:linbit:drbd — поднятие массива maildata, описанного в конфигурационном файле DRBD
primitive mountfs Filesystem — автоматическое монтирование массива DRBD на Primary ноде
ms ms-drbd_arraydata drbd_arraydata — мониторинг DRBD
И так, в случае выключения или перезагрузки одной из нод, произойдет переключение состояния массива DRBD на Primary и автоматически подключиться диск в каталог /mnt