初识TomCat之4——TomCat负载均衡及基于IP的Session sticky

一、背景介绍

当一个tomcat服务器性能遇到瓶颈时,通常的做法是将tomcat服务器横向扩容,使用多台tomcat服务器来响应用户请求,但此时又引入了一个新问题,就是用户每次请求都会随机给他分配一个tomcat服务器,下面介绍如何实现tomcat实现负载均衡和会话绑定

二、实验拓扑

本次实验采用3台主机,操作系统为centos 7.4,JDK版本为1.8,tomcat版本为8.5,拓扑如下图所示:

当用户请求指定的域名时,静态内容由反代服务器自身响应,动态内容转交后端tomcat服务器响应,为避免不必要障碍,关闭3台主机的iptables和selinux。

三、配置Nginx作为反代服务器

1.配置后端tomcat服务器(以tomcat1为例)

(1)安装JDK和tomcat(略)

(2)在tomcat配置文件conf/server.xml中,新增一个虚拟主机,主机名为“www.ark.com”,并指定主机位置和根目录

(3)创建对应的目录及主页文件(略),启动tomcat,测试访问是否正常

(4)在tomcat2上做相同的配置

2.配置前端nginx服务器

(1)安装nginx程序(略)

(2)在nginx的配置文件conf/nginx.conf中添加upstream段,并设置tomcat1和tomcat2为上游服务器地址

(3)由于要实现动静分离,所以在安装目录下的web目录中提供一个主页作为静态页面

(4)所有以.jsp或者.do结尾的请求都发往上游服务器,由于上游服务器的默认虚拟主机不是www.ark.com,所以要使用proxy_set_header配置项,启用该配置项后,nginx再向上游服务器传递请求时就会带上请求首部,至此操作完成。

(5)此时请求www.ark.com时,静态内容会由nginx自身响应

(6)而动态内容请求会以轮询的方式传递到2个tomcat服务器上

(7)如果要实现会话绑定,只需要在upstream配置段启用ip_hash选项,来自同一IP的请求就会始终被发往一个tomcat服务器

四、配置apache作为反代服务器

apache服务器实现动静分离有一定的困难,但相对于nginx他又可以和tomcat之间以效率更高的ajp协议进行通讯,具体采用哪种方法根据业务需求选择,继续使用上个实验的环境

1.配置apache负载均衡

(1)关闭前端服务器的nginx服务,安装apache服务(略)

(2)找到conf/httpd.conf配置文件注销根目录

(3)在conf.d目录下创建一个vhosts.conf配置文件,供虚拟主机使用,在配置文件中首先定义一个集群,将所有的请求都发给后端服务器,关键要开启ProxPreserveHost选项,该选项可以将用户请求的主机名传递至后端,类似nginx中的proxy_set_header,至此操作完成

(4)在使用IP地址(172.16.10.10)请求时,得到的是tomcat主页

(5)而动态内容请求会以轮询的方式传递到2个tomcat服务器上

(6)如果要使用ajp协议,无非是将proxy中的http协议与端口换成ajp协议和对应的端口号

2.apache会话绑定

(1)首先在tomcat服务器的Engine上设置jvmroute(此处以tomcat1为例)

(2)然后再到apache服务器的proxy配置段将设置的jvmroute名称填写进route选项,并开启stickysession选项,重启tomcat和apache服务器,会话已实现绑定,马哥视频中http协议需要添加set-cookie配置项才能实现session绑定,在测试中发现不添加该配置项也可以实现

(3)使用ajp协议也只需要将apache服务器上的http协议改为ajp协议即可

补充说明

apache启用负载均衡功能是通过proxy_balancer_module子模块实现的

该模块有一个内置的管理界面,可以在线管理后端的负载策略

只需要在VirtualHost段中增加一个Location即可,且不要将对该Location的请求传递到后端

原文地址:http://blog.51cto.com/arkling/2114147

时间: 2024-08-02 13:40:54

初识TomCat之4——TomCat负载均衡及基于IP的Session sticky的相关文章

Nginx 负载均衡(基于IP/端口)

