---tomcat+mod_jk+apache----
tomcat与Apache 服务器的关系;
http://blog.csdn.net/huangtingyu/article/details/3429789
--apache仅仅是http服务器,只支持静态的网页.
2.0.0.0.0是全零网络,代表默认网络
--apache(OS 10013)以一种访问权限不允许的方式做了一个访问套接字的尝试 ... apache的默认端口(80)被占用导致.
window 查看端口使用情况:
查看所有-->netstat -ano
查看指定-->netstat -aon|findstr "9050"
查看pid对应的进程-->tasklist|findstr "2016"
结束该进程-->taskkill /f /t /im tor.exe
/**
chrome 的默认非安全端口.
绿色版的tomcat启动 startup.bat 添加-->SET "JAVA_HOME=D:\jdk"
AJP:向包协议 AJP是为Tomcat与HTTP服务器之间通信而定制的协议,能提供较高的通信速度和效率
**/
3.Tomcat服务器与其他HTTP服务器之间通过专门的插件来通信(应该把JK插件安置在对方的HTTP服务器上。当HTTP服务器接收到客 户请求时,它会通过JK插件来过滤URL,JK插件根据预先配置好的URL映射信息,决定是否要把客户请求转发给Tomcat服务器处理)
4.开始--->
1.添加与aprache对应版本的mod_jk到Apache中(一般复制到modules中)
2.httpd.conf-->include conf/mod_jk.conf
mod_jk.conf -->JkWorkersFile conf/workers.properties
/*
LoadModule jk_module modules/mod_jk.so
JkWorkersFile conf/workers.properties
JkMount /*.jsp controller//设置对不同的请求的分发规则.
*/
3. workers.properties
/*
worker.controller.sticky_session=false #session是否是可黏贴的
/*
true表示会话具有粘性。意味着用户和1开始会话,以后用户从浏览器A发出的请求只要处于同一个会话中,负载均衡器就会始终让1来处理请求。这时候,集群不会进行会话复制。默认为false。前者为false,时候,后者的设置没什么影响。如果前者为true,后者也为true时候,表示始终连接。比如1异常终止,那么,服务端会返回500的错误。False的话,就发给2了,有可能不存在会话信息。
*/
worker.controller.sticky_session_force=1
#worker.controller.sticky_session=1
#有关session的共享(具体看下面官方的参数说明)
#========tomcat1========
worker.tomcat1.port=8009 #ajp13 端口号,在tomcat下server.xml配置,默认8009 对应如下:
#<Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/>
worker.tomcat1.host=localhost #tomcat的主机地址,如不为本机,请填写ip地址
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor=2 #server的加权比重,值越高,分得的请求越多
#========tomcat2========
worker.tomcat2.port=8099 #ajp13 端口号,在tomcat下server.xml配置,默认8009
worker.tomcat2.host=localhost #tomcat的主机地址,如不为本机,请填写ip地址
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor = 2 #server的加权比重,值越高,分得的请求越多
#========controller,负载均衡控制器========
worker.list = controller,tomcat1,tomcat2
worker.controller.type=lb
worker.controller.balance_workers=tomcat1,tomcat2 #指定分担请求的tomcat
*/
配置tomcat服务器:
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
jvmRoute名称
两个Tomcat配置文件Host节点的域名配置必须一样,server.xml中的jvmRoute名称必须和worker.properties中的tomcat实例名称一致,不然无法实现session_stricky。
如果不想实现粘性session, jvmRoute可以不配制。
如果不想实现session复制,Cluster配制的注释就无需去掉
测试项目-->
记得加<distributable/>否则会报:
context manager doesn't exist:localhost#/
自然集群也不会成功.
总结:看上面的文件组织,其实都可以放在httpd.conf中的,分开当然更易管理,
负载均衡:(软件实现):用一个前端控制器来分发请求到对应的服务器
在work.properties文件中添加了一个配置了AJP监听的glssFish也可以与tomcat同时工作(session共享待实现..)
----------------
sticky_session sticky_session_force 结论
0 0 session无黏性,session会复制
0 1 session无黏性,session会复制
1 0 session有粘性(非强制),session会复制
1 1 session有粘性(强制),session没必要再复制(此处有争议,待深入研
参考:
具体参数说明: http://tomcat.apache.org/connectors-doc/reference/workers.html
步骤:http://www.iteye.com/topic/1017961 ,http://o-oand0-0.iteye.com/blog/1328578 , http://kzpkzp.blog.163.com/blog/static/16869581820105132580272/
mod_jk vs mod_proxy http://sisopipo.com/blog/archives/258
mod_jk:https://tomcat.apache.org/tomcat-3.3-doc/mod_jk-howto.html
//mod_jk_proxy 待研究..