DNS是網絡的基礎服務,網絡上的各類應用對DNS的依賴性很高。DNS的穩定,直接決定了上層應用服務的穩定。那如何保障DNS服務的高可用呢?
咱們先來看下高可用的概念:算法
高可用(High availability):指系統無中斷地執行其功能的能力,通常用下面的公式來衡量:
數據庫
管控層最主要的兩個功能: DNS數據的持久化,DNS數據下發到adns(dnsserver)。
安全
1 數據持久化
管控層接收用戶配置的域名數據後,持久化存儲在數據庫。利用了數據庫團隊的X-Cluster產品,實現數據的高可用,消除了運維誤操做等緣由致使的數據丟失:
數據庫採用三地五副本,同城強同步方案部署;
數據庫各個節點間採用Paxos 協議選主,在任意階段出現問題後,數據內部自選主切換;
應用機房部署與數據庫解耦,能夠任意機房部署;
在數據庫Leader 故障場景下,數據庫會自動發生切換,應用連入任意節點獲取當前Leader 位置後恢復應用業務。
服務器
2 數據下發
管控與adns之間,主要經過穩定的內部網絡來下發數據,數據傳輸出錯的機率低;
管控向adns發送數據時,有數據補償機制,對與下發失敗,作屢次重試,若是重試都沒法成功,報警轉人工處理。網絡
解析層由adns集羣組成,部署在全球的上百個idc機房,經過anycast發佈大量的服務ip。用戶向這些ip發送dns請求,獲取解析結果。
1 消除單點
解析層主要靠消除單點實現failover,來減小故障。架構
2 系統容量
監控系統實時監控各個服務器、集羣的qps容量;
adns集羣,部署上具有水平擴容能力,容量能達到機房的帶寬。運維
3 如何保證解析正確
部署數據對帳系統,對adns之間作數據對比,adns與管控的DB作數據對比;
部署撥測系統,對zone的soa作撥測,對特定域名的rr記錄作撥測;
經過上面的兩類手段,及時發現數據異常並做出響應,避免異常或者縮短異常的處理時間。
通常經過摘除有問題的服務器的路由,幾秒鐘便可生效。tcp
4 安全防禦
做爲面向公網的服務,網絡攻擊沒法避免,會影響系統可用性。咱們採用了下面兩類安防手段,提升dns的可用性。
1) 網絡攻擊防禦
常見的dns攻擊,是4層的ddos攻擊。對於超大流量的網絡攻擊,利用機房部署的aliguard,作網絡防禦;
爲了減小ddos防禦系統對dns的影響,咱們設置了很高的防禦閾值,對應閾值之下的ddos攻擊,經過咱們高性能的dnsserver(adns)來承載攻擊。
2) 應用安全
爲了應對DNS投毒、欺騙等場景,咱們的dnsserver,支持dnssec;
爲了應對DNS劫持,咱們支持有鏈接的協議,好比tcpdnshttpdnstlsdoh;
用戶能夠根據本身的需求,選擇合適的安全方案。性能