window下nginx 1.7.4 做多个tomcat负载均衡


1、下载最新版nginx

     http://nginx.org/download/nginx-1.7.4.zip

     http://nginx.org/en/download.html

     配置参考官方资料:http://nginx.org/en/docs/windows.html

2、安装

     下载后解压到安装目录下即可。

      启动:cmd下执行:nginx

      其它命令:

            重载 :nginx -s reload  

           停止:nginx -s stop

           关闭 :nginx -s quit 

3、配置tomcat

      要均衡两个tomcat,需要修改一些端口,一个默认,一个tomcat修改成其它端口(改为在默认端口值+1)。

      有三处端口修改:

       1)<Server port="8006" shutdown="SHUTDOWN">

        2) <Connector port="8081" protocol="HTTP/1.1"   connectionTimeout="20000"              redirectPort="8443" /> 

        3)<Connector port="8010" protocol="AJP/1.3" redirectPort="8443" /> 

     还有一处是两个tomcat都需要改的地方:在Engine上添加个jvmRoute属性,要求两个tomcat的值都不一样

         <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat2"

 

4、修改nginx配置

      打开nginx的conf/nginx.conf

      修改位置为:

      1)不加权重的情况:

Xml代码   收藏代码
  1. http {  
  2.     include       mime.types;  
  3.     default_type  application/octet-stream;  
  4.   
  5.     #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '  
  6.     #                  '$status $body_bytes_sent "$http_referer" '  
  7.     #                  '"$http_user_agent" "$http_x_forwarded_for"';  
  8.   
  9.     #access_log  logs/access.log  main;  
  10.   
  11.     sendfile        on;  
  12.     #tcp_nopush     on;  
  13.   
  14.     #keepalive_timeout  0;  
  15.     keepalive_timeout  65;  
  16.   
  17.     #gzip  on;  
  18.   
  19.     #设定负载均衡的服务器列表  
  20.     upstream spagobi {    
  21.       #根据ip计算将请求分配各那个后端tomcat,许多人误认为可以解决session问题,其实并不能。    
  22.       #同一机器在多网情况下,路由切换,ip可能不同    
  23.       #ip_hash;     
  24.       server localhost:8080 ;    
  25.       server localhost:8081 ;    
  26.      }   
  27.   
  28.     server {  
  29.         listen       80;  
  30.         server_name  spagobi;  
  31.         #charset koi8-r;  
  32.   
  33.         #access_log  logs/host.access.log  main;  
  34.   
  35.         location / {  
  36.             root   html; #项目的根目录  
  37.             index  index.html index.htm;#定义首页索引文件的名称  
  38.             proxy_pass http://spagobi; #请求转向upstream spagobi定义的服务器列表  
  39.   
  40.             #以下是一些反向代理的配置可删除.  
  41.             #proxy_redirect off;  
  42.   
  43.             #后端的Web服务器可以通过X-Forwarded-For获取用户真实IP  
  44.             #proxy_set_header Host $host;  
  45.             #proxy_set_header X-Real-IP $remote_addr;  
  46.             #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  
  47.             
  48.             client_max_body_size 10m;    #允许客户端请求的最大单文件字节数  
  49.             client_body_buffer_size 128k;  #缓冲区代理缓冲用户端请求的最大字节数,  
  50.   
  51.              proxy_connect_timeout   3;    
  52.              proxy_send_timeout      30;    
  53.              proxy_read_timeout      30;                 
  54.   
  55.              proxy_buffer_size 4k;  #设置代理服务器(nginx)保存用户头信息的缓冲区大小  
  56.              proxy_buffers 4 32k;   #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置  
  57.              proxy_busy_buffers_size 64k; #高负荷下缓冲大小(proxy_buffers*2)  
  58.              proxy_temp_file_write_size 64k; #设定缓存文件夹大小,大于这个值,将从upstream服务器传  
  59.         }  
  60.   
  61.         #error_page  404              /404.html;  

 

    2、加权重的配置:

         

Xml代码   收藏代码
  1. #keepalive_timeout  0;  
  2.    keepalive_timeout  65;  
  3.   
  4.    #gzip  on;  
  5.     
  6.    #设定负载均衡的服务器列表  
  7.    upstream www.xxx.com {    
  8.      #根据ip计算将请求分配各那个后端tomcat,许多人误认为可以解决session问题,其实并不能。   
  9.      #同一机器在多网情况下,路由切换,ip可能不同    
  10.      #ip_hash;//如果ip_hash打开,则根据ip的hash值计算到一个固定的server上,这样每次请求都会固定这个server,也就变向解决了session共享的问题,保证该用户的所有请求都会在一个tomcat上,而不会跑到其它tomcat上  
  11.      server localhost:8080 weight=8 max_fails=3 fail_timeout=30s;  
  12.      server localhost:8081 weight=2 max_fails=3 fail_timeout=30s;      
  13.     }   
  14.   
  15.    server {  
  16.        listen       80;  
  17.        server_name  www.xxx.com;  
  18.        #charset koi8-r;  
  19.   
  20.        #access_log  logs/host.access.log  main;  
  21.   
  22.        location / {  
  23.            root   html;  
  24.            index  index.html index.htm;  
  25.            proxy_pass http://www.xxx.com;   
  26.   
  27.             #以下是一些反向代理的配置可删除.  
  28.             #proxy_redirect off;  
  29.   
  30.             #后端的Web服务器可以通过X-Forwarded-For获取用户真实IP  
  31.             #proxy_set_header Host $host;  
  32.             #proxy_set_header X-Real-IP $remote_addr;  
  33.             #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  
  34.            
  35.             client_max_body_size 10m;    #允许客户端请求的最大单文件字节数  
  36.             client_body_buffer_size 128k;  #缓冲区代理缓冲用户端请求的最大字节数,  
  37.   
  38.             proxy_connect_timeout   3;    
  39.             proxy_send_timeout      30;    
  40.             proxy_read_timeout      30;     
  41.   
  42.            proxy_buffer_size 4k;  #设置代理服务器(nginx)保存用户头信息的缓冲区大小  
  43.            proxy_buffers 4 32k;   #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置  
  44.            proxy_busy_buffers_size 64k; #高负荷下缓冲大小(proxy_buffers*2)  
  45.            proxy_temp_file_write_size 64k; #设定缓存文件夹大小,大于这个值,将从upstream服务器传  
  46.        }  
  47.   
  48.        #error_page  404              /404.html;  

 

 nginx的upstream目前支持5中方式的分配:

   1)、轮询;

Xml代码   收藏代码
  1. upstream backend{         
  2.       server localhost:8080 ;    
  3.       server localhost:8081 ;    
  4. }  

 

   2)、weight (权重);

Xml代码   收藏代码
  1. upstream backend{         
  2.       server localhost:8080 weight=8 max_fails=3 fail_timeout=30s;  
  3.       server localhost:8081 weight=2 max_fails=3 fail_timeout=30s;  
  4. }   

 

   3)、ip_hash(客户端ip的hash来固定到固定的后端某一个服务器上);

