====== Пакет Pacemaker ====== * [[https://habrahabr.ru/post/107837/|Linux HA на основе Pacemaker]] * [[http://wiki.525.su/doku.php?id=pacemaker_theory|Pacemaker, теория]] * [[https://wiki.clusterlabs.org/wiki/Example_configurations|Example configurations]] ===== Установка ПО для связи узлов кластера ===== * [[Пакет Corosync]] ===== Установка менеджера ресурсов кластера ===== nodeN# apt install pacemaker nodeN# crm_mon -1 ===== Управление конфигурацией ===== node1# apt install crmsh node1# crm status node1# crm configure show node1# crm configure property dc-deadtime=120 # Для уменьшения вероятности split-brain (НЕ помогает) property no-quorum-policy=ignore primitive st-null stonith:null params hostlist="node1 node2" clone fencing st-null op timeout=240s # Для долго стартующих ресурсов (перезапуск VM в KVM на резервном узле после падения основного) show commit quit nodeN# find /var/lib/pacemaker/cib/ nodeN# cat /var/lib/pacemaker/cib/cib.xml ===== Управление ресурсами===== **Resource Agents** * [[https://linux.die.net/man/8/crm_resource|crm_resource(8) - Linux man page]] ==== Создание ресурсов ==== node1# crm ra classes node1# crm ra list lsb node1# crm ra list systemd node1# crm ra list ocf heartbeat node1# less /usr/lib/ocf/resource.d/heartbeat/IPaddr2 node1# OCF_ROOT=/usr/lib/ocf OCF_RESKEY_ip=192.168.X.10 OCF_RESKEY_nic=eth0 OCF_RESKEY_cidr_netmask=24 /usr/lib/ocf/resource.d/heartbeat/IPaddr2 start node1# OCF_ROOT=/usr/lib/ocf OCF_RESKEY_ip=192.168.X.10 OCF_RESKEY_nic=eth0 OCF_RESKEY_cidr_netmask=24 /usr/lib/ocf/resource.d/heartbeat/IPaddr2 stop node1# crm configure crm(live)configure# primitive pr_ftp lsb:proftpd crm(live)configure# primitive pr_ip ocf:heartbeat:IPaddr2 params ip=192.168.X.10 cidr_netmask=32 nic=eth0 crm(live)configure# group gr_ftp_ip pr_ftp pr_ip node1# export EDITOR=nano crm(live)configure# edit pr_ip crm(live)configure# edit gr_ftp_ip crm(live)configure# show crm(live)configure# commit crm(live)configure# exit node1# crm status ==== Перемещение ресурсов ==== node1# crm resource crm(live)resource# locate gr_ftp_ip crm(live)resource# exit или node1# crm resource locate gr_ftp_ip node1# crm configure show node1# crm resource move gr_ftp_ip node2 или node1# crm resource move pr_ftp node2 node1# crm configure show node1# crm configure delete cli-prefer-gr_ftp_ip или node1# crm configure delete cli-prefer-pr_ftp или node1# crm resource unmigrate gr_ftp_ip или node1# crm resource unmigrate pr_ftp ==== Удаление ресурсов ==== node1# crm configure show node1# crm resource stop gr_ftp_ip node1# crm configure delete gr_ftp_ip pr_ftp pr_ip ===== Отладка ===== # crm resource cleanup pr_fs_r0 # stonith_admin -c -H node2.corpX.un pacemaker# crm_resource -C # tail -f /var/log/pacemaker/pacemaker.log ===== Очистка конфигурации ===== node1:~# cibadmin -E --force nodeN:~# init 6 ===== Запуск после монтирования файловых систем ===== * [[https://unix.stackexchange.com/questions/246935/set-systemd-service-to-execute-after-fstab-mount|Set systemd service to execute after fstab mount]] * Проблема воспроизводилась при сбойных сценариях с ресурсами, использующими [[Сервис OCFS2]] # systemctl list-units --type=mount ... disk3.mount loaded active mounted /disk3 ... # systemctl edit pacemaker.service [Unit] After=disk3.mount #After=disk2.mount disk3.mount ====== Дополнительные материалы ====== ==== ssh fencing ==== primitive st-ssh stonith:external/ssh params hostlist="node1 node2" clone fencing st-ssh ==== Debian 9 ==== # pacemaker 1.X () property stonith-enabled=false property default-resource-stickiness=100