集群:
apache、nginx
tomcat:理论上单节点tomcat能够稳定的处理请求并发量200-300;
负载均衡
失败迁移
服务端集群:
a.水平集群:将服务器安装在各个不同的计算机上(失败迁移)
b.垂直集群:将多个服务器,安装在同一个计算机上(负载均衡)
水平+垂直
搭建集群:
apache:特点是处理静态资源(html 图片 js),这里的apache是一个服务器工具,不是之前理解的基金组织
tomcat:特点是可以处理动态资源
apache+tomcat:动静分离
apache:请求的分流操作
下载apache服务器工具:
https://www.apachehaus.com/cgi-bin/download.plx?dli=gWIZkcUtWQ10kentWZHBHUKVlUGR1UwpnTqZVb
配置:
conf/httpd.conf
Define SRVROOT "E:\cluster\Apache24"
可以将apache配置成windows服务:
管理员身份打开cmd,通过命令注册apache服务
"E:\cluster\Apache24\bin\httpd.exe" -k install -n apache24
如果在注册apache服务时,提示“丢失VCRUNTIME140.DLL”,则需要下载并安装vc_redist.x64.exe。下载地址:
https://www.microsoft.com/en-US/download/details.aspx?id=48145
删除服务
sc delete 服务名(apache24)
注册成功后,启动,localhost查看是否成功访问
准备tomcat:复制两份,改端口
i.规划并修改端口:server.xml
server端口号 http协议端口号 ajp协议端口号
tomcat-a: 1005 1080 1009
tomcat-b: 2005 2080 2009
ii.配置引擎Engine:server.xml
iii.打开集群开关server.xml
打开以下注释:
tomcat集群配置搞定,apache启动
->结合apache+tomcat:mod_jk.so
http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/windows/中的httpd.zip
配置mod_jk.so:
a.存放位置:E:\cluster\Apache24\modules\mod_jk.so
b.配置:E:\cluster\Apache24\conf\workers.properties
分布式session策略:
1、sticky:固定将每一个用户的请求分给特定的服务器,后期的请求不会分给其他服务器
2、session广播:自动同步session,
弊端:如果服务器太多,可能造成广播风暴(将一个服务器的session,需要同步到其他所有的服务器中)
3、集中管理方式(推荐):将各个服务器的session集群存储到一个数据库中
c.配置E:\cluster\Apache24\conf\mod_jk.conf(用于加载mod_jk.so和workers.properties)
其中JkMount /* controller,表示拦截一切请求。也可以只拦截jsp: /*.jsp
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下载完成后
失败时机: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