Tomcat--集群配置

Tomcat集群

由于单台Tomcat的承载能力是有限的,当我们的业务系统用户量比较大,请求压力比较大时,单台Tomcat是扛不住的,这个时候,就需要搭建Tomcat集群,而目前比较流行的做法就是通过nginx来实现Tomcat集群的负载均衡。

在这里插入图片描述

环境准备

在服务器上,安装两台tomcat,然后分别修改tomcat服务器的端口号:

			第一台      第二台
8005 -----> 8015 ----> 8025 (SHUTDOWN端口)
8080 -----> 8888 ----> 9999 (HTTP端口)
8009 -----> 8019 ----> 8029 (AJP端口)

修改tomcat欢迎页面:
在这里插入图片描述
在这里插入图片描述

nginx配置:

	upstream cluster{
		server 127.0.0.1:8888;
		server 127.0.0.1:9999;
	}

	server {
        listen       99;
        server_name  127.0.0.1;

		location / {
			proxy_pass http://cluster/;
		}
	}

测试:启动nginx和两个tomcat,访问localhost:99
在这里插入图片描述
在这里插入图片描述
集群搭建成功,实现了负载均衡(轮询)。

负载均衡策略

  1. 轮询:最基本的配置方法,它是upstream模块默认的负载均衡均衡策略。每个请求会按事件顺序逐一分配到不同的后端服务器
	upstream cluster{
		server 127.0.0.1:8888;
		server 127.0.0.1:9999;
	}
参数 说明
fail_timeout 于max_fails结合使用
max_fails 设置在fail_timeout参数设置的时间内最大失败次数,如果这个时间内,所有针对该服务器的请求都失败了,那么认为该服务器停机了
fail_time 服务器会被认为停机的时间长度,默认为10s
backup 标记该服务器为备用服务器。当主服务器停止时,请求会被发送到它这里
down 标记服务器停机了
  1. weght:权重方式,在轮询策略的基础上指定轮询几率
	upstream cluster{
		server 127.0.0.1:8888 weight=3;
		server 127.0.0.1:9999 weiht=1;
	}

weight参数用于指定参与轮询的几率,weight的默认值为1;weight于访问几率成正比,次策略比较适合服务器的硬件配置差别比较大的情况。

  1. ip_hash:指定负载均衡器按照基于客户端IP的分配方式,这个方法确保了相同的客户端的请求一直发送到相同的服务器,以保证session回话。这样每个访客都固定访问一个后端服务器,可以解决session不能跨服务器的问题
	upstream cluster{
		ip_hash;
		server 127.0.0.1:8888 weight=3;
		server 127.0.0.1:9999 weiht=1;
	}

Session共享方案

在Tomca集群中,如果应用需要用户进行登录,那么这个时候,由于tomcat做了负载均衡,则用户登录并访问应用系统时,就会出现问题。
在这里插入图片描述

解决上述问题,有以下几种方案:

一. ip_hash策略

一个用户发起的请求,只会请求到同一个tomcat上。那么这个时候就不存在session共享问题了。

二. Session复制

在server.xml中的<Engine>标签中添加如下配置(每个tomcat节点都需要):

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>

在web应用的web.xml配置中添加如下配置(部署的每个web应用都需要):

<distributable/>

注意:该方案只适用于小型项目,大型集群项目并不使用,因为session的复制需要时间和资源耗费。

三. SSO-单点登录

单点登录(Single Sign On),简称SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有互相信任的应用系统,也是用来解决集群环境Session共享的方案之一。

在这里插入图片描述

发布了892 篇原创文章 · 获赞 2314 · 访问量 31万+

猜你喜欢

转载自blog.csdn.net/cold___play/article/details/105164894