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