Problem:
Man hat einen PiHole im eigenen Netz. Es läuft alles wunderbar. Dann fällt das Netzteil des Rechner/RaspberryPi aus auf dem die PiHole Instanz läuft und man fragt sich, wieso man kaum Noch Internetdienste nutzen kann.

Grund:
Der DNS ist nicht mehr verfügbar. Alle Anfragen die nicht direkt an eine IP gehen, können nicht mehr abgerufen werden. Also alles wie z.B. google.de funktioniert nicht mehr.

Lösung:
Eine Lösung könnte sein, einen Google-DNS (8.8.8.8 oder 8.8.4.4) im DHCP als zweiten DNS einzutragen. Aber dann verliere ich voraussichtlich jegliche Filterfunktionen.
Der logische Schritt, ich installiere einen zweiten PiHole in meinem Netz und trage die IP von dem zusätzlichen DNS in meinem DHCP ein.
Damit kann ein Server ausfallen ohne das ich in meiner Webnutzung eingeschränkt bin.

Ein Beispiel aus meinen Statistiken der beiden Systeme in meinem Netz bei einem Ausfall:

DNS1 (Master) hat eine Lücke zwischen 16 und 7 Uhr
DNS2 hat nahtlos in dieser Zeit alle DNS Anfragen übernommen.

Das liest sich jetzt erst einmal logisch. Und wenn man auf keinen Fall auf die Filterung verzichten will, auch sinnvoll. Aber möchte ich meine Blacklists und Whitelists etc. immer manuell auf beiden PiHole´s pflegen?! Eher nicht.
Daher nutze ich ein Tool namens Gravity-Sync.

Gravity-Sync kümmert sich automatisch um die Synchronisierung jeglicher Daten in meiner Gravity-Datenbank des Master-PiHoles. Dabei werden die Statistiken des jeweiligen PiHole nicht überschrieben so das ich jeder zeit eine Übersicht darüber habe, wieviel über den jeweiligen Server gelaufen ist.

Installation
Bevor es mit der Installation richtig los geht, erstellt erst einmal ein Backup innerhalb des PiHole-Web-Interface: Settings -> Teleporter -> Backup

Ich gehe bei der Beschreibung davon aus, dass ihr eine ganz normale PiHole Installation am laufen habt.

Dann kann es los gehen. Die Entwickler von Gravity-Sync haben es uns leicht gemacht und bieten ein Installer-Tool an womit das Meiste automatisch abgearbeitet wird. Um dieses Tool zu nutzen, folgenden Befehl auf BEIDEN PiHole-Servern in der Konsole eingeben:
curl -sSL https://raw.githubusercontent.com/vmstan/gs-install/main/gs-install.sh | bash

Kurz vor Ende befragt euch das Script nach den jeweiligen IP-Adressen des jeweils anderen Servers und dessen Passwort. Also auf DNS1 muss die IP von DNS2 eingetragen werden und auf DNS2 die von DNS1. Diese werden benötigt weil das Script die Ausführung über SSH ausführt und sich so auf dem heiligen Server authentifizieren muss.

Sollten keine Fehler aufgetreten sein, war es das schon.

Für die erste Ausführung müsst ihr die Synchronisierung auf dem MASTER (bei mir, DNS1) manuell starten: gravity-sync push

Auch das sollte zu keinem Fehler führen.
Was nun noch fehlt ist die Automatisierung. Diese kann in variablen Zeitabständen auf dem Master gestartet werden:

  • gravity-sync auto hour 
    Für die stündliche Synchronisierung
  • gravity-sync auto half 
    Synchronisierung alls 30 Minuten
  • gravity-sync auto quad 
    Synchronisierung alle 15 Minuten

Das war es schon. Ab sofort braucht ihr euch nur noch um einen Server zu kümmern!

ACHTUNG:
Diese Anleitung beschreibt den Best-Case der wohl auf den meisten System laufen wird. Ebenso ist nicht beschrieben, was ihr tun müsst, solltet ihr SSH abgeschaltet haben oder dafür einen anderen Port verwenden. Diese und andere Informationen findet ihr auf der Gravity-Sync GitHub Seite.