一、什麼是負載均衡 一、什麼是負載均衡 負載均衡(Load Balance)其意思就是分攤到多個操作單元上進行執行,例如Web伺服器、FTP伺服器、企業關鍵應用伺服器和其它關鍵任務伺服器等,從而共同完成工作任務。 單從字面上的意思來理解就可以解釋N台伺服器平均分擔負載,不會因為某台伺服器負載高宕機而 ...
一、什麼是負載均衡
負載均衡(Load Balance)其意思就是分攤到多個操作單元上進行執行,例如Web伺服器、FTP伺服器、企業關鍵應用伺服器和其它關鍵任務伺服器等,從而共同完成工作任務。 單從字面上的意思來理解就可以解釋N台伺服器平均分擔負載,不會因為某台伺服器負載高宕機而某台伺服器閑置的情況。那麼負載均衡的前提就是要有多台伺服器才能實現,也就是兩台以上即可。 負載均衡建立在現有網路結構之上,它提供了一種廉價有效透明的方法擴展網路設備和伺服器的帶寬、增加吞吐量、加強網路數據處理能力、提高網路的靈活性和可用性。二、負載均衡的優
減少伺服器的壓力,將原本一臺伺服器索要承受的訪問量分給多台,並提高項目的可用性,當一臺伺服器掛掉的時候不會導致項目癱瘓。
三、四層負載均衡和七層負載均衡
四層負載均衡工作在OSI模型的傳輸層,主要工作是轉發,它在接收到客戶端的流量以後通過修改數據包的地址信息將流量轉發到應用伺服器。
七層負載均衡工作在OSI模型的應用層,因為它需要解析應用層流量,所以七層負載均衡在接到客戶端的流量以後,還需要一個完整的TCP/IP協議棧。七層負載均衡會與客戶端建立一條完整的連接並將應用層的請求流量解析出來,再按照調度演算法選擇一個應用伺服器,並與應用伺服器建立另外一條連接將請求發送過去,因此七層負載均衡的主要工作就是代理。 七層負載均衡 也稱為“內容交換”,也就是主要通過報文中的真正有意義的應用層內容,再加上負載均衡設備設置的伺服器選擇方式,決定最終選擇的內部伺服器。
七層負載均衡的優點:這種方式可以對客戶端的請求和伺服器的響應進行任意意義上的修改,極大的提升了應用系統在網路層的靈活性;安全性高。 七層負載均衡,主要還是著重於應用廣泛的HTTP協議,所以其應用範圍主要是眾多的網站或者內部信息平臺等基於B/S開發的系統。 四層負載均衡則對應其他TCP應用,例如基於C/S開發的ERP等系統。四、負載均衡的使用軟體
負載均衡軟體有Nginx、LVS、HaProxy等是目前使用最廣泛的三種負載均衡軟體。
五、負載均衡演算法
-
Round Robin: 對所有的backend輪循發送請求,算是最簡單的方式了,也是預設的分配方式;
-
Least Connections(least_conn): 跟蹤和backend當前的活躍連接數目,最少的連接數目說明這個backend負載最輕,將請求分配給他,這種方式會考慮到配置中給每個upstream分配的weight權重信息;
-
Least Time(least_time): 請求會分配給響應最快和活躍連接數最少的backend;
-
IP Hash(ip_hash): 對請求來源IP地址計算hash值,IPv4會考慮前3個octet,IPv6會考慮所有的地址位,然後根據得到的hash值通過某種映射分配到backend;
-
Generic Hash(hash): 以用戶自定義資源(比如URL)的方式計算hash值完成分配,其可選consistent關鍵字支持一致性hash特性;
六、基於DNS的負載均衡
通常現代的網路服務者一個功能變數名稱會關連到多個主機,在進行DNS查詢的時候,預設情況下DNS伺服器會以round-robin形式以不同的順序返回IP地址列表,因此天然將客戶請求分配到不同的主機上去。不過這種方式含有固有的缺陷:DNS不會檢查主機和IP地址的可訪問性,所以分配給客戶端的IP不確保是可用的(Google 404);DNS的解析結果會在客戶端、多個中間DNS伺服器不斷的緩存,所以backend的分配不會那麼的理想。