У меня есть два узла в моем кластере с drbd + pacemaker + corosync. Когда первый узел выходит из строя, второй принимает на себя службу, и все в порядке, но когда нам нужно выполнить восстановление после сбоя (node1 снова в сети), он показывает некоторые ошибки, и кластер перестает работать.
Это кластер CentOS 6 с ядром 2.6.32-504.12.2.el6.x86_64 и этими пакетами:
kmod-drbd83-8.3.16-3, drbd83-utils-8.3.16-1, corosynclib-1.4.7-1, corosync-1.4.7-1, пейсмейкер-1.1.12-4, пейсмейкер-кластер-библиотеки- 1.1.12-4, пейсмейкер-библиотеки-1.1.12-4, пейсмейкер-кли-1.1.12-4.
Конфигурация Drbd:
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
}
}
Кардиостимулятор:
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)"
Ошибки:
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
Есть ли другой журнал, который я мог бы проверить?
Я проверил, что второй узел / dev / drbd1 не отключается при восстановлении после сбоя. Если я перезапускаю службу NFS и применяю правило, все работает нормально.
Изменить: благодаря Доку, теперь он работает, мне просто нужно настроить время на 120 секунд и установить тайм-аут запуска!
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_exportfs2 не остановились из-за тайм-аута. Возможно, просто требуется более длительный тайм-аут. Попробуйте настроить время ожидания остановки для этого ресурса следующим образом:
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
Если тайм-аут не помогает, проверьте журнал сообщений и / или corosync.log в то время, которое указано в ошибках, на наличие подсказок (31 марта 12:53:04 2015).