首頁  >  文章  >  運維  >  網站負載平衡解決方案

網站負載平衡解決方案

藏色散人
藏色散人轉載
2019-04-13 17:12:054303瀏覽

Web負載平衡(Load Balancing),簡單地說就是給我們的伺服器叢集分配“工作任務”,而採用恰當的分配方式,對於保護處於後端的Web伺服器來說,非常重要。

網站負載平衡解決方案

反向代理負載平衡

反向代理服務的核心工作主要是轉送HTTP請求,扮演了瀏覽器端和後台Web伺服器中轉的角色。因為它工作在HTTP層(應用層),也就是網路七層結構中的第七層,因此也被稱為「七層負載平衡」。可以做反向代理的軟體很多,比較常見的一種是Nginx。

網站負載平衡解決方案

Nginx是一種非常靈活的反向代理軟體,可以自由客製化轉送策略,分配伺服器流量的權重等。反向代理中,常見的一個問題,就是Web伺服器儲存的session數據,因為一般負載平衡的策略都是隨機分配請求的。同一個登入使用者的請求,無法保證一定分配到相同的Web機器上,會導致無法找到session的問題。

解決方案主要有兩種:

設定反向代理程式的轉送規則,讓同一個使用者的請求一定落在同一台機器上(透過分析cookie ),複雜的轉送規則將會消耗更多的CPU,也增加了代理伺服器的負擔。

將session這類的信息,專門用某個獨立服務來存儲,例如redis/memchache,這個方案是比較推薦的。

反向代理服務,也是可以開啟快取的,如果開啟了,會增加反向代理的負擔,需要謹慎使用。這種負載平衡策略實現和部署非常簡單,而且效能表現也比較好。但是,它有「單點故障」的問題,如果掛了,會帶來很多的麻煩。而且,到了後期Web伺服器持續增加,它本身可能成為系統的瓶頸。

設定檔樣本:

#user nobody; worker_processes 1; #pid logs/nginx.pid; events { 
    worker_connections 1024; } http { 
    include mime.types; 
    default_type application/octet-stream; 
    sendfile on;  
    keepalive_timeout 65; 
    upstream www.hcoder.net { 
        server 192.168.1.188:80 weight=5; 
        server 192.168.1.158:80; 
    } 
    server { 
    listen 80; 
    server_name www.hcoder.net; 
    location / { 
       proxy_pass http://www.hcoder.net; 
       proxy_set_header Host $host; 
       proxy_set_header X-Real-IP $remote_addr; 
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
   } }

以上是網站負載平衡解決方案的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:hcoder.net。如有侵權,請聯絡admin@php.cn刪除