Java代码   收藏代码
  1. upstream backend{       
  2.       ip_hash;    
  3.       server localhost:8080;  
  4.       server localhost:8081;  
  5. }   

 

   4)、fair(根据后端服务器响应时间);

  

Xml代码   收藏代码
  1. upstream backend{       
  2.       server localhost:8080;  
  3.       server localhost:8081;  
  4.       fair;  
  5. }   

 

   5)、url_hash (按访问url的hash结果来分配请求,使每个url定位到同一台后端服务器)

 

Xml代码   收藏代码
  1. upstream backend{       
  2.       server localhost:8080;  
  3.       server localhost:8081;  
  4.       hash $request_uri;  
  5.       hash_method crc32;  
  6. }   

 

 

 5、测试

     从新启动两个tomcat,然后启动nginx,浏览器输入 http://localhost/,刷新浏览器,看映射的tomcat的变化,不加权重的,采用奇偶切换,加权重的,按照权重出现的比例切换。

 

 

 参考

1、Nginx 简单的负载均衡配置示例

      http://www.360doc.com/content/11/0722/02/1542811_135112833.shtml

2、Nginx详细配置(含负载均衡)

    http://wenku.baidu.com/link?url=NP77-jpwGha-SZoQmm3ncqtKzRIdoGbu_Uxp7tp4fymOmEKVEJnO0jGUf_wDH-fqI3sZ0EuRbYZZ3WSNvC62uTUf8j53zjT_OAQrpCgUYTm

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值