負載均衡實現方式常見的有: 軟件負載均衡、硬件負載均衡、DNS負載均衡
擴展
二層負載均衡:在數據鏈路層,基于MAC地址進行流量分發,較少見于實際應用中
三層負載均衡:在網絡層,基于IP地址來分配流量,例如某些路由器上的負載均衡功能
四層負載均衡:在傳輸層,根據IP地址和TCP/UDP端口號來做決策,直接操作網絡包進行轉發
七層負載均衡:在應用層,可以解析HTTP等協議內容,根據URL、Cookie等信息做更復雜的路由邏輯
軟件負載均衡
軟件負載均衡是最常見的,大小公司都需要用到它軟件負載均衡是通過負載均衡功能的軟件來實現負載均衡
常見的軟件有LVS、Nginx、HAProxy.軟件負載負載均衡又分四層和七層負載均衡。
-
四層負載均衡: 在網絡層利用IP 地址端口進行請求的轉發,基本上就是起個轉發分配作用。
-
七層負載均衡: 可以根據訪問用戶的 HTTP 請求頭、URL 信息將請求轉發到特定的主機。
LVS 為四層負載均衡。Nginx、HAProxy 可四可七
Nginx 通常只用它來做七層負載,LVS來做四層負載。LVS 所以常見的也有這樣的搭配
軟件負載均衡的優點在于便宜而且簡單靈活,缺點在于(和硬件負載均衡比)性能一般,流量很大的企業就用軟件負載均衡頂不住
負載均衡有什么策略
負載均衡有很多種策略,這里主要介紹的是一些核心的負載均衡算法,常見的大致如下
-
輪詢算法(Round Robin)
: 主要就是按照順序將請求分配給后端服務器 -
加權輪詢算法(Weighted Round Robin)
: 在輪詢算法的基礎上添加權重的概念。對后端每個服務器賦予一個權重值,權重值越高,其被選中的概率就越大 -
隨機算法(Random)
: 將請求隨機分配給后端服務器,每個后端服務器被選中的概率一致,不考慮服務器的負載情況。缺點和輪詢類似,如果后端服務器的性能差得很多,就容易導致性能較強的服務器閑置 -
加權隨機算法(Weight Random)
: 在隨機算法基礎上,就可以根據服務器的性能設置對應的權值了,然后根據服務器的性能和處理能力調整對應的權重,減少性能強的服務器大的閑置時間。 -
最少連接算法(Least Connection)
: 根據后端服務器當前的連接數來決定請求的分配,負載均衡器會選擇當前連接最少的服務器進行請求分配,保證后端服務器的負載均衡 -
哈希算法(Hash)
: 根據請求的某個特定關鍵字來實現負載均衡的,比如通過請求的 URL 路徑、請求的IP 地址等來計算哈希值,然后根據哈希值選擇相應的后端服務器,比如 Redis 集群采用的就是這種負載均衡方式。