【高并发】Apache2.4负载均衡+Tomcat7集群+session共享
来源:互联网 发布:腾讯软件网络问题 编辑:程序博客网 时间:2024/06/10 04:52
一、准备
工具:Apache2.4,JDK1.7,Tomcat7(最少两个)
二、Apache安装好后配置
1.首先打开一些必要的Module注释(把前面的#号去掉就行),在conf/httpd这个文件中
LoadModule proxy_module modules/mod_proxy.soLoadModule proxy_ajp_module modules/mod_proxy_ajp.soLoadModule proxy_balancer_module modules/mod_proxy_balancer.soLoadModule proxy_connect_module modules/mod_proxy_connect.soLoadModule slotmem_shm_module modules/mod_slotmem_shm.soLoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so
2.修改配置文件httpd.conf最后加上
修改BalancerMember 的IP和端口号
ProxyRequests Off<proxy balancer://cluster> BalancerMember http://172.18.238.190:8081/ loadfactor=1 BalancerMember http://172.18.238.190:8082/ loadfactor=1 BalancerMember http://172.18.238.190:8083/ loadfactor=1 BalancerMember http://172.18.238.190:8084/ loadfactor=1 BalancerMember http://172.18.238.190:8085/ loadfactor=1# BalancerMember http://172.18.238.190:8086/ loadfactor=1#BalancerMember http://172.18.238.190:8087/ loadfactor=1#BalancerMember http://172.18.238.190:8088/ loadfactor=1#BalancerMember http://172.18.238.190:8089/ loadfactor=1#BalancerMember http://172.18.238.190:8090/ loadfactor=1</proxy>ProxyPass / balancer://cluster/
- ProxyPass :将远程服务器映射到本地服务器的URL空间
- balancer:// :代理的指令类型
- stickysession : 均衡器粘连会话名称。该值常常会被设置为类似JSESSIONID或者 PHPSESSIONID之类的值,他依赖于支持会话的后端应用服务器。如 果后端服务器使用不同的cookie名称或者URL编码的ID(像servlet 容器),使用|来分开他们。第一个部分针对cookie,第二个针对路径。
- nofailover : 如果设为‘On’,当工作单元被禁用或者出错时,会话则立即中断。可以将 该值设为On如果后端服务器不支持会话复制(Session replication)。
- ProxyRequests : 在使用ProxyPass指令的时候,ProxyRequests指令通常都应该是关闭 的。
- BalancerMember : 均衡成员
- loadfactor : 工作单元负载系数。用于BalancerMember。它是一个1到100之间的数 字,用于定义应用于该工作单元的正规化权重负载。
- route : 工作单元的路由,用于负载均衡器中。该路由是附加给会话ID的一个值。
- smax : 根据需要最多创建数量为柔性最大值(Soft Maximum),也就是smax的链接。 任何超出smax数量的链接都会指定一个生存时间也就是ttl。
max : 默认值为当前MPM中每个进程的线程数量。在Prefork MPM中,该值总是为 1,在Worker MPM中,该值受ThreadsPerChild控制。
ttl : 超出smax连接数的非活动链接的生存时间(Time To Live),单位为秒。Apache 会关闭在这段时间内没有被用过的所有链接。
retry : 线程池工作单元重试的超时时间,以秒为单位。如果到后端服务器的线程池工 作单元状态是出错,Apache将不会递交任何请求到该服务器,直到超时结束。 这可以令后端服务器关闭进行维护,并稍后上线。如果值为0则表示总是重试 错误状态的工作单元不等待任何时间。
timeout : 链接超时时间,单位为秒。如果未设置,那么Apache会一直等到有可用的链接 位置。该指令常和max参数一起使用来限制到后端服务器的链接。
这样就差不多配置完了,重启Apache服务就可以了。
注意:当输入localhost或者127.0.0.1的时候会出现It works的字样
三、tomcat配置
tomcat先配置好端口,如果是同一台pc注意server.xml端口冲突问题
这里介绍的负载均衡
在Engine中配置jvmRoute
<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">
jvmRoute根据不同的Tomcat配置不同的名称
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>这个注释打开
四、配置session共享
配置 session 复制
<web-appxmlns="http://java.sun.com/xml/ns/j2ee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/j2eehttp://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"version="2.4"> <display-name>test</display-name> <distributable /></web-app>
测试session 是否一致
通过 http://localhost/balance/test.jsp 访问,多刷新几次页面,在控制台打印的 session 值都是一致的。
五、测试
至此,配置已经完成,写一个测试文件
在tomcat的websapp\balance下写一个测试文件test.jsp
<%@ page contentType="text/html;charset=UTF-8" %><%@ page import="java.util.*"%><html> <head> <title>ApacheTomcatTest</title> </head> <body> <% out.println("<br> SESSION ID:" + session.getId() + "</br>");out.println("这是8080"); %> </body></html>输出内容根据不同的tomcat配置不同的文字。
现在可以测试一下
注意:我监听的是8888端口,默认为80 如需修改在Apache的配置文件httpd.conf修改Listen 8888即可
通过打印出来的内容得知apache负载均衡成功,并且完成了session的共享。可以多刷新几次看看是否是所有tomcat都访问到了。
接下来就是对tomcat和apache的性能优化了
期间遇到的坑:
apache的版本太高,有很多旧的方法已被废弃,需要注意
session必须共享,共享方式有很多可以通过Tomcat自带的共享,也可通过redis等缓存共享,如果不共享会造成项目跳转的时候session变更无法登陆等情况
阅读全文
1 0
- 【高并发】Apache2.4负载均衡+Tomcat7集群+session共享
- tomcat7+apache2.2.25 集群负载均衡以及session复制配置
- Apache2.4+tomcat7.0 配置反向代理和负载均衡及session集群
- nginx+tomcat7(8) 集群,负载均衡和session共享
- Apache2.2+Tomact6配置集群、负载均衡、Session共享
- apache2.4 + mod_proxy + tomcat7 配置集群和负载均衡
- Apache2.4 + Tomcat7负载均衡和集群(一)
- Apache2.2+Mod_jk+Tomcat7集群 负载均衡
- Apache + tomcat实现高并发负载均衡方案(四)----实现session共享(memcache)的集群
- Windows下Apache2.2+Tomcat6配置集群、负载均衡、session共享
- 分布式集群实现负载均衡和Session共享~多个Tomcat7+Nginx+Redis的session共享实现
- apache+tomcat集群 负载均衡 session共享
- Apache2+Tomcat7负载均衡配置
- nginx tomcat7 memcache设置服务器负载均衡,session共享
- tomcat7+nginx+memcached实现负载均衡和session共享
- Windows下Nginx+tomcat7+redis负载均衡与session共享
- 【 Nginx+Apache-Tomcat7+Memcached搭建负载均衡实现Session共享】
- tomcat7+nginx+memcached实现负载均衡和session共享(windows)
- Ubuntu系统无法update的解决方法
- Ruby类的真相
- redis AOF文件过大
- jquery:实现全选和取消全选
- 与 Hadoop 对比,如何看待 Spark 技术?
- 【高并发】Apache2.4负载均衡+Tomcat7集群+session共享
- android基于ZXing和ZBar的二维码扫描项目
- Oracle中case when用法
- Redis常用数据类型详解
- JavaServer Faces 2.2 can not be installed : One or more constraints have not been satisfied.
- 抽象类和接口的区别
- Java Error总结
- .NET/C#发起GET和POST请求的几种方法
- Python3.x安装后还是Python2.x的解决方法