1. 程式人生 > 實用技巧 >Nginx 負載均衡配置

Nginx 負載均衡配置

作為代理伺服器,一般都需要向上遊伺服器的叢集轉發請求,而叢集需要將請求進行平均分配,將叢集的負載能力運用到最大,這篇文章主要記錄一下Nginx關於負載均衡的配置: 1.upstream 語法:upstream name{...} 配置塊:http 該配置定義了一個上游伺服器叢集,便於請求反向代理(proxy_pass)使用:
 1 upstream backend {
 2     server backend1.example.com;
 3     server backend2.example.com;
 4     server backend3.example.com;
5 } 6 server { 7 location / { 8 proxy_pass http://backend; 9 } 10 }

2.server 語法:server name[parameters]; 配置塊:upstream server配置指定一臺上游伺服器,可以使用域名、ip地址埠、unix控制代碼等,而且可以新增如下引數: 1)weight=number:轉發權重,權重越大,分配到的請求數越大,可以根據上游伺服器的具體資源情況分配 2)max_fails=number:該引數與fail_timeout配合使用,在fail_timeout時間段中,如果轉發失敗的次數超過了number,Nginx將會把這臺上遊伺服器標記為不可用。 3)fail_time=time:一般與上一個引數配合使用,不再介紹。 4)down:表示上游伺服器永久下線(只在使用ip_hash配置時有用)。 5)backup:在ip_hash配置時無效,表示上游伺服器只是備份伺服器,只有在所有非備份伺服器無效才能向備份伺服器轉發請求。 如:
1
upstream backend { 2 server backend1.example.com weight=5; 3 server 127.0.0.1.8080 max_fails=3 fail_timeout=30s; 4 server unix:/tmp/backend3; 5 }

3.ip_hash 語法:ip_hash; 配置塊:upstream 該配置表示根據使用者請求的ip地址進行hash,來分配上游伺服器,主要用於每一個使用者請求需要轉發給一臺固定的上游伺服器的情景。 注:ip_hash與weight配置不能一起使用,倆種策略完全不同,存在衝突。如果upstream叢集中有一臺上游伺服器暫時不可以,我們需要將這臺伺服器置為down狀態,而不是將其刪除,這個可以保證轉發策略的一貫性。 如:
1
upstream backend{ 2 ip_hash; 3 server backend1.example.com; 4 server backend2.example.com; 5 server backend3.example.com down; 6 server backend4.example.com; 7 }

4.日誌記錄 如果我們需要在日誌中加入負載均衡的資訊,可以在定義日誌格式的時候使用負載均衡功能提供的變數: 1)$upstream_addr:處理請求的上游伺服器地址 2)$upstream_cache_status:是否命中快取 3)$upstream_status:上游伺服器返回的HTTP狀態碼 4)$upstream_response_time:上游伺服器的響應時間,單位-毫秒 5)$upstream_http_$HEADER:HTTP頭部 如:
1 log_format timimg '$remote_addr - $remote_user [$time_local] $request'
2     'upstram_response $upstream_response_time'
3     'mses $msec request_time $request_time';
4 log_format up_head '$remote_addr - $remote_user [$time_local] $request'
5     'upstream_http_content_type $upstream_http_content_type';