一、負載均衡配置
upstream blogServer{
server 127.0.0.1:8080;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://blogServer;
}
}
這裏需要注意,集羣名稱不能使用下劃線_,否則會導致無法解析。
二、解決跨域
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://blogServer;
add_header Access-Control-Allow-Methods *;
add_header Access-Control-Max-Age 3600;
add_header Access-Control-Allow-Credentials true;
add_header Access-Control-Allow-Origin $http_origin;
add_header Access-Control-Allow-Headers $http_access_control_request_headers;
if ($request_method = OPTIONS ) {
return 200;
}
}
}
三、失敗跳轉問題
在配置負載均衡後,當集羣中當請求發送到一臺壞的服務區後,出現一段等待響應過程的過程,要等它失敗,纔會跳轉其他服務。 這個時間由以下3個參數控制:
proxy_connect_timeout:與服務器連接的超時時間,默認60s
fail_timeout:當該時間內服務器沒響應,則認爲服務器失效,默認10s
max_fails:允許連接失敗次數,默認爲1
等待時間 = proxy_connect_timeout + fail_timeout * max_fails
四、負載均衡策略
1、輪詢
這種是默認的策略,把每個請求按順序逐一分配到不同的server,如果server掛掉,能自動剔除。
upstream fengzp.com {
server 192.168.99.100:42000;
server 192.168.99.100:42001;
}
2、最少連接
把請求分配到連接數最少的server
upstream fengzp.com {
least_conn;
server 192.168.99.100:42000;
server 192.168.99.100:42001;
}
3、最少連接
使用weight來指定server訪問比率,weight默認是1。以下配置會是server2訪問的比例是server1的兩倍。
upstream fengzp.com {
server 192.168.99.100:42000 weight=1;
server 192.168.99.100:42001 weight=2;
}
4、ip_hash
每個請求會按照訪問ip的hash值分配,這樣同一客戶端連續的Web請求都會被分發到同一server進行處理,可以解決session的問題。如果server掛掉,能自動剔除。
upstream fengzp.com {
ip_hash;
server 192.168.99.100:42000;
server 192.168.99.100:42001;
}
ip_hash可以和weight結合使用。