Nginx负载均衡的原理图: 网站内容分别部署在apache1和apache2上,在Nginx上进行负载均衡设置,当用户想访问apache1和apache2服务器上的内容时,只需要访问Nginx服务器,Nginx会将请求分别转发到web服务器apache1和apache2上,web服务器处理请求后,将请求的内容发送到Nginx上,Nginx再将内容返回给用户那里. 这个转发过程,对于用户来说是感受不到的,既能保护web服务器安全,又能提高web服务器的性能. 负载均衡设置方式: 如图,有一台Ng

Nginx+tomcat配置集群负载均衡

转自:http://blog.csdn.net/bruce_6/article/details/38228299 相信很多人都听过nginx,这个小巧的东西慢慢地在吞食apache和IIS的份额.那究竟它有什么作用呢?可能很多人未必了解. 说到反向代理,可能很多人都听说,但具体什么是反向代理,很多人估计就不清楚了.摘一段百度百科上的描述: 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回

Apache+Tomcat +mod_proxy集群负载均衡及session

  序言: 在玩Apache+Tomcat +mod_jk集群负载均衡及session的时候发现,还有一种方式可以实现,就是网上各位大牛们说的mod_proxy反向代理. 实在弄的我的知识细胞洋洋.实践后打个报告,给自己.. 环境说明: 操作系统:win7   64位 Javajdk: 1.7 Apache:httpd-2.2.25-win32-x86-no_ssl.msi    (本地安装路径:D:\Program Files (x86)\Apache2.2\)Tomcat: 7.0.42 

Tomcat系列之Apache负载均衡请求至Tomcat及DeltaManager的使用

Tomcat系列之Apache负载均衡请求至Tomcat及DeltaManager的使用

通过Apache+mod_JK+Tomcat集群实现负载均衡

通过Apache+mod_JK+Tomcat集群实现负载均衡 1.概念 通过Apache+mod_JK+Tomcat集群搭建起来的环境主要用来实现负载均衡和高可用性.使用apache作为反向代理服务器实现负载均衡,使用mod_jk可以实现节点的故障恢复功能,达到高可用性.使用tomcat集群功能实现sessionID共享复制.用户访问数据在到达apache后,如果是静态内容,直接由apache处理,如果是动态请求,就通过mod_jk调用后端的一台tomcat服务器去处理请求,可以通过黏性Sess

基于apache实现tomcat集群的负载均衡

概述 Tomcat是一个完全功能的HTTP服务器,能够独立完成接收客户端请求,处理请求,然后封装响应报文响应客户端.但是Tomcat的并发响应能力并不强,所以往往使用httpd或nginx服务器用于在前端接收客户端请求,然后将请求调度至后端多个Tomcat节点.本文介绍的是利用httpd作为反向代理服务器,实现Tomcat的负载均衡. httpd连接后端的Tomcat服务器,需要启用对应的模块.能够实现该功能的有两个模块:mod_proxy,mod_jk.mod_proxy是新出的模块,只有在a

轻松实现Apache,Tomcat集群和负载均衡

作者:罗代均 ldj_work#126.com,转载请保持完整性 0, 环境说明 Apache  :apache_2.0.55     1 个 Tomcat:  apache-tomcat-5.5.17 (zip版) 2个 mod_jk:: mod_jk-apache-2.0.55.so  1个 第一部分:负载均衡 负载均衡,就是apache将客户请求均衡的分给tomcat1,tomcat2....去处理    1.安装apche,tomcat http://httpd.apache.org/ 

转】Nginx+tomcat配置集群负载均衡

原博文出自于:http://blog.csdn.net/bruce_6/article/details/38228299         感谢! 相信很多人都听过nginx,这个小巧的东西慢慢地在吞食apache和IIS的份额.那究竟它有什么作用呢?可能很多人未必了解. 说到反向代理,可能很多人都听说,但具体什么是反向代理,很多人估计就不清楚了.摘一段百度百科上的描述: 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务

使用Apache + mod_jk + tomcat来实现tomcat集群的负载均衡出现的无法加载mod_jk.conf文件的问题

用Apache + mod_jk + tomcat来实现tomcat集群的负载均衡的 如果出现了问题,可以用cmd  cd到Apache安装文件的bin下,运行httpd文件,错误信息就会打印出来. 我这里出现的问题是  Include conf/mod_jk.conf无法加载该配置文件(英文翻译过来就是这个问题) 为什么呢? 经过反复的检查发现是我建立的关于mode_jk.conf文件跟work.properties文件格式不对, 经过检查,用文本文件创建了这两个文件之后,文件的后缀名都是.c