KeepaliveD fährt auf zwei Systemen die VIP hoch

QuarzSnoopy

New Member
Ich habe KeepaliveD auf 3 Systemen installiert.
Wenn KeepaliveD auf einem System die VIP hochgefahren hat und ich dort den KeepaliveD stoppe, dann wird in mehr als 50% aller Tests, auf den BEIDEN anderen Systemen die VIP hochgefahren.

Weiß einer woran das liegt?

Meine CFG sieht so aus:
Code:
global_defs {
        # Don't run scripts configured to be run as root if any part of the path is writable by a non-root user.
        vrrp_strict on
        vrrp_version 3
        ip_family inet
        protocol TCP
        script_user root
        enable_script_security
}

### DB-Port 3306
vrrp_script chk_3306 {
        script "/root/bin/check_db.sh $(hostname -s) 3306 fritz XXXXXXXX"
        interval 1
        weight 2
}

vrrp_instance VIP_3306 {
        interface br-db
        state EQUAL
        virtual_router_id 69
        priority 100
        advert_int 1

        track_script {
                chk_3306
        }

        virtual_ipaddress {
                10.10.1.1/16 dev eht0 label eht0:vip
        }
}
 

QuarzSnoopy

New Member
vermutliche Ursache wurde gefunden - für interessierte

In diesem Beitrag:
https://github.com/acassen/keepalived/issues/707
wird folgendes geschrieben:

...
So far as I can see keepalived has never supported state EQUAL.
Until commit 40e4a17 an unknown state was just silently ignored,
commit 40e4a17 added the message you reported,
but made no other change in that respect.
...
Yes, I saw that link in your config file and had a look at it.
So far as I can see it is incorrect. I have searched through all the git commits,
and none of them has the string "EQUAL".
I suspect that people have worked on the basis that if no error message is reported,
then it must be valid. Unfortunately that wasn't the case.

If you wan't to stop a higher priority vrrp instance taking over as master
when there is already a master, use the nopreempt option.
That won't quite do what you want though since if the other master goes away,
the original instance will then take over as master again.
Die deutsche Übersetzung dazu sollte sinngemäß so ungefähr aussehen:
...
Soweit ich sehen kann, hat keepalived den Status EQUAL nie unterstützt.
Bis zum Commit 40e4a17 wurde ein unbekannter Zustand einfach stillschweigend ignoriert,
Commit 40e4a17 fügte die Nachricht hinzu, die Sie gemeldet haben,
nahm aber keine weiteren Änderungen in dieser Hinsicht vor.
...
Ja, ich habe den Link in deiner Konfigurationsdatei gesehen und mir das angesehen.
Soweit ich sehen kann, ist es falsch. Ich habe alle Git Commits durchsucht,
und keiner von ihnen hat die Zeichenkette "EQUAL".
Ich vermute, dass die Menschen davon ausgegangen sind, dass,
wenn keine Fehlermeldung gemeldet wird, diese gültig sein muss.
Leider war das nicht der Fall.

Wenn Sie eine vrrp-Instanz mit höherer Priorität nicht stoppen möchten,
die als Master übernimmt, wenn es bereits einen Master gibt,
verwenden Sie die Option nopreempt. Das wird aber nicht ganz das tun,
was du willst, denn wenn der andere Master weggeht,
wird die Originalinstanz wieder als Master übernehmen.
Demnach ist das, was ich wollte, garnicht möglich bzw. wird diese Funktion von KeepaliveD offiziell nicht unterstützt.

Also werde ich dann doch mit Prio arbeiten müssen...
 

QuarzSnoopy

New Member
den Status EQUAL gibt es nicht, es wird immer einer bevorzugt!

...auch in der Man-Page wird "EQUAL" nicht erwähnt...

vrrp_instance <STRING> {
# Initial state, MASTER|BACKUP
# As soon as the other machine(s) come up,
# an election will be held and the machine
# with the highest priority will become MASTER.
# So the entry here doesn't matter a whole lot.
state MASTER
 
Top