如何在Linux上設定高可用的DNS叢集
引言:
隨著網路的快速發展,DNS (Domain Name System) 作為重要的網路基礎設施之一,扮演著將域名轉換為IP 位址的關鍵角色。在大流量的網路環境中,DNS 伺服器的高可用性就變得至關重要。本文將介紹如何在 Linux 系統上配置高可用的 DNS 集群,並提供一些程式碼範例。
sudo apt-get update sudo apt-get install bind9
/etc/bind/named.conf.local
,並加入以下內容:zone "example.com" { type master; file "/etc/bind/db.example.com"; allow-transfer { IP_ADDRESS_OF_SECONDARY_DNS_SERVER; }; };
注意將example.com
替換為你自己的域名,並將IP_ADDRESS_OF_SECONDARY_DNS_SERVER
替換為輔助DNS 伺服器的IP 位址。
然後,建立網域解析檔案/etc/bind/db.example.com
,並加入下列內容:
; ; BIND data file for example.com ; $TTL 604800 @ IN SOA ns1.example.com. admin.example.com. ( 3 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS ns1.example.com. @ IN A IP_ADDRESS_OF_PRIMARY_DNS_SERVER ns1 IN A IP_ADDRESS_OF_PRIMARY_DNS_SERVER www IN CNAME example.com.
確保將example.com
替換為你自己的域名,並將IP_ADDRESS_OF_PRIMARY_DNS_SERVER
替換為主DNS 伺服器的IP 位址。
/etc/bind/named.conf.local
,並加入以下內容:zone "example.com" { type slave; file "/etc/bind/db.example.com"; masters { IP_ADDRESS_OF_PRIMARY_DNS_SERVER; }; };
同樣地,將example.com
替換為你自己的域名,並將IP_ADDRESS_OF_PRIMARY_DNS_SERVER
替換為主DNS 伺服器的IP 位址。
sudo systemctl start bind9 sudo systemctl enable bind9
首先,安裝 Keepalived 和 HAProxy:
sudo apt-get install keepalived sudo apt-get install haproxy
然後,分別在主 DNS 伺服器和輔助 DNS 伺服器上進行設定。
在主DNS 伺服器上,編輯Keepalived 的設定檔/etc/keepalived/keepalived.conf
,加入以下內容:
global_defs { router_id LVS_DEVEL } vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 100 virtual_ipaddress { IP_ADDRESS_OF_DNS_CLUSTER } }
將IP_ADDRESS_OF_DNS_CLUSTER
替換為用於負載平衡的虛擬IP 位址。
在輔助DNS 伺服器上,編輯Keepalived 的設定檔/etc/keepalived/keepalived.conf
,加入以下內容:
global_defs { router_id LVS_DEVEL } vrrp_instance VI_1 { state BACKUP interface eth0 virtual_router_id 51 priority 99 virtual_ipaddress { IP_ADDRESS_OF_DNS_CLUSTER } }
一樣地,將 IP_ADDRESS_OF_DNS_CLUSTER
替換為用於負載平衡的虛擬IP 位址。
最後,在主DNS 伺服器和輔助DNS 伺服器上分別編輯HAProxy 的設定檔/etc/haproxy/haproxy.cfg
,請參考以下範例:
frontend dns_cluster bind IP_ADDRESS_OF_DNS_CLUSTER:53 mode tcp default_backend dns_servers backend dns_servers mode tcp balance roundrobin server primary_dns IP_ADDRESS_OF_PRIMARY_DNS_SERVER:53 check server secondary_dns IP_ADDRESS_OF_SECONDARY_DNS_SERVER:53 check
確保將IP_ADDRESS_OF_DNS_CLUSTER
替換為用於負載平衡的虛擬IP 位址,並將IP_ADDRESS_OF_PRIMARY_DNS_SERVER
和IP_ADDRESS_OF_SECONDARY_DNS_SERVER
# 和
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>sudo systemctl start keepalived
sudo systemctl start haproxy</pre><div class="contentsignin">登入後複製</div></div>
然後,透過網域解析工具(如
)來測試 DNS 服務是否正常運作。例如執行以下命令: 替換為用於負載平衡的虛擬 IP 位址。 以上是如何在Linux上配置高可用的DNS集群的詳細內容。更多資訊請關注PHP中文網其他相關文章!dig example.com @IP_ADDRESS_OF_DNS_CLUSTER