Nếu bạn đang vận hành một máy chủ Pi-Hole, có lẽ bạn đã từng trải qua tình trạng gián đoạn mạng mỗi khi cần cập nhật hoặc khởi động lại máy chủ. Điều này xảy ra do Pi-Hole thường là nhà cung cấp DNS duy nhất cho mạng của bạn, và khi nó ngừng hoạt động, các thiết bị sẽ không thể truy cập internet. Để khắc phục vấn đề này và đảm bảo mạng luôn ổn định, giải pháp hiệu quả là chạy hai phiên bản Pi-Hole song song. Bài viết này sẽ hướng dẫn bạn cách thiết lập hệ thống Pi-Hole dự phòng và đồng bộ chúng, giúp mạng nhà bạn hoạt động liên tục ngay cả khi một trong hai máy chủ gặp sự cố.
Tại Sao Nên Chạy Hai Phiên Bản Pi-Hole?
Ban đầu, việc sử dụng Pi-Hole như một công cụ chặn nội dung và quản lý DNS rất tiện lợi. Tuy nhiên, điểm yếu lớn nhất là khi máy chủ Pi-Hole cần bảo trì, toàn bộ mạng sẽ bị ngắt kết nối. Nguyên nhân là vì hầu hết các router đều được cấu hình để sử dụng hai máy chủ DNS để tăng cường tính dự phòng (redundancy). Với một phiên bản Pi-Hole duy nhất, bạn đang đặt toàn bộ sự tin cậy vào một máy chủ DNS độc lập.
Tuy nhiên, nếu bạn có hai máy chủ Pi-Hole riêng biệt đang hoạt động, bạn sẽ có một máy chủ chính và một máy chủ dự phòng. Với thiết lập này, khi một Pi-Hole gặp sự cố, máy chủ còn lại sẽ tự động tiếp quản. Trong hệ thống homelab của mình, tôi đã triển khai chính xác mô hình này. Máy chủ ứng dụng chính của tôi chạy phiên bản Pi-Hole sơ cấp, và tôi có một chiếc Raspberry Pi 3 B cũ hơn chạy phiên bản Pi-Hole dự phòng.
Mô tả hình ảnh Google Fiber modem gắn trên tường, tượng trưng cho hạ tầng mạng
Nếu Raspberry Pi 3 B gặp sự cố, không có gì đáng lo ngại vì phiên bản Pi-Hole chính vẫn đang hoạt động. Nhưng nếu máy chủ ứng dụng chính của tôi vì bất kỳ lý do nào đó mà ngừng hoạt động, thì chiếc Pi 3 B sẽ nhanh chóng chuyển sang vai trò dự phòng. Điều này đảm bảo rằng các thiết bị trong mạng vẫn có thể phân giải tên miền và truy cập internet một cách bình thường, duy trì hoạt động chặn quảng cáo không gián đoạn.
Tại sao một máy chủ lại có thể ngừng hoạt động? Có vô số lý do. Lý do phổ biến nhất là việc cập nhật Pi-Hole. Cập nhật container Docker hoặc hệ điều hành máy chủ có thể khiến Pi-Hole tạm thời ngừng hoạt động trong vài giây hoặc thậm chí lâu hơn, tùy thuộc vào phần cứng. Nếu có lỗi xảy ra và một tệp cấu hình bị hỏng hoặc sai sót, thời gian ngừng hoạt động có thể còn kéo dài hơn.
Thiết bị Raspberry Pi 3 B, một lựa chọn phổ biến cho homelab và Pi-Hole dự phòng
Các lý do khác có thể bao gồm bảo trì máy chủ. Tôi có thể tắt máy ảo chứa container Docker để nâng cấp RAM, hoặc thậm chí tắt toàn bộ máy chủ nếu tôi di chuyển nó trong rack hoặc bảo trì cáp mạng. Có rất nhiều tình huống khiến một máy chủ Pi-Hole có thể ngoại tuyến. Do đó, với hệ thống mạng của tôi hiện tại, nếu máy chủ chính tắt, Pi-Hole dự phòng sẽ kích hoạt và mọi thứ vẫn tiếp tục hoạt động trơn tru.
Biểu tượng Docker đặt trên bàn phím máy tính xách tay, minh họa vai trò của Docker trong triển khai Pi-Hole
Tầm Quan Trọng Của Việc Đồng Bộ Các Phiên Bản Pi-Hole
Mặc dù việc có hai phiên bản Pi-Hole đã giải quyết được một nửa vấn đề, bạn không nên dừng lại ở đó. Có hai cài đặt Pi-Hole trên các máy riêng biệt đủ để đảm bảo tính dự phòng, nhưng bạn sẽ muốn giữ chúng được đồng bộ hóa.
Tại sao? Việc giữ các phiên bản Pi-Hole được đồng bộ có nghĩa là mọi thay đổi bạn thực hiện trên máy chủ chính sẽ tự động được chuyển sang máy chủ dự phòng. Tôi thường xuyên thực hiện các tinh chỉnh nhỏ đối với cấu hình Pi-Hole của mình. Đó có thể là việc thay đổi máy chủ DNS upstream, thêm một miền vào danh sách cho phép/chặn, hoặc thậm chí phức tạp hơn như thêm các bản ghi DNS cho phân giải miền cục bộ.
Giao diện dashboard Pi-hole v6, hiển thị trạng thái và thống kê chặn quảng cáo
Ví dụ, cách đây không lâu, vợ tôi đã nhấp vào một kết quả quảng cáo trên Google Search nhưng bị Pi-Hole chặn. Cô ấy thường xuyên nhấp vào các liên kết hàng đầu đó (tôi cũng vậy), nên cô ấy hỏi liệu tôi có thể khắc phục được không. Tôi đã thêm “www.googleadservices.com” vào danh sách cho phép và ngay lập tức, các liên kết hàng đầu đó đã hoạt động trở lại. Điều này cũng áp dụng khi các chức năng theo dõi của một số dịch vụ phổ biến bị lỗi với danh sách chặn nội dung của Pi-Hole.
Bất kể tôi thực hiện thay đổi nào, tôi muốn chúng xuất hiện trên cả hai cài đặt Pi-Hole. Tôi có thể sao chép các thay đổi thủ công, nhưng việc đó tốn rất nhiều công sức và hoàn toàn không cần thiết. Thay vào đó, tôi bắt đầu với một dịch vụ có tên là OrbitalSync để giữ hai Pi-Hole được đồng bộ. Tuy nhiên, tôi đã chuyển sang NebulaSync vì nó đã bao gồm hỗ trợ Pi-Hole V6 ngay từ đầu. Với NebulaSync, bạn cung cấp thông tin máy chủ cho Pi-Hole chính và dự phòng (hoặc nhiều hơn), cùng với thông tin đăng nhập, và nó sẽ xử lý quá trình đồng bộ hóa một cách tự động.
Hướng Dẫn Đồng Bộ Hai Phiên Bản Pi-Hole Với NebulaSync
NebulaSync là một container Docker mà bạn có thể chạy trên bất kỳ Docker host nào. Tôi sử dụng Portainer để quản lý các container Docker của mình, và nó giúp quá trình này trở nên khá đơn giản.
Bạn sẽ tìm thấy một tệp Docker Compose trong phần readme của kho lưu trữ GitHub cho NebulaSync, tệp này chứa mọi thứ bạn cần để bắt đầu. Chỉ cần thay thế các ký tự giữ chỗ bằng địa chỉ máy chủ và mật khẩu của Pi-Hole chính và dự phòng của bạn, và nó sẽ hoạt động. Bộ hẹn giờ cron đi kèm được đặt để chạy mỗi giờ một lần.
Đồng hồ và thời gian, biểu thị tính năng Cron Job tự động đồng bộ hóa Pi-Hole
Trong khi OrbitalSync vẫn đang trong giai đoạn beta cho phiên bản Pi-Hole V6, NebulaSync đã hỗ trợ phiên bản mới nhất ngay từ khi ra mắt. Đây là một trong những lý do chính khiến tôi chuyển từ OrbitalSync sang NebulaSync gần đây. Bất kể bạn chọn phần mềm nào, tôi đều đã có những trải nghiệm tuyệt vời với cả hai. NebulaSync dường như có hoạt động phát triển tích cực hơn và đội ngũ phát triển dường như có nhiều thời gian hơn để cải tiến nó.
Trình chặn nội dung Pi-Hole với giao diện chủ đề Star Trek LCARS, thể hiện khả năng tùy biến
NebulaSync được viết bằng Go và đi kèm với một phương pháp cài đặt thay thế nếu bạn không phải là người hâm mộ Docker. Có các hướng dẫn cài đặt binary NebulaSync cho Linux/OSX, nhưng Docker là cách được ưu tiên và khuyến nghị để chạy NebulaSync.
Kết Luận
Việc thiết lập hệ thống Pi-Hole dự phòng và đồng bộ hóa chúng là một bước quan trọng để đảm bảo sự ổn định và liên tục của mạng tại nhà. Bằng cách loại bỏ điểm lỗi duy nhất của một máy chủ Pi-Hole, bạn sẽ không còn phải lo lắng về việc gián đoạn mạng mỗi khi cập nhật hoặc bảo trì. Với các công cụ như NebulaSync, quá trình đồng bộ hóa trở nên hoàn toàn tự động, giúp bạn duy trì các cấu hình chặn quảng cáo và quản lý DNS nhất quán trên toàn bộ hệ thống. Hãy áp dụng giải pháp này để nâng cao trải nghiệm mạng và tận hưởng khả năng chặn quảng cáo không gián đoạn, ngay cả khi một máy chủ Pi-Hole của bạn ngừng hoạt động. Khám phá thêm các mẹo và thủ thuật để tối ưu hóa Pi-Hole của bạn ngay hôm nay!