增加服務器數量,將請求分配到多個服務器
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
# -------------------------------------------------------------------------------------
# 配置負載均衡的SERVER IP地址
upstream myserve {
server 192.168.1.104:8001 weight=5;
server 192.168.1.104:8000 weight=10;
}
server {
listen 80;
server_name www.abc.com;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://myserve;
root html;
index index.html index.htm;
}
}
# -------------------------------------------------------------------------------------
}
- 首先啓動兩個或多個服務器地址+端口,進行配置
- 配置成功之後,訪問的時候,默認會進行輪詢,刷新第一次訪問服務器A,刷新第二次訪問服務器B,依次刷新切換。
隨着互聯網信息的爆炸性增長,負載均衡(load balance)已經不再是一個很陌生的話題,顧名思義,負載均衡即是將負載分攤到不同的服務單元,既保證服務的可用性,又保證響應足夠快,給用戶很好的體驗。快速增長的訪問量和數據流量催生了各式各樣的負載均衡產品,很多專業的負載均衡硬件提供了很好的功能,但卻價格不菲,這使得負載均衡軟件大受歡迎,nginx 就是其中的一個,在 linux 下有 Nginx、LVS、Haproxy 等等服務可以提供負載均衡服務。
Nginx 提供了幾種分配方式(策略):
- 輪詢(默認)
每個請求按時間順序逐一分配到不同的後端服務器,如果後端服務器 down 掉,能自動剔除。 - weight(權重)
weight 代表權,重默認爲 1,權重越高被分配的客戶端越多指定輪詢機率,weight 和訪問比率成正比,用於後端服務器性能不均的情況。 例如:
upstream myserve {
server 192.168.1.104:8001 weight=5;
server 192.168.1.104:8000 weight=10;
}
- ip_hash
每個請求按訪問 ip 的 hash 結果分配,這樣每個訪客固定訪問一個後端服務器,可以解決 session 的問題。
upstream myserve {
ip_hash;
server 192.168.1.104:8001;
server 192.168.1.104:8000;
}
- fair (第三方)
按後端服務器的響應時間來分配請求,響應時間短的優先分配。