Nginx+Tomcat负载均衡
Nginx+Tomcat 負載均衡集群方案
該方案是我之前做過的一個項目生產應用的,目前運行良好,如何您生產使用,請先做好測試。系統架構圖
下載軟件包
[root@Nginx-node1 src]# cd /usr/local/src [root@Nginx-node1 src]# wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.02.tar.gz [root@Nginx-node1 src]# wget http://nginx.org/download/nginx-0.8.34.tar.gz [root@Nginx-node1 src]# wget http://www.keepalived.org/software/keepalived-1.1.19.tar.gz [root@Nginx-node1 src]# chmod +x * [root@Nginx-node1 src]# ls -l -rwxr-xr-x 1 root root 241437 10-01 17:25 keepalived-1.1.19.tar.gz -rwxr-xr-x 1 root root 621534 03-04 01:00 nginx-0.8.34.tar.gz -rwxr-xr-x 1 root root 1247730 03-31 16:31 pcre-8.02.tar.gz安裝Nginx
安裝Nginx依賴的
[root@Nginx-node1 src]# tar zxvf pcre-8.02.tar.gz [root@Nginx-node1 src]# cd pcre-8.02 [root@Nginx-node1 pcre-8.02]# ./configure [root@Nginx-node1 pcre-8.02]# make && make install安裝Nginx
[root@Nginx-node1 pcre-8.02]# cd ../ [root@Nginx-node1 src]# tar zxvf nginx-0.8.34.tar.gz [root@Nginx-node1 src]# cd nginx-0.8.34 [root@Nginx-node1 nginx-0.8.34]# ./configure --prefix=/usr/local/nginx \ > --with-http_stub_status_module \ > --with-http_ssl_module [root@Nginx-node1 nginx-0.8.34]# make && make install [root@Nginx-node1 ~]# vim /usr/local/nginx/conf/nginx.confNginx 配置文件
user website website; worker_processes 4;error_log logs/error.log; pid logs/nginx.pid; worker_rlimit_nofile 65535;events {use epoll;worker_connections 10240; }http {include mime.types;default_type application/octet-stream;server_names_hash_bucket_size 128;client_header_buffer_size 32k;large_client_header_buffers 4 32k;client_max_body_size 8m;sendfile on;tcp_nopush on;keepalive_timeout 60;tcp_nodelay on;gzip on;gzip_min_length 1k;gzip_buffers 4 16k;gzip_http_version 1.0;gzip_comp_level 2;gzip_types text/plain application/x-javascript text/css application/xml;gzip_vary on;server_tokens off;upstream web #設置web集群池 { ip_hash; # server 192.168.0.141:8080; server 192.168.0.142:8080; server 192.168.0.143:8080; server 192.168.0.144:8080; server 192.168.0.145:8080; server 192.168.0.146:8080;}upstream wap #設置wap集群池 { ip_hash; server 192.168.0.151:8080; server 192.168.0.152:8080; server 192.168.0.153:8080; server 192.168.0.154:8080; server 192.168.0.155:8080; server 192.168.0.156:8080;}server {listen 80;server_name www.***.com;location / {root html;index index.html index.htm;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;proxy_pass http://web; #注意設置在這里}error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}}server {listen 80;server_name wap.***.com;location / {root html;index index.html index.htm;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;proxy_pass http://wap; #注意:設置在這里}error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}} }Nginx Upstream支持的分配方法
nginx的upstream目前支持5種方式的分配
- 1.輪詢(默認)
每個請求按時間順序逐一分配到不同的后端服務器,如果后端服務器down掉,能自動剔除。
- 2.weight (帶權重的)
指定輪詢權重,weight和訪問比率成正比,用于后端服務器性能不均的情況。
例如:
upstream bakend { server 192.168.0.141 weight=10; server 192.168.0.142 weight=10; }- 3.ip_hash
每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個后端服務器,可以解決session的問題。
例如:
upstream bakend { ip_hash; server 192.168.0.151:80; server 192.168.0.152:80; }- 4.fair(第三方)
按后端服務器的響應時間來分配請求,響應時間短的優先分配。
upstream backend { server server1; server server2; fair; }- 5.url_hash(第三方)
按訪問url的hash結果來分配請求,使每個url定向到同一個后端服務器,后端服務器為緩存時比較有效。
例:在upstream中加入hash語句,server語句中不能寫入weight等其他的參數,hash_method是使用的hash算法
<code> upstream backend { server squid1:3128; server squid2:3128; hash $request_uri; hash_method crc32; }
- 設置說明:
每個設備的狀態設置為:
1.down 表示單前的server暫時不參與負載
2.weight 默認為1.weight越大,負載的權重就越大。
3.max_fails :允許請求失敗的次數默認為1.當超過最大次數時,返回proxy_next_upstream 模塊定義的錯誤
4.fail_timeout:max_fails次失敗后,暫停的時間。
5.backup: 其它所有的非backup機器down或者忙的時候,請求backup機器。所以這臺機器壓力會最輕。
nginx支持同時設置多組的負載均衡,用來給不用的server來使用。
client_body_in_file_only 設置為On 可以講client post過來的數據記錄到文件中用來做debug
client_body_temp_path 設置記錄文件的目錄 可以設置最多3層目錄
location 對URL進行匹配.可以進行重定向或者進行新的代理 負載均衡
轉載于:https://blog.51cto.com/unixhot/759887
總結
以上是生活随笔為你收集整理的Nginx+Tomcat负载均衡的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++中实现Singleton的正确方法
- 下一篇: python类库32[多进程同步Lock