**在寫了由上到下有關高有效性的關點後, 接下來的 15 天/篇, 就會寫一些 "基礎技術", "進階閱讀", 與 "案例介紹", 其他我再看看有甚麼可以寫的, 但不怕不夠寫, 只怕寫不完, 呵....
在網路系統中, 我最推崇的就是 網址 Domain Name System 系統, 因為這是一個可以最單純, 但也可以很複雜, 感覺做不了甚麼事, 但卻也是可以變出很多功能的一個系統, 我在每一個顧問公司, 都會鼓勵非技術人員去唸一本 DNS 的專書, 這是有原因的:
網址 Domain Name 是企業識別行銷很重要的一環.
網址是個很有商業價值的事.
網址會跟 Mail 有很大的聯結性, 也是很重要的識別.
DNS 的設定是獨立運作最基本的須要有概念的事情.
網址系統是個很不錯的高有效性範例.
網址的與 Mail 的設定也是很不錯的高有效性系統架構.
網址系統可以做最基本的 Server Load Balance.
DNS 是 Global Server Load Balance 一個會用到的技術.
很多使用者問題都會出現在 DNS 的問題, 且很難去控制.
DNS 是一個很容易被人誤解的系統, 你若看了, 就代表有所進步.**
當然我已經說過我寫文章是不想寫 "Me, too", 有關大部份的 DNS 問題只要去看一本專書就比我在這邊講的更完整, 也不是我該寫的, 尤其是高有效性這部份, 但這邊也提一下 DNS 有那些很重要的機制可以做高有效性的參考.
利用 SOA 來作同步與資料查詢的 Watermark (浮水印).
本身就有備援機制與同步機制.
利用 TTL (Time to Live) 來作資料有效性的設定.
利用 NS Record 可以做授權或 Delegate.
MX Record 就有權重來做 Fail Over.
後期在 Security 有做進一步的保護 (之前也曾出現不只一次的問題).
只利用 Bind 就可以做 Round-Robin 的 Load Balance.
利用 Delegate 的方式也可以做到某些狀態的 Fail Over 機制.
etc.
而 DNS 只靠 Bind 就可以做 Round-Robin 的 Load Balance 就是指說相同的 Record 記錄不止出現一筆的話, Bind 就會回應這些不同的記錄, 且通常第一筆是依序的, 也就是 Round Robin, 雖然說 RR 沒辦法有權重, 但若 A 記錄出現 3 次, B 記錄出現 2 次, C 記錄出現一次, 就代表其回應解答是 A:B:C=3:2:1.
這是一個最最簡單的靠 DNS 做 Load Balance 的機制, 但最麻煩的是這沒辦法 Fail Over, 也就是說若機器掛掉的話, DNS (Bind) 無法知道, 所以我們必須做幾個方式來解決.
做一個 Watch-Dog, 寫不同的設定檔, 但發現無法連線時就換不同的 DNS 的設定檔, 然後啟動就可以做 Fail Over.
利用 Delegate (NS 的子網域), 讓被授權的機器自己本身來回答, 也就是當這機器本身是活得的時候才會回答的到, 但這可能會有 DNS 本身是活的, 但真正做事的 Daemon 是死的的問題, 但這可以解決網路層的問題, 且這個不是 Round Robin 的.
利用 MyDNS 取代 Bind, 本身 Watch Dog 就可以對 MySQL 做操作, 就可以去做 Fail Over.
但 MyDNS 的效率的問題, 以及管理的 Record 過多的話, 會有效率負荷 Loading 的問題, 雖然其 Table 可以用記憶體 Heap 來解決, 但並不是所有的 Domain 都是動態的, 所以可以嘗試著用 MySQL Bind SDB Driver 來做部份是用 MySQL 來管理就好.
事實上 DNS 可以玩的東西很多, 下次來寫一個有關 GSLB 的實作經驗, 但 Domain Name 在某方面是須要有很多 Trouble Shooting 的工具與經驗, 因為 DNS 本身的 Cache 機制就很複雜, 甚至系統也不是只有一套 Name Server 的 Lookup 查詢系統時會更複雜.
在某些 Hacking 的方式中, 都是利用 DN 的自定 (欺騙) 來達到竊聽等等的目的, 所以真的多了解 DNS 是無妨的.