fix(keepalived): REVERT preempt_delay → nopreempt (Prod-Ausfall 2026-08-03) — v1.3.15

v1.3.9 hatte auf dem PG-Primary (Prio 200) nopreempt durch preempt_delay ersetzt,
damit die VIP zum Primary heimwandert. Das reaktivierte GENAU den Fehlermodus,
den nopreempt verhindert: der Prio-200-Node holt die VIP zurück, sobald
keepalived ihn für gesund hält — aber die Track-Scripts können "gesund" melden,
während der Dienst kaputt ist. Am 2026-08-03 entriss so ein halb-kaputtes utm-1
dem funktionierenden utm-2 die VIP (Log: "Master received advert from .6 with
higher priority 200 → Entering BACKUP") und hielt sie fest → Ausfall, bis utm-1
hart abgeschaltet wurde.

Zurück auf nopreempt (beide Nodes, wie vor v1.3.9). VIP-Affinität zum Primary
erst wieder, wenn der Health-Check "Prozess up aber Dienst kaputt" als FAULT
erkennt. Bis dahin: Stabilität > Affinität.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Debian
2026-08-03 12:24:16 +02:00
parent f0be5be496
commit d395e3ea68
4 changed files with 32 additions and 65 deletions

View File

@@ -45,9 +45,8 @@ vrrp_instance VI_1 {
virtual_router_id {{ .RouterID }}
priority {{ .Priority }}
advert_int 2
{{ if .PreemptDelay }} preempt_delay {{ .PreemptDelay }}
{{ else }} nopreempt
{{ end }}{{ if .SrcIP }} unicast_src_ip {{ .SrcIP }}
nopreempt
{{ if .SrcIP }} unicast_src_ip {{ .SrcIP }}
unicast_peer {
{{ .PeerIP }}
}
@@ -73,9 +72,8 @@ vrrp_instance VI_HB {
virtual_router_id {{ .HBRouterID }}
priority {{ .Priority }}
advert_int 2
{{ if .PreemptDelay }} preempt_delay {{ .PreemptDelay }}
{{ else }} nopreempt
{{ end }}{{ if .HBSrcIP }} unicast_src_ip {{ .HBSrcIP }}
nopreempt
{{ if .HBSrcIP }} unicast_src_ip {{ .HBSrcIP }}
unicast_peer {
{{ .HBPeerIP }}
}