work hard work smart

专注于Java后端开发。 不断总结,举一反三。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Nginx + Tomcat搭建集群

Posted on 2018-08-04 23:29  work hard work smart  阅读(197)  评论(0编辑  收藏  举报

一、Tomcat集群带来的好处

1.提高服务的性能,并发能力,以及高可用性

2.提供项目架构的横向扩展能力

 

二、Tomcat集群实现原理

通过Nginx负载均衡进行请求转发

 

三、Nginx + Tomcat搭建集群

(一)、修改hosts文件

1. windows修改hosts 文件

c:\Windows\System32\drivers\etc\hosts

127.0.0.1 www.water.com

2. linux修改hosts文件

vi /etc/hosts

 

(二)、启动Nginx

windows  nginx.exe

windows下nginx进程杀不掉,请在cmd用如下命令

taskkill /fi "imagename eq nginx.EXE" /f

 

Linux: usr/local/nginx/sbin/nginx.sh 

进入sbin目录

执行  .sudo ./nginx

 

(三)、修改

修改配置文件

 

如上图,如果有域名,可以将127.0.0.1 替换成域名

 

修改配置文件后重启:

 [... sbin]# ./nginx -s reload

 

最后,访问nginx,会交替显示8080或者9090的网页

 

 

四、Nginx负载均衡算法

1、轮询算法

默认采用轮询算法

upstream tomcats{
        server 192.168.6.1:8080;
        server 192.168.6.2:8080;
   }

  

location配置

location / {
            proxy_pass http://tomcats;
}

  

 

2、权重

upstream tomcats{
        server 192.168.6.1:8080 weight 2;
        server 192.168.6.2:8080 weight 1;
   }  

weight为权重,当服务器配置比较好时,可以分配更大的权重。

 

3、ip_hash

upstream tomcats{
      ip_hash;
      server 192.168.6.1:8080;
      server 1192.168.6.2:8080;
   }

ip_hash 可以保证用户访问可以请求到上游服务器中的固定的服务器,前提是用户ip没有发生更改。

注意: 不能把后台服务器直接移除,只能标记为down,这样才能让hash算法计算的服务器不改变。  

 

4、url_hash

upstream tomcats{
      url hash;
      server 192.168.6.1:8080;
      server 1192.168.6.2:8080;
   }

  

5、least_conn

upstream tomcats{
      hash $request_uri;
      server 192.168.6.1:8080;
      server 1192.168.6.2:8080;
   }

  

五、upstream指令参数

max_conns :用来限制同时连接到upstream负载上的单个服务器的最大连接数,作用是可以对单个服务器进行限流,防止服务器超负荷运转.默认值为0,则表示没有限制

slow_start: 商业版Nginx才有

 

down: 不访问192.168.6.1这台机器

upstream tomcats{
        server 192.168.6.1:8080 down;
        server 192.168.6.2:8080;
        server 192.168.6.3:8080;
   } 

  

backup

upstream tomcats{
        server 192.168.6.1:8080 backup;
        server 192.168.6.2:8080;
        server 192.168.6.3:8080;
   }   

当前面2和3两台宏机后,备用机192.168.6.1将加入集群,被用户访问。

 

max_fails: 表示失败几次,则标记server已宏机,踢出上游服务。

fail_timeout: 表示失败重试时间

假设目前配置如下:

max_fails=2 fail_timeout=15s

则代表在15秒内请求某一server失败达到2次后,则认为该server已经挂机或者宏机,随后再过15秒,这15秒不会有新的请求到达刚刚挂掉的节点上,而是会请求正常运作的server,15秒后会再有新请求尝试连接挂掉的server。15秒后会再有新的请求尝试连接挂掉的server,如果还是失败,重复上一过程,直到恢复。

 

六、keepalive提高吞吐量

配置:

upstream tomcats{
        server xx.xx.xx.xx:8080;
        keepalive 32;
   }

location 配置如下

        location / {
            proxy_pass http://tomcats;
            proxy_http_version 1.1;
            proxy_set_header Connection "";
        }

  

 

测试机器 mobilexxx.exxx.com

如下图所示,未设置keepalvie的吞吐量为118,设置后为160.