Tomcat反带和集群
Nginx|Apache反带用户请求到Tomcat
- LNMT:
client -->http --> nginx --> reverse_proxy --> http --> tomcat (http connector)
location ~* \.(jsp|do)$ {
proxy_pass http://web1.evescn.com:8080;
}
- LAMT:
client --> http --> httpd --> reverse_proxy --> {http|ajp} --> tomcat {http connector|ajp connector}
反代模块:
主:proxy_module
子:proxy_module_http, proxy_module_ajp
proxy_module_http:
<VirtualHost *:80>
ServerName web1.evescn.com
ProxyVia On
ProxyRequests Off # 开启反向代理时,需要关闭正向代理
ProxyPreserveHost On # 直接反带用户请求的虚拟主机名
<Proxy *>
Require all granted
</Proxy>
ProxyPass / http://172.16.100.67:8080/
ProxyPassReverse / http://172.16.100.67:8080/
<Location />
Require all granted
</Location>
</VirtualHost>
proxy_module_ajp:
<VirtualHost *:80>
ServerName web1.evescn.com
ProxyVia On
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
Require all granted
</Proxy>
ProxyPass /status !
ProxyPass / ajp://172.16.100.67:8009/
ProxyPassReverse / ajp://172.16.100.67:8009/
<Location />
Require all granted
</Location>
</VirtualHost>
- LNAMT:
client -->http --> nginx --> httpd --> reverse_proxy --> {http|ajp} --> tomcat {http connector|ajp connector}
Tomcat会话保持
session sticky
source ip
cookie
session cluster:
session server
kv: memcached, redis
Tomcat集群
- (1) LB tomcat
nginx tomcats (upsteam模块)
apache tomcats
- (2) LB tomcat cluster
- (3) LB tomcat
session server
memcached
- apache: tomcats
(1) apache:
mod_proxy
mod_proxy_http
mod_proxy_balancer tomcat:
http connector
(2) apache:
mod_proxy
mod_proxy_ajp
mod_proxy_balancer
tomcat:
ajp connector
(3) apache:
mod_jk
tomcat:
ajp connector
- 第一种方法的实现:
<proxy balancer://lbcluster1>
BalancerMember http://172.16.100.68:8080 loadfactor=10 route=TomcatA
BalancerMember http://172.16.100.69:8080 loadfactor=10 route=TomcatB
</proxy> <VirtualHost *:80>
ServerName web1.evescn.com
ProxyVia On
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
Require all granted
</Proxy>
ProxyPass / balancer://lbcluster1/
ProxyPassReverse / balancer://lbcluster1/
<Location />
Require all granted
</Location>
</VirtualHost>
如果需要会话绑定:
Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
<proxy balancer://lbcluster1>
BalancerMember http://172.16.100.68:8080 loadfactor=10 route=TomcatA
BalancerMember http://172.16.100.69:8080 loadfactor=10 route=TomcatB
ProxySet stickysession=ROUTEID
</proxy>
<VirtualHost *:80>
ServerName web1.evescn.com
ProxyVia On
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
Require all granted
</Proxy>
ProxyPass / balancer://lbcluster1/
ProxyPassReverse / balancer://lbcluster1/
<Location />
Require all granted
</Location>
</VirtualHost>
- 第二种方法的实现:
#Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
<proxy balancer://lbcluster1>
BalancerMember ajp://172.16.100.68:8009 loadfactor=10 route=TomcatA
BalancerMember ajp://172.16.100.69:8009 loadfactor=10 route=TomcatB
ProxySet stickysession=ROUTEID
</proxy>
<VirtualHost *:80>
ServerName web1.evescn.com
ProxyVia On
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
Require all granted
</Proxy>
ProxyPass / balancer://lbcluster1/
ProxyPassReverse / balancer://lbcluster1/
<Location />
Require all granted
</Location>
</VirtualHost>
- 补充:mod_proxy_balancer模块内置的manager:
<Location /balancer-manager>
SetHandler balancer-manager
Proxypass !
Order Deny,Allow
Allow from all
</Location>
- 第三种方式:
mod_jk:额外编译安装
(1) 反向代理
模块配置文件:mod_jk.conf
LoadModule jk_module modules/mod_jk.so
JkWorkersFile /etc/httpd/conf.d/workers.properties
JkLogFile logs/mod_jk.log
JkLogLevel debug
JkMount /* TomcatA
JkMount /status/ stat1 workers配置文件:workers.properties
worker.list=TomcatA,stat1
worker.TomcatA.port=8009
worker.TomcatA.host=172.16.100.68
worker.TomcatA.type=ajp13
worker.TomcatA.lbfactor=1
worker.stat1.type = status 注意:status的访问要做访问控制;
(2) 负载均衡
模块配置文件:mod_jk.conf
LoadModule jk_module modules/mod_jk.so
JkWorkersFile /etc/httpd/conf.d/workers.properties
JkLogFile logs/mod_jk.log
JkLogLevel debug
JkMount /* lbcluster1
JkMount /status/ stat1 workers配置文件:workers.properties
worker.list = lbcluster1,stat1
worker.TomcatA.type = ajp13
worker.TomcatA.host = 172.16.100.68
worker.TomcatA.port = 8009
worker.TomcatA.lbfactor = 1
worker.TomcatB.type = ajp13
worker.TomcatB.host = 172.16.100.69
worker.TomcatB.port = 8009
worker.TomcatB.lbfactor = 1
worker.lbcluster1.type = lb
worker.lbcluster1.sticky_session = 0
worker.lbcluster1.balance_workers = TomcatA, TomcatB
worker.stat1.type = status
- Session Cluster:
session manager:会话管理器
StandardManager
PersistentManager:
FileStore
JDBC
DeltaManager
BackupManager
构建步骤:
(1) 各节点配置使用deltamaanager:
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
channelSendOptions="8"> <Manager className="org.apache.catalina.ha.session.DeltaManager"
expireSessionsOnShutdown="false"
notifyListenersOnReplication="true"/> <Channel className="org.apache.catalina.tribes.group.GroupChannel">
<Membership className="org.apache.catalina.tribes.membership.McastService"
address="228.0.1.7"
port="45564"
frequency="500"
dropTime="3000"/>
<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
address="auto"
port="4000"
autoBind="100"
selectorTimeout="5000"
maxThreads="6"/> <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
<Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
</Sender>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
</Channel> <Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
filter=""/>
<Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/> <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
tempDir="/tmp/war-temp/"
deployDir="/tmp/war-deploy/"
watchDir="/tmp/war-listen/"
watchEnabled="false"/> <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster> (2) 为需要使用session cluster的webapps开启session distribution的功能:
WEB-INF/web.xml中添加
<distributable/>
Tomcat反带和集群的更多相关文章
- 基于Tomcat的Solr3.5集群部署
基于Tomcat的Solr3.5集群部署 一.准备工作 1.1 保证SOLR库文件版本相同 保证SOLR的lib文件版本,slf4j-log4j12-1.6.1.jar slf4j-jdk14-1.6 ...
- Nginx+Tomcat+Memcached负载均衡集群服务搭建
操作系统:CentOS6.5 本文档主要讲解,如何在CentOS6.5下搭建Nginx+Tomcat+Memcached负载均衡集群服务器,Nginx负责负载均衡,Tomcat负责实际服务,Memc ...
- 基于nginx的tomcat负载均衡和集群
要集群tomcat主要是解决SESSION共享的问题,因此我利用memcached来保存session,多台TOMCAT服务器即可共享SESSION了. 你可以自己写tomcat的扩展来保存SESSI ...
- nginx+tomcat+memcached搭建服务器集群及负载均衡
在实际项目中,由于用户的访问量很大的原因,往往需要同时开启多个服务器才能满足实际需求.但是同时开启多个服务又该怎么管理他们呢?怎样实现session共享呢?下面就来讲一讲如何使用tomcat+ngin ...
- nginx+tomcat 配置负载均衡集群 (转载)
一.Hello world 1.前期环境准备 准备两个解压版tomcat,如何同时启动两个tomcat,请看我的另一篇文章<一台机器同时启动多个tomcat>. nginx官网下载解压版n ...
- 通过 Terracotta实现基于Tomcat的Web应用集群
[转]通过 Terracotta实现基于Tomcat的Web应用集群 博客分类: 企业应用面临的问题 Java&Socket 开源组件的应用 tomcatweb session集群服务器负载均 ...
- apache的tomcat负载均衡和集群配置 "
略看了一下,感觉太复杂,要配置的东西太多,因此在这里写出一种更简洁的方法. 要集群tomcat主要是解决SESSION共享的问题,因此我利用memcached来保存session,多台TOMCAT服务 ...
- 简单的 Nginx+Tomcat 配置负载均衡集群
简单 Nginx+Tomcat 配置负载均衡集群 前期准备 解压两个tomcat,修改端口号 server1:8081 server:8082 同时启动 nginx官网下载解压版nginx 创建一个简 ...
- Nginx反代MogileFS集群
上一篇博文我们主要聊了下分布式文件系统MogileFS的组件以及部署使用,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13677279.html:今天我们主要 ...
随机推荐
- 连接池Connection timed out
当应用程序使用数据库连接池(或带服务程序的连接池)进行数据连接时,防火墙的设置有可能会导致连接出现超时或者被重置的问题.当从数据库读数据(或服务程序客户端读取数据)的时候 有可能会 Connectio ...
- CSS3手风琴下拉菜单
在线演示 本地下载
- 非root权限的linux用法添加工作路径
修改~目录的bashrc文件: 1.cd 到~目录. 2.ls -a ,bashrc文件是隐藏的. 3.vim .bashrc;export PATH=$PAHT:要添加的工作路径. 4.source ...
- INSPIRED启示录 读书笔记 - 第3章 产品管理与项目管理
互联网让两者变得不同 在传统的零售软件领域,产品经理常常兼任项目经理的工作,随着互联网的发展,两者的职责区别也越来越明显 产品管理的职责是探索(定义)有价值的.可用的.可行的产品 项目管理的职责是关注 ...
- 创建Android守护进程(底层服务)【转】
本文转载自:https://blog.csdn.net/myfriend0/article/details/80016739 创建Android守护进程(底层服务) 前言 Android底层服务,即运 ...
- tomcat 正常启动但不能访问
Eclipse中的Tomcat可以正常启动,不过发布项目之后,无法访问,包括http://localhost:8080/的小猫页面也无法访问到,报404错误.这是因为Eclipse所指定的Server ...
- Classloader机制
1.概述? 类加载器:负责.class文件加载到内存中,并为之生成对应的Class对象,也就是字节码对象.这样就可以使用这个类中的成员变量和方法了.而被加载到内存中的class文件就会变成class对 ...
- SecureCRT按退格键出现^H问题
1. 选择选项>>会话选项>>终端>>映射键
- web应用路径问题(相对路径,绝对路径,动态获取路径)
1.相对路径和绝对路径 绝对路径:以 “ / ” 开头的路径,是完整的路径. 相对路径:不以 “ / ” 开头的路径,是相对于当前web资源目录的路径. 在绝对路径中, “ / ” 的含义有两种解释: ...
- YARN中的失败分析
YARN中的失败分析 对于在YARN中运行的MapReduce程序,需要考虑以下几种实体的失败任务.application master.节点管理器.资源管理器 1. 任务运行失败 任务运行失败类似于 ...