[TOC]
## 七層負載均衡的實現
基于URL等應用層信息的負載均衡
Nginx的 proxy是它一個很強大的功能,實現了7層負載均衡
### Nginx負載均衡
內置策略、擴展策略
內置策略: IP Hash、加權輪詢
擴展策略:fair策略、通用hash、一致性hash
#### 內置策略
- 加權輪詢策略
首先將請求都分給高權重的機器,直到該機器的權值降到了比其他機器低,才開始將請求分給下一個高權重的機器
當所有后端機器都down掉時, Nginx會立即將所有機器的標志位清成初始狀態,以避免造成所有的機器都處在 timeout的狀態
- IP Hash
Nginx內置的另一個負載均衡的策略,流程和輪詢很類似,只是其中的算法和具體的策略有些變化
IP Hash算法是一種變相的輪詢算法
#### 擴展策略
- fair策略
根據后端服務器的響應時間判斷負載情況,從中選出負載最輕的機器進行分流
- 通用Hash、一致性Hash策略
通用hash比較簡單,可以以 Nginx內置的變量為key進行hash,致性hash采用了 Nginx內置的一致性hash環,支持 memcache
```nginx
Nginx配置
http{
upstream imooc_cluster {
server 121.42.68.3:8001 weight=10;// 加權中
server 121.42.69.3:8002 weight=9;
#server 121.42.68.3:8003;
#server 121.42.68.4;
}
server {
listen 80;
location / {
proxy_pass http: //imooc_cluster;
}
}
}
```
## 四層負載均衡的實現
通過報文中的目標地址和端口,再加上負載均衡設備設置的服務器選擇方式,決定最終選擇的內部服務器
LVS實現服務器集群負載均衡有三種方式,NAT,DR和TUN