nginx 负载均衡tomcat

努力学习,超越自我。html

nginx是一个高性能http和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。特色是内存占用少,并发能力强。nginx

 

1、搭建环境web

nginx安装:https://my.oschina.net/wangzonghui/blog/1620790apache

nginx历史版本地址:后端

http://nginx.org/download/缓存

 

tomcat直接下载配置,解压便可。tomcat

https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-7/v7.0.84/bin/apache-tomcat-7.0.84.tar.gz服务器

复制两份tomcat,同一机器启动两个tomcat,修改其中一个请求端口为8088和./webapp/ROOT/index.html文件,修改方式以下:网络

 

2、负载均衡配置session

nginx有多种负载均衡模式:

一、轮询(默认)
每一个请求按时间顺序逐一分配到不一样的后端服务器,若是后端服务器down掉,能自动剔除。
二、weight
指定轮询概率,weight和访问比率成正比,用于后端服务器性能不均的状况。
二、ip_hash
每一个请求按访问ip的hash结果分配,这样每一个访客固定访问一个后端服务器,能够解决session的问题。
三、fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
四、url_hash(第三方)
按访问url的hash结果来分配请求,使每一个url定向到同一个后端服务器,后端服务器为缓存时比较有效。

这里走默认,修改nginx配置,路径/usr/local/nginx/conf/nginx.conf

http中添加以下配置:

验证脚本是否修改有误,/user/local/nginx/sbin/nginx -t,

启动 /user/local/nginx/sbin/nginx -s reload

如此,请求主机名或ip,重复刷新,能够看到两个tomcat切换。

 

3、线上配置实例

一个项目部署了两个服务器,nginx每次接收请求后,轮询(可选择轮询、最少链接、ip地址哈希、权重复制均衡)转发不一样地址的tomcat。

在http下增长upstream节点,choseapp是自定义的,根据须要指定。

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

修改以前的location,将本来的ip和端口,换成choseap:

location /dw {
            proxy_pass http://choseapp/dw;
}

 

三、单个ip并发限制

首先http下增长以下内容:

imit_conn_zone $binary_remote_addr zone=one:10m;

$binary_remote_addr是nginx内部参数,zone定义配置名称为one,10M请求缓存大小

 

须要限制的location中增长:

    limit_conn one 1;  #这将指定一个地址只能同时存在一个链接。“one”与上面的对应,也能够自定义命名
    limit_rate 300k;  #单个请求的网络带宽最大值

须要深度学习限制配置参照:http://www.javashuo.com/article/p-soasoqmd-ko.html

完整配置以下:

worker_processes  1; #启动进程数

 #全局错误日志及PID文件
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

events {
    worker_connections  1024;
}

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  65;

    #gzip  on;
    
    upstream choseapp {
      server localhost:8080;
      server localhost:8081;
    }
    limit_conn_zone $binary_remote_addr zone=one:10m;
    
    server {
        listen       8089;
        server_name  localhost;

        location / {
            root   html;
            index  index.html index.htm;
        }
        
        location /dw/ {
            limit_conn one 5;  #限制链接数
            #limit_rate 300k;  #每一个链接限速大小
            proxy_pass http://choseapp/dw/;
        }

        #error_page  404              /404.html;

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

}
相关文章
相关标签/搜索