nginx負載平衡如何配置?nginx負載平衡配置的方法

來源:互聯網
上載者:User
nginx負載平衡配置的方法有很多種,這裡我給大家介紹兩種Nginx負載平衡方式配置的方法,接下來我們就來具體的看一看關於nginx負載平衡常見配置的方法。

nginx為後端web伺服器(apache,nginx,tomcat,weblogic)等做反向 Proxy

幾台後端web伺服器需要考慮檔案分享權限設定,資料庫共用,session共用問題.檔案分享權限設定可以使用nfs,共用儲存(fc,ip儲存都行)+redhat GFS叢集檔案系統,rsync+inotify檔案同步等.小規模的叢集中使用更多的是nfs.對於內容管理系統,單台進行發布資訊,向多台同步使rsync+inotify就是個不錯的選擇.

小規模叢集,單台高效能資料庫(如志強雙四核,32/64/128G記憶體)即可,大規模叢集可能要考慮資料庫叢集了,可以使用mysql官方提供的叢集軟體,也可以使用keepalived+lvs讀寫分離做Mysql叢集.

session共用問題是一個大問題,如果nginx採用ip_hash的輪詢方法,每個ip在一定時間內會被固定的後端伺服器,這樣我們不用解決session共用問題.反之,
一個ip的請求被輪詢分發到多台伺服器上,就要解決session共用的問題,可以使用nfs共用session,把session寫入mysql或者memcache等方法,當機器規模比較大
時,一般使用把session寫入memcache裡面.

後端的web伺服器如何配置我們這裡就不討論了,後端伺服器可能是apache,nginx,tomcat,lighthttp等,前端不關心後端到底是什麼.
首先建立一個proxy.conf檔案,方便後面我們進行調用(配置多個叢集的話,把公用參數寫到一個檔案,然後繼續include是不錯的方法)
vi /usr/local/nginx/conf/proxy.conf
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_body_buffer_size 90;
proxy_connect_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64

我們這裡討論nginx的兩種負載平衡方式 輪詢加權(也可以不加權,就是1:1負載)和ip_hash(同一ip會被分配給固定的後端伺服器,解決session問題)
這個設定檔,我們可以寫到nginx.conf裡面(如果只有一個web叢集),如果有多個web叢集,最好寫到vhosts裡面,以虛擬機器主機的方式,這裡我寫到nginx.conf裡面
第一種配置:加權輪詢,按伺服器的效能給予權重,本例是1:2分配

 upstream lb {                server 192.168.196.130 weight=1 fail_timeout=20s;                server 192.168.196.132 weight=2 fail_timeout=20s; } server {                listen 80;                server_name safexjt.com www.safexjt.com;  index index.html index.htm index.php;  location / {                        proxy_pass http://lb;   proxy_next_upstream http_500 http_502 http_503 error timeout invalid_header;   include proxy.conf;                } }

第二種配置:ip_hash輪詢方法,不可給伺服器加權重

upstream lb {                server 192.168.196.130 fail_timeout=20s;                server 192.168.196.132 fail_timeout=20s;  ip_hash; } server {                listen 80;                server_name safexjt.com www.safexjt.com;  index index.html index.htm index.php;  location / {                        proxy_pass http://lb;   proxy_next_upstream http_500 http_502 http_503 error timeout invalid_header;   include proxy.conf;                } }

方法二 nginx負載平衡基於ip_hash實現session粘帖
1、輪詢(預設)
每個請求按時間順序逐一分配到不同的後端伺服器,如果後端伺服器down掉,能自動剔除。

upstream backserver {server 192.168.0.14;server 192.168.0.15;}

2、指定權重
指定輪詢幾率,weight和訪問比率成正比,用於後端伺服器效能不均的情況。

upstream backserver {server 192.168.0.14 weight=10;server 192.168.0.15 weight=10;}

3、IP綁定 ip_hash
每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個後端伺服器,可以解決session的問題。

upstream backserver {ip_hash;server 192.168.0.14:88;server 192.168.0.15:80;}

4、fair(第三方)
按後端伺服器的回應時間來分配請求,回應時間短的優先分配。

upstream backserver {server server1;server server2;fair;}

5、url_hash(第三方)
按訪問url的hash結果來分配請求,使每個url定向到同一個後端伺服器,後端伺服器為緩衝時比較有效。

upstream backserver {server squid1:3128;server squid2:3128;hash $request_uri;hash_method crc32;}

在需要使用負載平衡的server中增加

proxy_pass http://backserver/;upstream backserver{ip_hash;server 127.0.0.1:9090 down; (down 表示單前的server暫時不參與負載)server 127.0.0.1:8080 weight=2; (weight 預設為1.weight越大,負載的權重就越大)server 127.0.0.1:6060;server 127.0.0.1:7070 backup; (其它所有的非backup機器down或者忙的時候,請求backup機器)}

max_fails :允許請求失敗的次數預設為1.當超過最大次數時,返回proxy_next_upstream 模組定義的錯誤
fail_timeout:max_fails次失敗後,暫停時間

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.