Apache+Tomcat实现负载均衡
2015-12-01 14:46
609 查看
一、规划
前端Apache:192.168.10.135
后端tomcat:192.168.10.132
192.168.10.133
二、配置Tomcat
①配置server.xml
②配置测试页
三、基于mod_jk实现
①配置mod_jk配置文件
②配置worker.properties
③配置httpd
④测试
输入前端Apache地址查看
![](http://s2.51cto.com/wyfs02/M02/76/D3/wKiom1ZdOcOjDIokAABAAvfnK0g188.png)
刷新后继续查看
![](http://s5.51cto.com/wyfs02/M00/76/D2/wKioL1ZdOn3wA8b5AAA9Fe3hO0I996.png)
前端输入http://localhost/status/查看集群状态
![](http://s5.51cto.com/wyfs02/M02/76/D3/wKiom1ZdO0uw0VG-AADo26b4w50081.png)
⑤实现会话复制
a.在 <Engine>或 <Host>元素节点下添加以下内容:
b.在启用集群功能的web应用程序的web.xml中添加<distributable/>以实现集群功能
c.测试
输入前端Apache地址查看
![](http://s1.51cto.com/wyfs02/M00/76/D3/wKiom1ZdQTnRlDV3AAA8pASSL6Q252.png)
刷新后继续查看
![](http://s5.51cto.com/wyfs02/M00/76/D3/wKioL1ZdQd7z5XdyAAA7hZX59Tg745.png)
TomcatA和TomcatB已经实现了会话共享
四、基于mod_proxy实现
①查看相关代理模块是否装载(其中balancer为集群实现模块)
注:
ProxySet lbmethod={byrequests|bytraffic|bybusyness}:负载均衡的实现方式
byrequests:按照请求次数负载均衡(默认)
bytraffic:按照流量负载均衡
bybusyness:安装繁忙程度负载均衡(总是分配给活跃请求数最少的服务器)
③测试
输入TomcatA地址查看:
![](http://s1.51cto.com/wyfs02/M01/76/C4/wKiom1ZcAKqBLZ2UAABMw_G486o846.png)
输入TomcatB地址查看:
![](http://s4.51cto.com/wyfs02/M00/76/C3/wKioL1ZcAtqzasDDAABINR85g5A444.png)
输入前端Apache地址查看:
![](http://s3.51cto.com/wyfs02/M02/76/C3/wKioL1ZcAyvgB05RAABVAZUc8xQ510.png)
刷新继续查看:
![](http://s3.51cto.com/wyfs02/M00/76/C4/wKiom1ZcAxTxnqZ6AABRKV1Eb6U541.png)
本文出自 “记事本” 博客,请务必保留此出处http://wangzhijian.blog.51cto.com/6427016/1718502
前端Apache:192.168.10.135
后端tomcat:192.168.10.132
192.168.10.133
二、配置Tomcat
①配置server.xml
# vi /usr/local/tomcat/conf/server.xml ##位于103行 TomcatA: <Engine name="Catalina" defaultHost="localhost" jvmRoute="TomcatA"> TomcatB: <Engine name="Catalina" defaultHost="localhost" jvmRoute="TomcatB">
②配置测试页
# cd /usr/local/tomcat/webapps/ROOT # mv index.jsp index.jsp.bak # vi index.jspTomcatA:
<%@ page language="java" %> <html> <head><title>TomcatA</title></head> <body> <h1><font color="green">TomcatA </font></h1> <table align="centre" border="1"> <tr> <td>Session ID</td> <% session.setAttribute("abc","abc"); %> <td><%= session.getId() %></td> </tr> <tr> <td>Created on</td> <td><%= session.getCreationTime() %></td> </tr> </table> </body> </html>TomcatB:
<%@ page language="java" %> <html> <head><title>TomcatB</title></head> <body> <h1><font color="yellow">TomcatB </font></h1> <table align="centre" border="1"> <tr> <td>Session ID</td> <% session.setAttribute("abc","abc"); %> <td><%= session.getId() %></td> </tr> <tr> <td>Created on</td> <td><%= session.getCreationTime() %></td> </tr> </table> </body> </html>
三、基于mod_jk实现
①配置mod_jk配置文件
# vi /etc/httpd/conf/mod_jk.conf JkWorkersFile /etc/httpd/conf/workers.properties ##指出mod_jk工作所需文件位置 JkLogFile logs/mod_jk.log ##指定日志输出文件位置 JkLogLevel debug ##指定日志级别 JkLogStampFormat "[%a %b %d %H:%M:%S %Y]" JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories JkRequestLogFormat "%w %V %T" JkMount /* lbcluster1 ##指定负载均衡器名称 JkMount /status/ stat1 ##指定状态信息
②配置worker.properties
# vi /etc/httpd/conf/workers.properties # workers 列表 worker.list = lbcluster1,stat1 #------------------------------------------------- # tomcat实例1 #------------------------------------------------- worker.TomcatA.type = ajp13 ##定向包协议 worker.TomcatA.host = 192.168.10.132 ##tomcat主机地址 worker.TomcatA.port = 8009 ##TomcatA实例端口 worker.TomcatA.lbfactor = 1 ##负载均衡权重为1 #------------------------------------------------- # tomcat实例2 #------------------------------------------------- worker.TomcatB.type = ajp13 worker.TomcatB.host = 192.168.10.133 worker.TomcatB.port = 8009 worker.TomcatB.lbfactor = 1 #------------------------------------------------- # load balancer worker --负载均衡控制器 # ------------------------------------------------ worker.lbcluster1.type = lb ##负载均衡work,lb内置类 worker.lbcluster1.sticky_session = 0 ##会话是否绑定 worker.lbcluster1.balance_workers = TomcatA, TomcatB ##指定集群拥有实例 worker.stat1.type = status ##状态信息
③配置httpd
# vi /etc/httpd/conf/httpd.conf LoadModule jk_module modules/mod_jk.so ##加载mod_jk模块 Include /etc/httpd/conf/mod_jk.conf ##指定mod_jk配置文件
④测试
输入前端Apache地址查看
![](http://s2.51cto.com/wyfs02/M02/76/D3/wKiom1ZdOcOjDIokAABAAvfnK0g188.png)
刷新后继续查看
![](http://s5.51cto.com/wyfs02/M00/76/D2/wKioL1ZdOn3wA8b5AAA9Fe3hO0I996.png)
前端输入http://localhost/status/查看集群状态
![](http://s5.51cto.com/wyfs02/M02/76/D3/wKiom1ZdO0uw0VG-AADo26b4w50081.png)
⑤实现会话复制
a.在 <Engine>或 <Host>元素节点下添加以下内容:
# vi /usr/local/tomcat/conf/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.ClusterSessionListener"/> </Cluster>
b.在启用集群功能的web应用程序的web.xml中添加<distributable/>以实现集群功能
# vi /usr/local/tomcat/conf/web.xml <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1"> <distributable/> # cp /usr/local/tomcat/conf/web.xml /usr/local/tomcat/webapps/ROOT/WEB-INF/详情:http://tomcat.apache.org/tomcat-9.0-doc/cluster-howto.html
c.测试
输入前端Apache地址查看
![](http://s1.51cto.com/wyfs02/M00/76/D3/wKiom1ZdQTnRlDV3AAA8pASSL6Q252.png)
刷新后继续查看
![](http://s5.51cto.com/wyfs02/M00/76/D3/wKioL1ZdQd7z5XdyAAA7hZX59Tg745.png)
TomcatA和TomcatB已经实现了会话共享
四、基于mod_proxy实现
①查看相关代理模块是否装载(其中balancer为集群实现模块)
# httpd -D DUMP_MODULES | grep proxy proxy_module (shared) proxy_ajp_module (shared) proxy_balancer_module (shared) proxy_connect_module (shared) proxy_express_module (shared) proxy_fcgi_module (shared) proxy_fdpass_module (shared) proxy_ftp_module (shared) proxy_http_module (shared) proxy_scgi_module (shared)②配置httpd
# vi /etc/httpd/conf/httpd.conf <VirtualHost *:80> ServerAdmin localhost ServerName localhost ProxyPass / balancer://cluster1/ stickysession=jsessionid ProxyPassReverse / balancer://cluster1/ </VirtualHost> ProxyRequests Off <proxy balancer://cluster1> BalancerMember ajp://192.168.10.132:8009 loadfactor=1 route=TomcatA BalancerMember ajp://192.168.10.133:8009 loadfactor=1 route=TomcatB ProxySet lbmethod=bytraffic </Proxy>
注:
ProxySet lbmethod={byrequests|bytraffic|bybusyness}:负载均衡的实现方式
byrequests:按照请求次数负载均衡(默认)
bytraffic:按照流量负载均衡
bybusyness:安装繁忙程度负载均衡(总是分配给活跃请求数最少的服务器)
③测试
输入TomcatA地址查看:
![](http://s1.51cto.com/wyfs02/M01/76/C4/wKiom1ZcAKqBLZ2UAABMw_G486o846.png)
输入TomcatB地址查看:
![](http://s4.51cto.com/wyfs02/M00/76/C3/wKioL1ZcAtqzasDDAABINR85g5A444.png)
输入前端Apache地址查看:
![](http://s3.51cto.com/wyfs02/M02/76/C3/wKioL1ZcAyvgB05RAABVAZUc8xQ510.png)
刷新继续查看:
![](http://s3.51cto.com/wyfs02/M00/76/C4/wKiom1ZcAxTxnqZ6AABRKV1Eb6U541.png)
本文出自 “记事本” 博客,请务必保留此出处http://wangzhijian.blog.51cto.com/6427016/1718502
相关文章推荐
- JDK-7u4(rpm)+Tomcat-7.0+JavaCenterHome
- Tomcat6 只允许指定域名访问,禁用IP地址访问,防止恶意解析
- Nginx + Tomcat 动静分离实现负载均衡
- linux下查看tomcat和jdk版本号
- tomcat优化(一)tomcat集群Cluster实现原理剖析
- Tomcat数据源
- tomcat--Poller creation failed
- JFinal 部署在 Tomcat 下推荐方法(转)
- python 统计tomcat access日志访问时延
- Tomcat线程池配置
- 基于maven的自动部署(适用于tomcat7和tomcat8)
- Eclipse下tomcat不能指定发布ServerLocation的问题
- tomcat热启动
- tomcat详解
- Windows下结束tomcat进程,dos命令
- Tomcat7 catalina.out 日志分割
- 关于java,tomcat连接mySql数据库
- 运行tomcat7w.exe提示指定的服务未安装 解决办法
- 更改Tomcat startup.bat启动窗口名称
- Tomcat 系统架构与设计模式,第 2 部分: 设计模式分析