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)不加权重的情况:

http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    #设定负载均衡的服务器列表
    upstream spagobi {  
      #根据ip计算将请求分配各那个后端tomcat,许多人误认为可以解决session问题,其实并不能。  
      #同一机器在多网情况下,路由切换,ip可能不同  
      #ip_hash;   
      server localhost:8080 ;  
      server localhost:8081 ;  
     } 

    server {
        listen       80;
        server_name  spagobi;
        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html; #项目的根目录
            index  index.html index.htm;#定义首页索引文件的名称
            proxy_pass http://spagobi; #请求转向upstream spagobi定义的服务器列表

            #以下是一些反向代理的配置可删除.
            #proxy_redirect off;

            #后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
            #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_max_body_size 10m;    #允许客户端请求的最大单文件字节数
            client_body_buffer_size 128k;  #缓冲区代理缓冲用户端请求的最大字节数,

             proxy_connect_timeout   3;  
             proxy_send_timeout      30;  
             proxy_read_timeout      30;               

             proxy_buffer_size 4k;  #设置代理服务器(nginx)保存用户头信息的缓冲区大小
             proxy_buffers 4 32k;   #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置
             proxy_busy_buffers_size 64k; #高负荷下缓冲大小(proxy_buffers*2)
             proxy_temp_file_write_size 64k; #设定缓存文件夹大小,大于这个值,将从upstream服务器传
        }

        #error_page  404              /404.html;

 

    2、加权重的配置:

         

 #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;
   
    #设定负载均衡的服务器列表
    upstream www.xxx.com {  
      #根据ip计算将请求分配各那个后端tomcat,许多人误认为可以解决session问题,其实并不能。 
      #同一机器在多网情况下,路由切换,ip可能不同  
      #ip_hash;//如果ip_hash打开,则根据ip的hash值计算到一个固定的server上,这样每次请求都会固定这个server,也就变向解决了session共享的问题,保证该用户的所有请求都会在一个tomcat上,而不会跑到其它tomcat上
      server localhost:8080 weight=8 max_fails=3 fail_timeout=30s;
      server localhost:8081 weight=2 max_fails=3 fail_timeout=30s;    
     } 

    server {
        listen       80;
        server_name  www.xxx.com;
        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
            proxy_pass http://www.xxx.com; 

             #以下是一些反向代理的配置可删除.
             #proxy_redirect off;

             #后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
             #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_max_body_size 10m;    #允许客户端请求的最大单文件字节数
             client_body_buffer_size 128k;  #缓冲区代理缓冲用户端请求的最大字节数,

             proxy_connect_timeout   3;  
             proxy_send_timeout      30;  
             proxy_read_timeout      30;   

            proxy_buffer_size 4k;  #设置代理服务器(nginx)保存用户头信息的缓冲区大小
            proxy_buffers 4 32k;   #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置
            proxy_busy_buffers_size 64k; #高负荷下缓冲大小(proxy_buffers*2)
            proxy_temp_file_write_size 64k; #设定缓存文件夹大小,大于这个值,将从upstream服务器传
        }

        #error_page  404              /404.html;

 

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

   1)、轮询;

upstream backend{       
      server localhost:8080 ;  
      server localhost:8081 ;  
}

 

   2)、weight (权重);

upstream backend{       
      server localhost:8080 weight=8 max_fails=3 fail_timeout=30s;
      server localhost:8081 weight=2 max_fails=3 fail_timeout=30s;
} 

 

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

upstream backend{     
      ip_hash;  
      server localhost:8080;
      server localhost:8081;
} 

 

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

  

upstream backend{     
      server localhost:8080;
      server localhost:8081;
      fair;
} 

 

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

 

upstream backend{     
      server localhost:8080;
      server localhost:8081;
      hash $request_uri;
      hash_method crc32;
} 

 

 

 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

 

猜你喜欢

转载自lehsyh.iteye.com/blog/2103329