1 tomcat有一个内部组件cluster,可以放在host里或engine
2 集群每个节点都需要安装,时间同步,节点基于多播方式基于228.0.0.4的地址通信,多播的端口45564,(只要监听这一端口上的是)
3,主机上监听在端口上用来接收多播信息(4000-4100)
4定义两个interceptor当tomcat发生错误如何能探测出来
会话管理器:种类
1 会话在缓存中随后将其保存在磁盘中
2 每一会话本地保存还要多播传给其他几点
3 种可以进行会话备用
4 讲会话放在外面会话服务器上
1) 配置启用集群,将下列配置放置于<engine>或<host>中;server.xml中进行配置
<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"/> 这么久收不到表示宕机了
<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>
对之前test做测试
cp web.xml /var/lib/tomcat/webapps/test/WEB-INF/
vim web.xml
编辑WEB-INF/web.xml,添加<distributable/>;
重启tomcat,systemctl start tomcat.service 此时报有语法错误
注意:CentOS 7上的tomcat自带的文档中的配置示例有语法错误;
1 是因为server.xml 中clusterListner 最后没有加\
<ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
2 绑定的地址为auto时,会自动解析本地主机名,并解析得出的IP地址作为使用的地址;将address= auto 改为自己的地址也有可能是hosts文件的解析
3 报没有支持多播机制,multicast 原因可能是因为地址的临时配置,
重启服务