nginx简介及tomcat集成负载均衡

nginx作用:

反向代理

负载均衡

http服务器(包含动静分离)

邮件服务器

反向代理(reverse proxy)

代理服务器接受来自网络的请求,并将此请求转发给网络内部的服务器,内部服务器处理完将结果通过代理服务器返回给客户端,所以此代理服务器对外表现为反向代理服务器

server {  
        listen       80;                                                        
        server_name  localhost;                                              
       
        location / {
            proxy_pass http://localhost:8080;
           
        }
}

当在浏览器中输入localhost的时候就相当于访问了http:// localhost:8080


负载均衡

负载均衡是nginx使用频率较高的用途之一,当有2台或2台以上的服务器,nginx通过规则选择将请求分发到某台服务器上,一般nginx做负载均衡会结合反向代理使用,目前支持3中负载均衡的策略

第一种:RR(默认)

按照请求时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,自动剔除

upstream test {
        server localhost:8080;
        server localhost:8081;
    }
    server {
        listen       81;                                                        
        server_name  localhost;                                              
        client_max_body_size 1024M;

        location / {
            proxy_pass http://test;
            proxy_set_header Host $host:$server_port;
        }
    }

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

 http://localhost 的时候,也不会有问题,会默认跳转到 http://localhost:8080 具体是因为Nginx会自动判断服务器的状态,如果服务器处于不能访问(服务器挂了),就不会跳转到这台服务器,所以也避免了一台服务器挂了影响使用的情况,由于Nginx默认是RR策略,所以我们不需要其他更多的设置。

第二种:权重 (weight)

指定轮询机制,权重和轮询几率是成正比的

pstream test {
        server localhost:8080 weight=9;
        server localhost:8081 weight=1;
    }

如果有10次请求,8081这个端口,会被访问9次,8080端口会被访问1次

第三种:ip_hash

上面两种方式都有一个问题,那就是下一个请求来的时候请求可能分发到另外一个服务器,当我们的程序不是无状态的时候(采用了session保存数据),这时候就有一个很大的很问题了,比如把登录信息保存到了session中,那么跳转到另外一台服务器的时候就需要重新登录了,所以很多时候我们需要一个客户只访问一个服务器,那么就需要用iphash了,iphash的每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。

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

第四种:fair

按后端服务器的响应时间来分配请求,响应时间短的优先分配。

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

第五种:url_hash

按照访问路径url的hash结果,使每个url定向到同一个同一个后台服务器,后端服务器一般为缓存服务器会比较有效

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

注意:fair和url_hash需要安装第三方模块才能使用,


nginx+tomcat实现负载均衡(以nginx在window环境为例)

准备好两个tomcat



这里都是用的本地的tomcat,只是修改了端口

nginx的配置:

到nginx.conf下配置



启动nginx.exe

当用户在浏览器输入http://localhost/test/index.jsp时nginx会拦截请求利用反向代理找到test然后将请求转发给localhost:8080或者localhost:8088,这样页面就能正常显示了 test是我的项目名

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值