nginx負載平衡配置的方法有很多種,這裡我要跟大家介紹兩種Nginx負載平衡方式配置的方法,接下來我們就來具體的看一看關於nginx負載平衡常見配置的方法。
nginx為後端web伺服器(apache,nginx,tomcat,weblogic)等做反向代理
幾台後端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;#time_size; 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裡面
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; } }
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; }
upstream backserver { server 192.168.0.14 weight=10; server 192.168.0.15 weight=10; }
upstream backserver { ip_hash; server 192.168.0.14:88; server 192.168.0.15:80; }
upstream backserver { server server1; server server2; fair; }
upstream backserver { server squid1:3128; server squid2:3128; hash $request_uri; hash_method crc32; }
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次失敗後,暫停的時間
相關推薦:
幾種Nginx實作負載平衡的方式
#
以上是nginx負載平衡如何設定? nginx負載平衡配置的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!