1. 程式人生 > >關於負載均衡、叢集、分散式之間的聯絡

關於負載均衡、叢集、分散式之間的聯絡

upstream example.com.backend {
    #ip_hash; #根據來源IP和後端配置來做hash分配,確保固定IP只訪問一個後端
    server 192.168.0.1:9000 weight=2; #weight預設為1,值越大,這臺server負載的權重就越大
    server 192.168.0.2:9000 down; #down表示此臺server暫時不參與負載,可以和ip_hash一起使用
    server 192.168.0.3:9000 max_fails=3 fail_timeout=30s;
    #max_fails表示允許請求失敗的次數,預設為1.當超過最大次數時,返回fastcgi_next_upstream模組定義的錯誤.
    #fail_timeout表示max_fails次失敗後,暫停的時間,預設是10秒.
    server 192.168.0.4:9000;
    server 192.168.0.5:9000;
    server 192.168.0.6:9000 backup; #當其他非backup伺服器down或者busy的時候,請求backup機器,屬於應急措施,實現高可用,不能和ip_hash一起使用
}
server {
    location ~ \.php$ {
        #訪問不存在的php頁面返回404
        try_files $uri =404;
        #如果後端的伺服器返回執行超時等錯誤,自動將請求轉發到upstream負載均衡池中的另一臺伺服器,實現故障轉移(高可用)。
        fastcgi_next_upstream error timeout invalid_header;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_index index.php;
        #把這臺server的php動態請求fastcgi_pass給upstream(上游)後端伺服器叢集
        fastcgi_pass example.com.backend;
    }
}
均衡負載 體現在Nginx會把PHP請求均勻地傳送給upstream裡的PHP-FPM進行處理.
叢集 體現在upstream裡不同IP的伺服器提供同樣的PHP-FPM服務.
分散式 體現在即使upstream裡有伺服器崩了,Nginx也能自動進行故障轉移.

上面的PHP-FPM換成Java Tomcat也是一樣的道理.

轉自:http://segmentfault.com/q/1010000003052403