Add proxmox-ha-manage.sh
This commit is contained in:
63
proxmox-ha-manage.sh
Normal file
63
proxmox-ha-manage.sh
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
#!/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'
|
Reference in New Issue
Block a user