apache+JK+tomcat集群配置

2024-01-04 16:38
文章标签 配置 集群 tomcat apache jk

本文主要是介绍apache+JK+tomcat集群配置,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

[color=red]blog迁移至[/color]:[url=http://www.micmiu.com]http://www.micmiu.com[/url]

[size=x-large][color=blue]本文主要讲解如何在负载均衡的配置完成的基础上简单实现apache+JK+tomcat的集群配置[/size][/color]

[size=medium][color=red]有关apache+JK+tomcat负载均衡的安装及配置详见:[/color][/size]
[size=medium][url=http://sjsky.iteye.com/blog/918768]http://sjsky.iteye.com/blog/918768[/url][/size]

[size=large][color=blue]概述[/color][/size][list]
[*]集群方式和之前blog中的负载均衡基本配置相同, Tomcat 中的集群原理是通过组播的方式进行节点的查找并使用 TCP 连接进行会话的复制。
[*]集群不同于负载平衡的是,由于集群服务需要在处理请求之间不断地进行会话复制,复制后的会话将会慢慢变得庞大,因此它的资源占用率是非常高的,如果在并发量大的应用中,复制的会话会变得相当大,而使用的总内存更是会迅速升高。
[*]但集群的会话复制,增加了系统的高可用性。由于在每台服务器都保存有用户的 Session 信息,如果服务器集群中某一台宕机,应用可以自动切换到其它服务器上继续运行,而用户的信息不会丢失,这提高了应用的冗错性。
[*]具体采用负载平衡还是集群,这要取决于实际应用的具体需求了。
[/list]
下面讲述实现集群配置的修改:
tomcat官方参考文档:[url=http://tomcat.apache.org/tomcat-7.0-doc/cluster-howto.html]http://tomcat.apache.org/tomcat-7.0-doc/cluster-howto.html[/url]
[size=large][color=blue][一]实现集群的基本条件[/color][/size]
如果要实现session复制,需要满足以下七点:
[list]
[*]所有的session里的变量要实现序列化,继承java.io.Serializable
[*]去掉tomcat的conf/server.xml中Cluster的注释
[*]确认server.xml中定义好ReplicationValve
[*]如果tomcat实例运行同一台主机上,确保tcpListenPort的值唯一,一般情况下端口值的范围4000-4100
[*]确认web应用配置文件web.xml中有标签<distributable/>
[*]如果使用了mod_jk,那么<Engine name="Catalina" jvmRoute="node01" >中jvmRoute属性值要和worker.properties中的定义一致
[*]确保集群中的所有节点的时间同步。
[*]确保负载均衡软件设置为session sticky模式
[/list]
[size=large][color=blue][二]具体配置修改[/color][/size]
基本配置参见我的另一关于负载均衡配置的blog,里面讲得很详细
1、web.xml的根节点<webapp>下增加标签<distributable/>

2、server.xml中Cluster属性片段

<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.0.4" port="45564" frequency="500" dropTime="3000" />
<!-- 如果运行在同一台主机上port='4000'的值保证唯一,不能冲突 -->
<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.JvmRouteSessionIDBinderListener" />
<ClusterListener
className="org.apache.catalina.ha.session.ClusterSessionListener" />
</Cluster>

[size=large][color=blue][三]总结[/color][/size]
在我的配置和测试过程中得出以下几点:
1、sticky_session的值只是决定sessin是否具有粘性,并不像很多文章说的是指session复制
2、集群中tomcat的session能否复制取决于server.xml中的<Cluster>属性的定义
3、在测试中只要定义好<Cluster>属性,那么session复制就能实现了,和sticky_session的值没有关系,此时如果设置sticky_session=true,表示同时实现session粘性,即同一session会一直访问同一个tomcat,如果sticky_session=false,那么具体访问哪个tomcat是由分发控制器来决定的。


------------------------------------分------------------------------------隔------------------------------------线--------------------------------------

这篇关于apache+JK+tomcat集群配置的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/569940

相关文章

服务器集群同步时间手记

1.时间服务器配置(必须root用户) (1)检查ntp是否安装 [root@node1 桌面]# rpm -qa|grep ntpntp-4.2.6p5-10.el6.centos.x86_64fontpackages-filesystem-1.41-1.1.el6.noarchntpdate-4.2.6p5-10.el6.centos.x86_64 (2)修改ntp配置文件 [r

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

CentOS7安装配置mysql5.7 tar免安装版

一、CentOS7.4系统自带mariadb # 查看系统自带的Mariadb[root@localhost~]# rpm -qa|grep mariadbmariadb-libs-5.5.44-2.el7.centos.x86_64# 卸载系统自带的Mariadb[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7

HDFS—集群扩容及缩容

白名单:表示在白名单的主机IP地址可以,用来存储数据。 配置白名单步骤如下: 1)在NameNode节点的/opt/module/hadoop-3.1.4/etc/hadoop目录下分别创建whitelist 和blacklist文件 (1)创建白名单 [lytfly@hadoop102 hadoop]$ vim whitelist 在whitelist中添加如下主机名称,假如集群正常工作的节

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd

hadoop开启回收站配置

开启回收站功能,可以将删除的文件在不超时的情况下,恢复原数据,起到防止误删除、备份等作用。 开启回收站功能参数说明 (1)默认值fs.trash.interval = 0,0表示禁用回收站;其他值表示设置文件的存活时间。 (2)默认值fs.trash.checkpoint.interval = 0,检查回收站的间隔时间。如果该值为0,则该值设置和fs.trash.interval的参数值相等。

NameNode内存生产配置

Hadoop2.x 系列,配置 NameNode 内存 NameNode 内存默认 2000m ,如果服务器内存 4G , NameNode 内存可以配置 3g 。在 hadoop-env.sh 文件中配置如下。 HADOOP_NAMENODE_OPTS=-Xmx3072m Hadoop3.x 系列,配置 Nam

wolfSSL参数设置或配置项解释

1. wolfCrypt Only 解释:wolfCrypt是一个开源的、轻量级的、可移植的加密库,支持多种加密算法和协议。选择“wolfCrypt Only”意味着系统或应用将仅使用wolfCrypt库进行加密操作,而不依赖其他加密库。 2. DTLS Support 解释:DTLS(Datagram Transport Layer Security)是一种基于UDP的安全协议,提供类似于

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

搭建Kafka+zookeeper集群调度

前言 硬件环境 172.18.0.5        kafkazk1        Kafka+zookeeper                Kafka Broker集群 172.18.0.6        kafkazk2        Kafka+zookeeper                Kafka Broker集群 172.18.0.7        kafkazk3