Pourquoi j’exécute 2 instances Pi-Hole (et comment je les maintiens synchronisées)
Résumé
- L’exécution d’une seule instance Pi-Hole signifie que l’ensemble de votre réseau tombe en panne lorsque des mises à jour ou des erreurs de configuration se produisent.
- Deux instances Pi-Hole offrent une redondance, ce qui signifie que votre réseau peut rester en ligne même lorsque l’un des serveurs est en panne pour des mises à jour, des échanges de matériel ou des changements de configuration.
- Garder les instances Pi-Hole synchronisées (avec quelque chose comme NebulaSync) est crucial, car cela permet aux modifications apportées sur le serveur principal de se transférer automatiquement vers la sauvegarde.
Si vous utilisez un serveur Pi-Hole, vous avez probablement, comme moi, connu des temps d’arrêt lors de la mise à jour ou du redémarrage du serveur. Pour résoudre ce problème, j’ai commencé à exécuter deux instances Pi-Hole. Voici comment je l'ai fait, et comment je les garde synchronisées aussi.
Pourquoi exécuter deux instances Pi-Hole?
J’ai essayé Pi-Hole pour la première fois il y a quelques années, et c’était bien comme bloqueur de contenu et gestionnaire DNS. Cependant, chaque fois que je devais faire de l’entretien à la machine en marche, tout mon réseau tombait en panne. Pi-Hole était mon seul fournisseur DNS et, sans cela, mes ordinateurs ne savaient pas comment accéder à Internet.
J’ai donc abandonné le voyage de Pi-Hole pour cette époque. Quelques années plus tard, j’ai vu quelqu’un exécuter deux instances de Pi-Hole, et cela m’a intrigué de savoir pourquoi. La réponse est simple, et la solution à mon problème précédent : la redondance.
La plupart des routeurs peuvent utiliser deux serveurs DNS pour la redondance. Avec une seule instance Pi-Hole, vous ne comptez que sur un seul serveur DNS. Cependant, si vous avez deux Pi-Holes distincts en cours d'exécution, il y a à la fois un primaire et un secondaire.
Avec ce type de configuration, lorsqu’un Pi-Hole tombe, l’autre prend sa place. Lorsque j’ai refait mon laboratoire à domicile, c’est exactement ce que j’ai fait. Mon serveur d’applications principal exécute mon instance Pi-Hole principale, mais j’ai également un Raspberry Pi 3 B plus ancien qui exécute une instance Pi-Hole de secours.
Raspberry Pi 3 B
Le Raspberry Pi 3 B est un ordinateur monocarte (SBC) doté d’un processeur quadricœur de 1,2 GHz et de 1 Go de mémoire vive. Avec une sortie Gigabit Ethernet et HDMI, il s’agit d’un excellent petit appareil à faible consommation d’énergie pour exécuter des services de maison intelligente ou de laboratoire domestique comme Home Assistant, Homebridge, Pi-Hole ou d’autres logiciels.
Si le Pi 3B tombe en panne, rien ne se passe, car mon instance Pi-Hole principale est définie comme serveur DNS principal. Cependant, si mon serveur d’applications tombe en panne pour une raison quelconque, le Pi 3B devient la solution de secours.
Pourquoi un serveur tomberait-il en panne? Eh bien, un certain nombre de raisons. La principale est simplement la mise à jour de Pi-Hole. La mise à jour du conteneur Docker ou de l'hôte peut le faire tomber pendant plusieurs secondes, voire plus, selon le matériel sur lequel vous exécutez Pi-Hole. Si quelque chose se produit et qu’un fichier de configuration est gâché ou corrompu, il pourrait être hors ligne encore plus longtemps.
Une autre raison pourrait simplement être la maintenance du serveur. Je pourrais arrêter la machine virtuelle qui abrite le conteneur Docker pour y ajouter plus de RAM, ou même arrêter tout le serveur si je le déplace dans le rack ou si je fais de la maintenance des câbles réseau qui l'entourent.
Il existe de nombreuses raisons pour lesquelles un serveur Pi-Hole pourrait se déconnecter. Donc, dans mon réseau maintenant, si le serveur principal s’éteint, le Pi-Hole de secours se déclenche tout simplement et tout continue de fonctionner.
L’importance de synchroniser les instances
Bien qu'avoir deux instances de Pi-Hole soit la moitié de la bataille, vous ne devriez pas vous arrêter là. Avoir deux installations de Pi-Hole sur des machines distinctes est suffisant pour la redondance, mais vous voudrez également les garder synchronisées.
Pourquoi? Garder les instances Pi-Hole synchronisées signifie que toutes les modifications que vous apportez sur le serveur principal sont déplacées vers la sauvegarde. Je fais souvent de petits ajustements à ma configuration Pi-Hole. Cela peut être aussi simple que de changer mon serveur DNS en amont, ou d’ajouter un domaine à la liste d’autorisation/refus, ou même aussi complexe que d’ajouter des enregistrements DNS pour les résolutions de domaine locales.
Il y a environ une semaine, ma femme a cliqué sur le résultat d’une annonce sur la recherche Google pour découvrir qu’elle était bloquée par Pi-Hole. Elle clique fréquemment sur ces premiers résultats (tout comme moi), alors elle m’a demandé si je pouvais corriger cela. J’ai ajouté « www.googleadservices.com » à la liste d’autorisation et hop, ces liens supérieurs fonctionnent à nouveau. Cela fonctionne également lorsque certaines fonctions de suivi de services populaires ne respectent pas les listes de blocage de contenu de Pi-Hole, que vous pouvez modifier pour laisser passer certaines choses.
Quels que soient les changements que j'apporte, je les veux sur les deux installations de Pi-Hole. Je pourrais copier manuellement les modifications, mais cela demande beaucoup de travail et est tout simplement inutile.
Au lieu de cela, j’ai commencé avec un service appelé OrbitalSync pour garder les deux Pi-Holes synchronisés. Cependant, j'ai depuis migré vers NebulaSync car il incluait la prise en charge de Pi-Hole V6 dès le départ. Avec NebulaSync, vous lui donnez les informations du serveur pour vos installations primaires et secondaires (tertiaire, quaternaire et peu importe le nombre que vous avez), et lui donnez des identifiants de connexion, et il gère le processus à partir de là.
Comment synchroniser deux instances Pi-Hole
NebulaSync est un conteneur Docker que vous pouvez exécuter sur n’importe quel hôte Docker. J’utilise Portainer pour gérer mes conteneurs Docker, et cela rend les choses assez simples.
Vous constaterez que le dépôt GitHub de NebulaSync contient un fichier Docker Compose dans le fichier lisez-moi qui contient tout ce dont vous avez besoin pour commencer. Remplacez simplement les caractères fictifs par l'adresse et le mot de passe de votre serveur principal et secondaire, et il sera opérationnel. Le chronomètre inclus est réglé pour fonctionner une fois par heure.
Alors que la prise en charge du Pi-Hole V6 d'OrbitalSync est encore en version bêta, NebulaSync prend en charge la dernière version dès le départ. C’est l’une des raisons pour lesquelles je suis récemment passé d’OrbitalSync à NebulaSync. Quel que soit le logiciel que vous choisissez, j'ai eu beaucoup de succès avec les deux. NebulaSync semble juste être légèrement plus actif dans le développement et l’équipe semble avoir un peu plus de temps derrière lui.
NebulaSync est écrit en Go et est livré avec une autre méthode d'installation si vous n'êtes pas un fan de Docker. Il existe des instructions d’installation binaire de NebulaSync, mais Docker est la façon préférée et recommandée d’exécuter NebulaSync.
Maintenant que Pi-Hole fonctionne sur deux appareils, se synchronisant toutes les heures, pourquoi ne pas donner un coup de jeune au bloqueur de contenu? Découvrez comment j’ai changé le thème de mes installations Pi-Hole pour qu’elles soient un peu plus amusantes et agréables à regarder.


