關於負載均衡、叢集、分散式之間的聯絡
阿新 • • 發佈:2019-02-07
均衡負載 體現在Nginx會把PHP請求均勻地傳送給upstream裡的PHP-FPM進行處理.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; } }
叢集 體現在upstream裡不同IP的伺服器提供同樣的PHP-FPM服務.
分散式 體現在即使upstream裡有伺服器崩了,Nginx也能自動進行故障轉移.
上面的PHP-FPM換成Java Tomcat也是一樣的道理.
轉自:http://segmentfault.com/q/1010000003052403