Резюме
- Запуск одного экземпляра Pi-Hole означает, что вся ваша сеть выйдет из строя при возникновении ошибок обновлений или конфигурации.
- Два экземпляра Pi-Hole обеспечивают избыточность, то есть ваша сеть может оставаться в сети, даже если один из серверов отключен для обновления, замены оборудования или изменения конфигурации.
- Поддержание синхронизации экземпляров Pi-Hole (с помощью чего-то вроде NebulaSync) имеет решающее значение, поскольку это позволяет автоматически переносить изменения, внесенные на основном сервере, на резервный.
Если вы используете сервер Pi-Hole, вы, вероятно, как и я, сталкивались с простоями при обновлении или перезагрузке сервера. Чтобы исправить это, я запустил два экземпляра Pi-Hole. Вот как я это сделал, и как я также синхронизирую их.
Зачем запускать два экземпляра Pi-Hole?
Я впервые попробовал Pi-Hole несколько лет назад, и он был хорош как блокировщик контента и менеджер DNS. Однако, когда мне приходилось проводить техническое обслуживание машины, на которой он был, вся моя сеть выходила из строя. Pi-Hole был моим единственным поставщиком DNS, и без него мои компьютеры не знали, как получить доступ к Интернету.
Итак, я отказался от Pi-Hole на тот момент. Спустя несколько лет я увидел, что кто-то запускает два экземпляра Pi-Hole, и мне стало интересно, почему. Ответ прост, и это решение моей предыдущей проблемы: избыточность.
Большинство маршрутизаторов могут использовать два DNS-сервера для избыточности. С одним экземпляром Pi-Hole вы полагаетесь только на один DNS-сервер. Однако если у вас запущены два отдельных Pi-Holes, то есть и первичный, и вторичный.
При таком типе настройки, когда один Pi-Hole выходит из строя, другой занимает его место. Когда я переделывал свою домашнюю лабораторию, я сделал именно это. Мой основной сервер приложений запускает мой основной экземпляр Pi-Hole, но у меня также есть старый Raspberry Pi 3 B, который запускает резервный экземпляр Pi-Hole.
Raspberry Pi 3 B — это одноплатный компьютер (SBC) с четырехъядерным процессором 1.2 ГГц и 1 ГБ оперативной памяти. Благодаря Gigabit Ethernet и выходу HDMI он становится отличным небольшим маломощным устройством для запуска служб умного дома или домашней лаборатории, таких как Home Assistant, Homebridge, Pi-Hole или другого программного обеспечения.
$35 в CanaKit
Если Pi 3B выйдет из строя, ничего не произойдет, так как мой основной экземпляр Pi-Hole установлен как основной DNS-сервер. Однако если мой сервер приложений выйдет из строя по какой-либо причине, то Pi 3B поднимется в качестве резервного.
Почему сервер может выйти из строя? Ну, по множеству причин. Главная из них — простое обновление Pi-Hole. Обновление контейнера Docker или хоста может вывести его из строя на несколько секунд или даже дольше, в зависимости от оборудования, на котором вы запускаете Pi-Hole. Если что-то случится и файл конфигурации будет испорчен или поврежден, то он может быть отключен еще дольше.
Другой причиной может быть просто обслуживание сервера. Я могу выключить виртуальную машину, в которой находится контейнер Docker, чтобы добавить в нее больше оперативной памяти, или даже выключить весь сервер, если я перемещаю его в стойку или выполняю обслуживание сетевых кабелей вокруг него.
Существует множество причин, по которым сервер Pi-Hole может выйти из строя. Так, в моей сети сейчас, если основной сервер отключается, резервный Pi-Hole просто включается, и все продолжает работать.
Важность синхронизации экземпляров
Хотя наличие двух экземпляров Pi-Hole — это половина дела, не стоит останавливаться на этом. Наличие двух установок Pi-Hole на отдельных машинах достаточно для избыточности, но вам также нужно будет синхронизировать их.
Почему? Синхронизация экземпляров Pi-Hole означает, что любые изменения, которые вы вносите на основном сервере, переносятся на резервный. Я часто вношу небольшие изменения в конфигурацию Pi-Hole. Это может быть что-то простое, например, смена моего DNS-сервера верхнего уровня или добавление домена в список разрешенных/запрещенных, или даже что-то сложное, например, добавление записей DNS для локальных разрешений доменов.
Всего неделю назад моя жена нажала на результат поиска Google и обнаружила, что он заблокирован Pi-Hole. Она часто нажимает на эти верхние результаты (как и я), поэтому она спросила, могу ли я это исправить. Я добавил «www.googleadservices.com» в список разрешенных, и вуаля, эти верхние ссылки теперь снова работают. Это также работает, когда определенные функции отслеживания популярных сервисов нарушают списки блокировки контента Pi-Hole, которые вы можете изменить, чтобы разрешить определенные вещи.
Независимо от того, какие изменения я делаю, я хочу, чтобы они были на обеих установках Pi-Hole. Я мог бы вручную скопировать изменения, но это требует много работы и просто не нужно.
Вместо этого я начал с сервиса OrbitalSync, чтобы синхронизировать два Pi-Hole. Однако с тех пор я перешел на NebulaSync, поскольку он изначально включал поддержку Pi-Hole V6. С NebulaSync вы сообщаете ему информацию о сервере для ваших первичных и вторичных (третичных, четвертичных и сколько угодно) установок, и даете ему учетные данные для входа, и он обрабатывает процесс оттуда.
Как синхронизировать два экземпляра Pi-Hole
NebulaSync — это контейнер Docker, который можно запустить на любом хосте Docker. Я использую Portainer для управления контейнерами Docker, и это делает все довольно просто.
Вы найдете репозиторий GitHub для NebulaSync с файлом Docker Compose в readme, в котором есть все необходимое для начала работы. Просто замените символы-заполнители на адрес и пароль вашего основного и дополнительного сервера, и все будет готово. Включенный таймер chron настроен на запуск один раз в час.
В то время как поддержка Pi-Hole V6 от OrbitalSync все еще находится в стадии бета-тестирования, NebulaSync поддерживает последнюю версию с самого начала. Это одна из причин, по которой я недавно перешел с OrbitalSync на NebulaSync. Независимо от того, какое программное обеспечение вы выберете, я имел большой успех с обоими. NebulaSync, похоже, просто немного более активен в разработке, и у команды, похоже, есть немного больше времени для этого.
NebulaSync написан на Go и поставляется с альтернативным методом установки, если вы не являетесь поклонником Docker. Существуют инструкции по установке бинарных файлов NebulaSync, но Docker является предпочтительным и рекомендуемым способом запуска NebulaSync.
Теперь, когда Pi-Hole запущен и работает на двух устройствах, синхронизируясь каждый час, почему бы не обновить блокировщик контента? Посмотрите, как я изменил тему своих установок Pi-Hole, чтобы она стала немного веселее и приятнее на вид.