64 lines
1.6 KiB
Bash
64 lines
1.6 KiB
Bash
#!/usr/bin/env bash
|
|
# pve-ha-maint.sh
|
|
# Włącza/wyłącza maintenance i bezpiecznie zatrzymuje/uruchamia usługi HA.
|
|
|
|
set -euo pipefail
|
|
|
|
usage() {
|
|
echo "Użycie: $0 enable|disable [NODE]"
|
|
echo "Domyślnie NODE = \$(hostname)"
|
|
exit 1
|
|
}
|
|
|
|
[[ $# -ge 1 ]] || usage
|
|
ACTION="$1"
|
|
NODE="${2:-$(hostname)}"
|
|
|
|
if [[ $EUID -ne 0 ]]; then
|
|
echo "Uruchom jako root." >&2
|
|
exit 2
|
|
fi
|
|
|
|
# Pomocnicze
|
|
is_active() { systemctl is-active --quiet "$1"; }
|
|
start_if_needed() { is_active "$1" || systemctl start "$1"; }
|
|
stop_if_running() { is_active "$1" && systemctl stop "$1" || true; }
|
|
|
|
case "$ACTION" in
|
|
enable)
|
|
echo "[INFO] Włączam maintenance na węźle: $NODE"
|
|
# 1) Włącz maintenance w HA (zatrzyma migracje/restarty HA dla tego węzła)
|
|
ha-manager node-maintenance enable "$NODE"
|
|
|
|
# 2) Zatrzymaj lokalne demony HA + watchdog (unikniesz fence przy utracie quorum)
|
|
# Kolejność: najpierw LRM, potem CRM, na końcu watchdog-mux
|
|
stop_if_running pve-ha-lrm
|
|
stop_if_running pve-ha-crm
|
|
stop_if_running watchdog-mux
|
|
|
|
echo "[OK] Maintenance włączony, usługi HA zatrzymane."
|
|
;;
|
|
|
|
disable)
|
|
echo "[INFO] Wyłączam maintenance na węźle: $NODE"
|
|
|
|
# 1) Najpierw uruchom watchdog i demony HA (kolejność odwrotna)
|
|
start_if_needed watchdog-mux
|
|
start_if_needed pve-ha-crm
|
|
start_if_needed pve-ha-lrm
|
|
|
|
# 2) Wyłącz maintenance w HA
|
|
ha-manager node-maintenance disable "$NODE"
|
|
|
|
echo "[OK] Maintenance wyłączony, usługi HA działają."
|
|
;;
|
|
|
|
*)
|
|
usage
|
|
;;
|
|
esac
|
|
|
|
echo
|
|
echo "[STATUS] ha-manager status:"
|
|
ha-manager status | sed -n '1,120p'
|