Tomcat集群分布(Windows)

一、Tomcat服务器搭建

1.准备Tocmat服务器并修改配置文件server.xml

<Server port="8005" shutdown="SHUTDOWN"> Tomcat监听的关闭端口

<Connector port="8080"  protocol="HTTP/1.1"  connectionTimeout="20000"  redirectPort="8443" />监听浏览器的HTTP请求的端口,如果是Https的请求就转到8443端口

 <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />8009端口接收其他服务器发送的请求

说明:启动Tomcat时,此3个端口都会启动,因此多个Tomcat服务器之间的此三个的端口号不能一样,否则端口被占用无法启动

二、发布项目

将项目打包,之后将war包包名修改为ROOT.war(缺省访问),再放入多个Tomcat服务器的webapps里

假设部署到3台Tomcat中最终实现Localhost:8091,Localhost:8092,Localhost:8093

三、Nginx实现均衡负载

1.轮询(默认):每个请求按时间顺序逐一分配到不同的后端服务器

upstream wff {

     server  localhost:8091;

      server  localhost:8092;

      server  localhost:8093;

}

server {

      listen 80;

      server_name  a.a.com;

      location / {

         proxy_pass http://wff;

      }

   }修改完成后 重启服务器

2.权重:指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。

upstream wff {

      server  localhost:8091 weight=3;

      server  localhost:8092 weight=2;

      server  localhost:8093 weight=1;

   }

3.ip_hash:每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器。

upstream wff {

     ip_hash;

      server  localhost:8091 weight=3;

      server  localhost:8092 weight=2;

      server  localhost:8093 weight=1;

   }

问题描述:采用集群的部署后,如何实现单点登录是一个典型的问题.因为用户登陆后,需要将用户信息保存到Session中,但是不同的服务器Session不能共享.所以无法实现用户只登陆一次,其他免密登录的效果.

解决方案:可以通过IP_hash配置,使用用户单点登录,用户访问服务器时,IP地址经过计算.之后绑定到特定到某一台服务器上,从而实现了单点登录效果.

补充说明:如果配置IP_hash,那么配置的权重和轮询将不起作用.

风险: 不安全

还有其他第三方实现均衡负载的效果。

三、项目上线

1.修改Nginx,将需要上线的机器先做下线处理

2.将服务停止,之后将包进行部署

3.将服务器启动,启动后先经过测试人员测试

4.如果测试没有问题,则将tomcat上线.部署后续的项目

四、Nginx中备用机机制

说明: 在一般的情况下,服务器会配置备用机,该机器正常的情况下,不会处理请求,只有在主服务遇忙时或者主机宕机时,才会访问备用机.

upstream wff {

      server  localhost:8091 weight=3 down(下线);

      server  localhost:8092 weight=2 down;

      server  localhost:8093 weight=1 backup(备用);

   }

五、Nginx健康检测(基本高可用)

问题:如果服务器出现意外的宕机现象,这时nginx访问会出现问题.

解决方案:

   Nginx内部有自己的健康检测机制,在指定的检测周期内,如果发现后台服务器出现宕机的现象.那么在该周期内不会再将请求发往该机器.直到下一个检测周期时,才会再次检查服务器是否宕机,如果依然宕机,则该周期内不会发请求给故障机.

最终实现了tomcat服务器宕机后,自动的实现了故障的迁移.

配置文件介绍:

server  localhost:8091 max_fails=1    fail_timeout=60s;

最大的失败的次数允许1次.如果出现宕机那么在60秒内,不会再将请求发往该机器.Nginx健康

upstream wff {

      server  localhost:8091 max_fails=1 fail_timeout=60s;

      server  localhost:8092 max_fails=1 fail_timeout=60s;

      server  localhost:8093  backup;

   }

 proxy_connect_timeout :后端服务器连接的超时时间_发起握手等候响应超时时间

 proxy_read_timeout:连接成功后_等候后端服务器响应时间_其实已经进入后端的排队之中等候处理(也可以说是后端服务器处 理 请求的时间)

 proxy_send_timeout :后端服务器数据回传时间_就是在规定时间之内后端服务器必须传完所有的数据

   server {

      listen 80;  server_name a.a.com;

      location / {

         proxy_pass http://jt;

         proxy_connect_timeout       3; 

           proxy_read_timeout          3; 

           proxy_send_timeout          3;   

      }

   }

  

检查配置Nginx健康检查配置Nginx健康检查配置

猜你喜欢

转载自blog.csdn.net/qq_34604350/article/details/81191515