Beispiel Adguard, das läuft bei mir als LXC ohne Docker. Das macht es einfacher.
Du musst auf beiden Hosts erstmal Keepalived installieren mit sudo apt install keepalived
Dann gehen wir mal von folgenden Vorrausetzungen aus:
OS:
Ubuntu Server
Adguard Host 1 IP:
192.168.22.2
Adguard Host 2 IP:
192.168.22.3
Adguard IP die vom DHCP Verteilt wird:
192.168.22.4, dabei handelt es sich um eine virtuelle IP. Es gibt dazu keinen Host.
Folgende wird in /etc/keepalived/keepalived.conf gespeichert auf Adguard Host 1:
Code:
vrrp_sync_group ADGAURD {
group {
ADGUARD4
ADGUARD6
}
}
global_defs {
router_id adguard1
}
vrrp_instance ADGUARD4 {
state MASTER
interface eth0
virtual_router_id 55
priority 50
advert_int 1
unicast_src_ip 192.168.22.2
unicast_peer {
192.168.22.3
}
authentication {
auth_type PASS
auth_pass woiubvskvbssbvwukvbskvj
}
virtual_ipaddress {
192.168.22.4/24
}
}
vrrp_instance ADGUARD6 {
state MASTER
interface eth0
virtual_router_id 50
priority 50
advert_int 1
authentication {
auth_type PASS
auth_pass woiubvskvbssbvwukvbskvj
}
virtual_ipaddress {
fd00::2820:eaff:fecd:c71e/64
}
}
Selbe Datei und Pfad auf Adguard Host 2 mit folgendem Inhalt:
Code:
vrrp_sync_group ADGAURD {
group {
ADGUARD4
ADGUARD6
}
}
global_defs {
router_id adguard1
}
vrrp_instance ADGUARD4 {
state MASTER
interface eth0
virtual_router_id 55
priority 50
advert_int 1
unicast_src_ip 192.168.22.3
unicast_peer {
192.168.22.2
}
authentication {
auth_type PASS
auth_pass woiubvskvbssbvwukvbskvj
}
virtual_ipaddress {
192.168.22.4/24
}
}
vrrp_instance ADGUARD6 {
state MASTER
interface eth0
virtual_router_id 50
priority 50
advert_int 1
authentication {
auth_type PASS
auth_pass woiubvskvbssbvwukvbskvj
}
virtual_ipaddress {
fd00::2820:eaff:fecd:c71e/64
}
}
Dann mit
Code:
systemctl restart keepalived
systemctl status keepalived
Keepalived neustarten und den Status sehen.
Jetzt kannst du fd00::2820:eaff:fecd:c71e/64 und 192.168.22.4 als DNS Server verteilen lassen.
Priority 30 desto höher der Wert, desto wichtiger ist der Host. Das heißt, wenn Adguard Host 1 online ist, dann wird er der Master sein, weil sein Wert ist höher. Wenn er offline geht, dann übernimmt Adguard Host 2 die virtuelle IP. Das heißt die 192.168.22.4 zeigt immer auf den Host mit der höchsten priority. Das wars auch schon.
DEIN-PASSWORT ersetzt du auf beiden durch das gleiche. Ich hoffe ich habe nichts vergessen
Falls Interesse besteht, dass mit Notifications und einem Script zum Prüfen, ob ein Docker Container läuft, müsst ihr bescheid sagen.
Edit: Die Config oben wurde angepasst, weil es zu Problemen kam zwischen IPv4 und IPv6. Es kam vor, dass IPv4 zu Adguard Host 1 und IPv6 zu Adguard Host 2 gesendet wurde. Waren also immer beide aktiv. Deshalb wurde
vrrp_sync_group
eingeführt. Dies sorgt dafür, dass es synchron umgestellt wird. Seit dieser Anpassung läuft es zuverlässig.