**負載均衡是高有效性最基本的問題之一, 有了一堆電腦, 接下來的問題就是如何分派 (Dispatch) 工作了, 而讓工作能夠均勻分擔到每一台機器, 且當機器有不正常時, 能夠避開此機器轉給其他機器, 這就是 Load Balance 負載均衡的用途.
要了解負載均衡之前, 要了解幾件事情:
要在流程那個環節去分配
分配的方法與方式
要如何做容錯 Fault Tolerance
這設備/機制本身的極限**
在確立這幾件事後, 通常的流程環節有幾種方式:
透過 DNS 在決定目標之前就 Load Balance
在封包流程就做 Load Balance
在資訊處理時做 Load Balance
在儲存的時候去做 Load Balance
當然若是要在儲存的時候去做分流的話, 就要考慮 Replication 複製的方法與方法, 但這也牽涉到資料庫種類的選擇.
但整體而言, Load Balance 有幾個元件:
Watch Dog
Dispatcher
Proxy
這細節的設計是可以寫成一本書, 事實上的確就是有不少專書就是講如何利用與設計 Load Balancer.
只是這部份現在已經被三個時代的進步所影響:
Blade Server: 因為有了 Blade Server, 很多藕合的事不見得是要靠獨立的 Load Balancer.
Virtual Machine: 由於有了 VM 的概念, 一台機器可能有很多個 VM, 相對的一個 VM 也可能是很多台機器, Load Balancing 的方式也跟著改變.
Cloud: 在某方面, Cloud 只是把 LB 以及 VM 給抽象化, 設計者可以不用管這方面的操作與 Know-How, 但事實上是使用相同的技術.
在一個大型的系統, 負載均衡是個 Multi-Tiers 多層的架構, 甚至應該說每一個功能或層級都本身就可以自我的 LB, 所以每一件事都要想到如何把工作 "純量化" (Scale) , 這樣才能夠在可被純量化的區間去分派工作, 也就是 Multi-Processing.
或許以後大家可以不用管這部份的事, 因為在未來很多系統本身就有設計到, 但基礎概念是一定要會的, 這樣才有足夠的程度可以升級.
大家有空可以去看本 DNS 的書 (DNS 本身就是很不錯的 HA 與 LB 的系統設計), 以及一本 Load Balance 的專書, 這樣才能夠面對不同的設計與挑戰不會捉襟見肘.