- 安装Apache基本模块
- 后台监控
- 负载均衡简单测试
- 配置Tomcat相关模块(AJP)
- 保持Session唯一,粘性会话
- Tomcat集群,Session复制
- #启用模块
- sudo a2enmod <model>
- #禁用模块
- sudo a2dismod <model>
- #代理核心模块
- sudo a2enmod proxy
- #代理AJP模块
- sudo a2enmod proxy_ajp
- #代理负载均衡模块
- sudo a2enmod proxy_balancer
- #代理HTTP模块
- sudo a2enmod proxy_http
- #代理FTP模块
- sudo a2enmod proxy_ftp
![6361a535-f984-3518-a6ce-aa250dbb7251.jpg](http://dl.iteye.com/upload/attachment/296322/6361a535-f984-3518-a6ce-aa250dbb7251.jpg)
- apache2.conf核心配置文件,一般不需要修改!
- conf.d目录,里面包含了一些字符集设置,文档等设置!
- dav_svn.authz和dav_svn.passwd是前面做SVN时,相关权限、密码文件。
- envvars定义了运行时的用户身份——www-data。
- httpd.conf是Apache留给我们自己折腾的配置文件,默认为空。apache2.conf会加载这个文件。
- ports.conf端口默认配置。apache2.conf会加载这个文件。
- magic为mod_mime_magic模块服务。
- mods-enabled和mods-available mods-enabled会被apache2.conf加载,里面包含*.load和*.conf文件。*.load文件中是加载相应的模块(位于/usr/lib/apache2/modules/中),而*.conf中是对应的基本配置。但这些文件其实都是链接到mods-available中相应的文件上。当我们通过a2enmod操作时,实际上正是操作了这些软链接。
- sites-available和sites-enabled 与 mods-enabled和mods-available的关系类似,只是其中包含的是站点内容。
- sudo vi /etc/apache2/mods-available/proxy.conf
![61551c89-4bb6-3f01-9eac-60fcf5952365.jpg](http://dl.iteye.com/upload/attachment/296343/61551c89-4bb6-3f01-9eac-60fcf5952365.jpg)
- <Proxy *>
- AddDefaultCharset off
- Order deny,allow
- #Deny from all
- Allow from localhost ip6-localhost
- </Proxy>
- <Proxy balancer://zlex>
- BalancerMember http://localhost:8080/
- BalancerMember http://192.168.49.1:8080/
- </Proxy>
- ProxyPass /zlex balancer://zlex
- ProxyPassReverse /zlex balancer://zlex
- #系统信息模块
- sudo a2enmod info
- <Location /balancer-manager>
- SetHandler balancer-manager
- Order Deny,Allow
- #Deny from all
- Allow from localhost ip6-localhost
- </Location>
- sudo vi /etc/apache2/mods-available/info.conf
![51df4a5a-3631-3d6d-b177-0a1e1050e6fa.jpg](http://dl.iteye.com/upload/attachment/296388/51df4a5a-3631-3d6d-b177-0a1e1050e6fa.jpg)
- sudo /etc/init.d/apache2 restart
![点击查看原始大小图片 86aee243-b2d0-3863-9148-a7128678c368.jpg](http://dl.iteye.com/upload/attachment/296419/86aee243-b2d0-3863-9148-a7128678c368.jpg)
![点击查看原始大小图片 93f8c3ca-9674-3080-88b6-9f52bb62b1e4.jpg](http://dl.iteye.com/upload/attachment/296460/93f8c3ca-9674-3080-88b6-9f52bb62b1e4.jpg)
![点击查看原始大小图片 6e684559-2d12-34c1-8a01-dacaa98ef59b.jpg](http://dl.iteye.com/upload/attachment/296457/6e684559-2d12-34c1-8a01-dacaa98ef59b.jpg)
![97928a4f-2d75-33aa-90fc-3a69287526ff.jpg](http://dl.iteye.com/upload/attachment/296422/97928a4f-2d75-33aa-90fc-3a69287526ff.jpg)
![点击查看原始大小图片 3b4fd628-fda4-3dc4-a283-f31ae2eb9dea.jpg](http://dl.iteye.com/upload/attachment/296424/3b4fd628-fda4-3dc4-a283-f31ae2eb9dea.jpg)
- sudo vi /etc/tomcat6/server.xml
- <Connector port="8009" protocol="AJP/1.3"
- URIEncoding="UTF-8"
- redirectPort="8443" />
- sudo vi /etc/apache2/mods-available/proxy.conf
- <Proxy balancer://zlex>
- BalancerMember ajp://localhost:8009/
- BalancerMember ajp://192.168.49.1:8009/
- </Proxy>
- sudo /etc/init.d/apache2 restart
![df374ea5-afe0-3f20-841d-711dd3ca0d4f.jpg](http://dl.iteye.com/upload/attachment/296433/df374ea5-afe0-3f20-841d-711dd3ca0d4f.jpg)
![icon_biggrin.gif](http://snowolf.iteye.com/images/smiles/icon_biggrin.gif)
- ProxyPass /zlex balancer://zlex stickySession=JSESSIONID noFailOver=On
- <Proxy balancer://zlex>
- BalancerMember ajp://localhost:8009/
- BalancerMember ajp://192.168.49.1:8009/
- </Proxy>
- 轮询均衡策略的配置
- 按权重分配均衡策略的配置
- 权重请求响应负载均衡策略的配置
- sudo vi /etc/tomcat6/server.xml
- <Engine
- name="Catalina"
- defaultHost="localhost"
- jvmRoute="tomcat1">
- <Engine
- name="Catalina"
- defaultHost="localhost"
- jvmRoute="tomcat2">
- sudo vi /etc/apache2/mods-available/proxy.conf
- <Proxy balancer://zlex>
- BalancerMember ajp://localhost:8009/zlex route=tomcat1
- BalancerMember ajp://192.168.49.1:8009/zlex route=tomcat2
- </Proxy>
- ProxyPass /zlex balancer://zlex
- ProxyPassReverse /zlex balancer://zlex
![点击查看原始大小图片 586aea62-c192-330c-98f5-cffe57c2f826.jpg](http://dl.iteye.com/upload/attachment/297345/586aea62-c192-330c-98f5-cffe57c2f826.jpg)
- <b>当前SessionID:</b>
- <br />
- <%
- String sessionID = session.getId();
- out.println(sessionID);
- System.err.println("sessionID = " + sessionID);
- // 如果有新的 Session 属性设置
- String dataName = request.getParameter("dataName");
- if (dataName != null && !dataName.isEmpty()) {
- String dataValue = request.getParameter("dataValue");
- session.setAttribute(dataName, dataValue);
- }
- %>
- <br />
- <br />
- <b>Session属性列表:</b>
- <br />
- <%
- Enumeration<String> e = (Enumeration<String>) session
- .getAttributeNames();
- while (e.hasMoreElements()) {
- String name = e.nextElement();
- String value = (String) session.getAttribute(name);
- out.println(name + " = " + value + "<br>");
- System.err.println(name + " = " + value);
- }
- %>
- <form method="POST">
- <ul style="list-style-type: none;">
- <li><label for="dataName">键:</label><input size="20" id="dataName"
- name="dataName"></li>
- <li><label for="dataValue">值:</label><input size="20"
- id="dataValue" name="dataValue"></li>
- <li><input type="submit" value="提交" /></li>
- </ul>
- </form>
- sudo /etc/init.d/apache2 restart
![2734ab1f-eb4a-3a56-926e-19cfd24b2560.jpg](http://dl.iteye.com/upload/attachment/297355/2734ab1f-eb4a-3a56-926e-19cfd24b2560.jpg)
![2766f7e1-f0bf-3c31-b8c2-e182dfad78ec.jpg](http://dl.iteye.com/upload/attachment/297357/2766f7e1-f0bf-3c31-b8c2-e182dfad78ec.jpg)
![b01de010-aecf-3eb4-8654-5ed15dfe75a0.jpg](http://dl.iteye.com/upload/attachment/297361/b01de010-aecf-3eb4-8654-5ed15dfe75a0.jpg)
![5d0f8478-911e-3518-92e0-915486f82be0.jpg](http://dl.iteye.com/upload/attachment/297363/5d0f8478-911e-3518-92e0-915486f82be0.jpg)
- sudo vi /etc/apache2/mods-available/proxy.conf
- ProxyPass /zlex balancer://zlex stickySession=JSESSIONID
引用
sticky模式 利用负载均衡器的sticky模式的方式把所有同一session的请求都发送到相同的Tomcat节点。这样不同用户的请求就被平均分配到集群 中各个tomcat节点上,实现负载均衡的能力。这样做的缺点是没有灾难恢复的能力。一旦一个节点发生故障,这个节点上所有的session信息全部丢 失; 同一用户同一session只和一个webServer交互,一旦这个webserver发生故障,本次session将丢失,用户不能继续使用 !
提交一个Session设定看看 : ![7e224798-010b-305c-bbd8-1219492b6714.jpg](http://dl.iteye.com/upload/attachment/297416/7e224798-010b-305c-bbd8-1219492b6714.jpg)
![79e0c91f-2e1e-3f8d-8d9b-579af5cc5e8b.jpg](http://dl.iteye.com/upload/attachment/297418/79e0c91f-2e1e-3f8d-8d9b-579af5cc5e8b.jpg)
![8a6c8e4f-b94a-3957-a968-b8f1780d66f7.jpg](http://dl.iteye.com/upload/attachment/297420/8a6c8e4f-b94a-3957-a968-b8f1780d66f7.jpg)
引用
50DAF14C6CDF8ACFBDC1095A5EE8E2CF.tomcat1
的SessionID。这样,我们就能知道当前访问的是哪台服务器了! ![icon_biggrin.gif](http://snowolf.iteye.com/images/smiles/icon_biggrin.gif)
- <b>Cookie信息:</b>
- <br />
- ${header["cookie"]}
- <br />
- <b>Host信息:</b>
- <br />
- ${header["host"]}
- <br />
![771a2001-99c5-3de5-b675-715b8f99dd03.jpg](http://dl.iteye.com/upload/attachment/297435/771a2001-99c5-3de5-b675-715b8f99dd03.jpg)
![icon_biggrin.gif](http://snowolf.iteye.com/images/smiles/icon_biggrin.gif)
引用
群集,是包含多个服务器实例的指定集合,这些服务器实例共享相同的应用程序、资源以及配置信息。您可以将不同计算机上的服务器实例分组到一个逻辑群集中并将其作为一个单元来管理。您可以使用 DAS 轻松控制多机群集的生命周期。 群集可以实现水平可伸缩性、负载平衡和故障转移保护。根据定义,群集中的所有实例都具有相同的资源和应用程序配置。当群集中的服务器实例或计算机 出现故障时,负载平衡器检测到该故障,会将通信从出现故障的实例重定向至群集中的其他实例,并恢复用户会话状态。由于群集中所有实例上的应用程序和资源都 相同,因此一个实例可以故障转移至群集中的任何其他实例。
引用
Session复制,主要是指集群环境下,多台应用服务器之间同步Session,确保Session保持一致,且Session中的内容保持一致,对外透明——看起来就像是一台应用服务器! 如果其中一台服务器发生故障,根据负载均衡的原理,Apache会遍历寻找可用节点,分发请求。与此同时,当前用户Session不能发生数据丢失,其余各节点服务器应保证用户Session数据同步。
Session复制核心内容主要是: - Session内容序列化(serialize),会消耗系统性能。
- Session内容通过广播同步给成员,会造成网络流量瓶颈,即便是内网瓶颈。
![icon_sad.gif](http://snowolf.iteye.com/images/smiles/icon_sad.gif)
- sudo vi /etc/apache2/mods-available/proxy.conf
- <Proxy balancer://zlex>
- BalancerMember ajp://192.168.49.128:8009/zlex route=tomcat1
- BalancerMember ajp://192.168.49.132:8009/zlex route=tomcat2
- </Proxy>
- sudo route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0
- route -v
![c4229467-200d-3f87-93f7-63ba89329321.jpg](http://dl.iteye.com/upload/attachment/297816/c4229467-200d-3f87-93f7-63ba89329321.jpg)
![icon_biggrin.gif](http://snowolf.iteye.com/images/smiles/icon_biggrin.gif)
- route add 224.0.0.0 mask 240.0.0.0 192.168.49.128
- route print
![a56d313c-5a29-3398-9a16-39ee39b8ad33.jpg](http://dl.iteye.com/upload/attachment/297819/a56d313c-5a29-3398-9a16-39ee39b8ad33.jpg)
- sudo vi /etc/tomcat6/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="224.0.0.0"
- port="45564"
- frequency="500"
- dropTime="3000"/>
- <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
- address="192.168.49.1"
- 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=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/>
- <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
- <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>
- <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
- </Cluster>
- <Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
- filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/>
- <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
- tempDir="/tmp/war-temp/"
- deployDir="/tmp/war-deploy/"
- watchDir="/tmp/war-listen/"
- watchEnabled="false"/>
![点击查看原始大小图片 573ed148-71f9-3d12-ba24-6559317f1d61.jpg](http://dl.iteye.com/upload/attachment/297903/573ed148-71f9-3d12-ba24-6559317f1d61.jpg)
- tail -f /var/lib/tomcat6/logs/catalina.out
- sudo /etc/init.d/tomcat6 restart
![点击查看原始大小图片 174fb78d-7a63-35e6-bc44-473e60d276ae.jpg](http://dl.iteye.com/upload/attachment/297833/174fb78d-7a63-35e6-bc44-473e60d276ae.jpg)
![01a15369-a2de-3f5f-a8a7-26ee5dd4ef5f.jpg](http://dl.iteye.com/upload/attachment/297838/01a15369-a2de-3f5f-a8a7-26ee5dd4ef5f.jpg)
![点击查看原始大小图片 29fccb4f-1150-3a40-a40f-f2f772fc42d2.jpg](http://dl.iteye.com/upload/attachment/297841/29fccb4f-1150-3a40-a40f-f2f772fc42d2.jpg)
![icon_biggrin.gif](http://snowolf.iteye.com/images/smiles/icon_biggrin.gif)
![3414a8f4-6a23-3e2e-a19d-850a1c765b8a.jpg](http://dl.iteye.com/upload/attachment/297852/3414a8f4-6a23-3e2e-a19d-850a1c765b8a.jpg)
![518cc51d-5bee-3d51-9a81-b355ac86cb6e.jpg](http://dl.iteye.com/upload/attachment/297857/518cc51d-5bee-3d51-9a81-b355ac86cb6e.jpg)
![c250f043-f35e-3b71-b76a-ab3e6879a76b.jpg](http://dl.iteye.com/upload/attachment/297862/c250f043-f35e-3b71-b76a-ab3e6879a76b.jpg)
![a7597442-9612-3cdd-8525-aa808c7c5512.jpg](http://dl.iteye.com/upload/attachment/297864/a7597442-9612-3cdd-8525-aa808c7c5512.jpg)
![f51f6aa9-ff5a-34a9-b486-d2fe0fa9b2f6.jpg](http://dl.iteye.com/upload/attachment/297866/f51f6aa9-ff5a-34a9-b486-d2fe0fa9b2f6.jpg)
![点击查看原始大小图片 9282ab8c-e68b-348b-bb65-c122e4339e6f.jpg](http://dl.iteye.com/upload/attachment/297878/9282ab8c-e68b-348b-bb65-c122e4339e6f.jpg)
![点击查看原始大小图片 07ad0cd5-eca5-3e4f-9e2c-d636f86aba0e.jpg](http://dl.iteye.com/upload/attachment/297882/07ad0cd5-eca5-3e4f-9e2c-d636f86aba0e.jpg)
![5081f710-e7bd-3ceb-bb2b-2c26ef4367a3.jpg](http://dl.iteye.com/upload/attachment/297891/5081f710-e7bd-3ceb-bb2b-2c26ef4367a3.jpg)
![点击查看原始大小图片 a61fd4c0-88d1-32ef-826e-07e090bf53ec.jpg](http://dl.iteye.com/upload/attachment/297889/a61fd4c0-88d1-32ef-826e-07e090bf53ec.jpg)
![icon_biggrin.gif](http://snowolf.iteye.com/images/smiles/icon_biggrin.gif)
![icon_biggrin.gif](http://snowolf.iteye.com/images/smiles/icon_biggrin.gif)