集群

集群:
apache、nginx
tomcat:理论上,单节点tomcat能够稳定处理请求并发量200-300
负载均衡

失败迁移

服务端集群:
a.水平集群:将服务器安装在各个不同的计算机上(失败迁移)
b.垂直集群:将多个服务器,安装在同一个计算机上(负载均衡)
c.水平+垂直

搭建集群:
apache:特点是处理静态资源(html 图片 js)这里的apache是个服务工具
tomcat:特点 ,可以 处理动态资源
apache+tomcat:动静分离

apache :请求的分流操作

下载apache服务器工具

删除服务
sc delete 服务名

配置:
conf/http.conf
Define SRVROOT "D:clusterApache24"
可以将apache配置成windows服务:
管理员身份打开cmd,通过命令注册apache服务

"D:clusterApache24inhttpd.exe" -k install -n apache24

注册成功后,启动,localhost查看是否成功访问

准备tomcat:复制两份,改端口
i.规划并修改端口:
server端口号 http协议端口 ajp协议端口号
tomcat-a 1005 1080 1009
tomcat-b 2005 2080 2009

ii.配置引擎Engine:server.xml
增加jvmRoute
<Engine defaultHost="localhost" name="Catalina" jvmRoute="tomcat-a">
<Engine defaultHost="localhost" name="Catalina" jvmRoute="tomcat-b">
iii.打开集群开关:server.xml
打开以下注释
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>

tomcat集合配置+apache启动
->结合:mod_jk.so 下载

配置mod_jk.so:
a.存放位置;Apache24modulesmod_jk.so
b.配置 Apache24confworkers.properties


分享session策略
1.sticky:固定将每一个用户的请求分给特定的服务器,后期的请求不会分给其他服务器
2.session广播:自动同步session
弊端:如果服务器太多,可能造成广播风暴(建一个服务器的session,需要同步到其他所有的服务器中)
3.集中管理方式(推荐):将各服务器的session集群存储到一个数据库中

c.配置mod_jk.conf(用于加载mod_jk.so和workers.properties)

其中JkMount /* controller,表示拦截一切请求。

mod_jk.so workers.properties->mod_jk.conf->apache程序会自动加载httpd.conf

配置httpd.conf:在apache启动时自动加载mod_jk.conf 追加include conf/mod_jk.conf

集群:应用阶段、部署实施

CATALINA_HOME会使启动tomcat时,自动开启CATALINA_HOME指定的tomcat。而集群中们需要开启多个不同的tomcat,因此再单击环境下,需要删除CATALINA_HOME

依次启动apache、tomcata、tomcatb

原因:apache之前已经成功运行,但是重启失败
分析思路:成功运行的时机;第一次运行
失败时间:apache+tomcat整合
所以问题在于整合

测试:失败迁移 负载均衡 session共享(未实现 )


解决bug


细节:
apache:
worker.list=controller,tomcata,tomcatb


tomcat配置:(只需要保证 所有tomcat的jvmRoute不能重名即可 ,可以和apache中的命名不一致)
jvmRoute="tomcat-a"
jvmRoute="tomcat-b"

流程:apache->workers.properties中配置的 ip:端口 找到具体的tomcat服务(与tomcat中的jvmRoute="tomcat-a"的没有关系)

tomcat服务的目录名:(任意)
tomcata
tomcatb

 ps:session共享 未能实现,有空再试试 !

原文地址:https://www.cnblogs.com/mayouyou/p/13172721.html