2026年4月28日 星期二

來談談千禧年之前的老技術之一:DNS Round-Robin

 我早期的工作經驗,大多集中在媒體圈的 ICP,負責系統維護。那是西元2000年之前的年代,也就是 Internet 這個詞剛被發明的年代。那個年代的技術、思考方式,都還很原始。那時候,我們就發現,單一 Web Server,當有重大事件發生時,整個負載會壓得伺服器response非常緩慢。在那個WWW初期的時代,有一個分散伺服器負荷的解決方法,叫 DNS round-robin。也就是,在 DNS zone file 中,把 www A 這項,有幾台就列幾筆,比如說,有三台,那就有三筆列出三個 IP。這樣子,客戶端,也就是瀏覽器端,就會隨機取一筆,瀏覽器取得哪個 IP,你就會使用那一台的伺服器回應你。這樣子,理論上就可以分散伺服器的負載。

我們來總結一下:

DNS Round Robin 是什麼?

DNS 回傳多個 IP:

example.com → 1.1.1.1
→ 2.2.2.2
→ 3.3.3.3

client 隨機(或輪流)選一個連

所以:這是最簡單的 load balancing

它的優點:

1. 幾乎零成本

不用買 load balancer

不用裝軟體

DNS 就能做

2. 架構簡單到不會壞

沒有中間層(沒有 LB)

沒有單點故障(理論上)

比硬體 load balancer 還「穩定」(因為根本沒有它)

3. 水平擴展很直覺

加機器 → 加一筆 A record

4. DNS 層級分流

不用改 code

不用改 server

對 legacy 系統很友善

它的缺點:

 1. 完全「不看負載」

最大硬傷 -> 假平衡(pseudo load balancing)

忙的 server 還是會被分到流量

閒的 server 可能沒流量

2. 沒有健康檢查(最致命缺點)

如果一台掛了:DNS 還是會回它的 IP

使用者就:timeout 連線失敗

除非你手動移除(太慢)

3. DNS cache 讓你失去控制

ISP cache、OS cache、browser cache

結果:流量分布不可預測、failover 很慢(TTL 問題)

4. 無法做「進階 routing」

做不到:session stickiness、path routing(/api → 某台)、user-based routing 全部只能「盲分」

5. 無法防 DDoS

反而更容易被打:攻擊者直接打 IP,沒有任何過濾層,等於每台 server 都暴露在外

6. 不支援現代需求

例如:HTTPS termination、WAF、rate limiting、bot protection,全部做不到


總結優缺點

優點:簡單、便宜、好上手 缺點:不聰明、不可靠、不安全

這是 ChatGPT 對於從那個時代到今天甚至未來,對於網站負載分散技術的演進,給的結論圖:



沒有留言:

張貼留言

來談談千禧年之前的老技術之一:DNS Round-Robin

 我早期的工作經驗,大多集中在媒體圈的 ICP,負責系統維護。那是西元2000年之前的年代,也就是 Internet 這個詞剛被發明的年代。那個年代的技術、思考方式,都還很原始。那時候,我們就發現,單一 Web Server,當有重大事件發生時,整個負載會壓得伺服器respons...