Apache+tomcat+memcache负载均衡的入门配置目录一、准备工作 (1)二、配置Apache (1)1、打开相关的模块。
(1)2、配置tomcat集群。
(2)三、配置tomcat (2)1、配置server的关闭。
(2)2、配置Connector (2)3、配置Engine (3)4、配置Session的复制 (3)这份文档只是一个初步的配置负载均衡的文档,没有涉及过多的性能优化的东西。
所以也就不多言了,直接切入主题。
一、准备工作安装JDK并配置环境变量。
这里要求至少1.5以上版本。
安装apache2.2。
我的安装目录为:D:\Apache2.2安装tomcat6。
为了端口不起冲突,建议直接解压。
我这里只使用了两台tomcat作为集群服务器。
其路径分别为D:\apache-tomcat-6.0.20_v1、D:\apache-tomcat-6.0.20_v2二、配置Apache这里说明一下,我在网上找到的一些资料都在介绍mod_JK的方式配置负载均衡。
但是从apache2.X版本之后其自身已经集成了mod_jk可以直接使用mod_proxy的方式进行负载均衡的配置,所以下面介绍的也即是这种方式。
在D:\Apache2.2\conf目录下找到httpd.conf文件,并进行修改。
修改步骤:1、打开相关的模块。
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 proxy_ftp_module modules/mod_proxy_ftp.soLoadModule proxy_http_module modules/mod_proxy_http.soLoadModule rewrite_module modules/mod_rewrite.so在配置文件里找到上述模块,将前边的“#”去掉.2、配置tomcat集群。
在该配置文件的最后加上:ProxyRequests OffProxyPass / balancer://cluster/<proxy balancer://cluster>BalancerMember ajp://localhost:8009 loadfactor=1 route=jvm1BalancerMember ajp://localhost:9009 loadfactor=1 route=jvm2</proxy>注意红色部分,因为这里我只使用了一台物理机器作为集群的配置,所以就直接使用了localhost指向本地的集群服务器,你也可以使用127.0.0.1。
如果这里你使用多台机器一起配合的话,只需要将localhost修改为其他机器的IP地址就行。
另外需要注意的就是上面配置的端口,为什么要这么配置?将在后边结合tomcat一起做一个详细的说明。
三、配置tomcat在D:\apache-tomcat-*\conf找到server.xml,然后着手修改。
1、配置server的关闭。
因为我是在同一台机器上配置两台tomcat,所以为了使tomcat关闭不出现端口被占用的情况,需要修改关闭端口。
<Server port="8005" shutdown="SHUTDOWN">修改为:<Server port="XXXX" shutdown="SHUTDOWN">注意,我这里用了两台tomcat,所以第一个tomcat我就选择了默认的端口8005,第二个tomcat我将此端口修改为了9005。
总之,如果你有多台tomcat服务器群,都需要将它们的端口修改为互不冲突的端口号。
2、配置Connector这里又两个地方需要修改,第一个就是tomcat监听的http端口,另一个就是tomcat监听的AJP端口:<Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" /><Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />注意,蓝色部分是tomcat的http端口,因为我在同一台机器上配置了两个tomcat,为了使它们的http端口不冲突,我将第一个tomcat使用默认的端口即8080,第二个tomcat的http端口我修改为了8081。
同样的道理,如果你还有其他的tomcat,记得将它们的http端口修改为互不冲突的端口号即可。
另一个需要修改的端口,红色部分的端口,这里是apache和tomcat链接的关键,前台apache就是通过AJP协议与tomcat进行通信的,以完成负载均衡的作用。
现在回过头去看看apache的httpd.conf配置,<proxy balancer://cluster>BalancerMember ajp://localhost:8009 loadfactor=1 route=jvm1BalancerMember ajp://localhost:9009 loadfactor=1 route=jvm2</proxy>那么,另一个tomcat的AJP端口你知道要配置成什么了吗?对了,就是9009。
3、配置Engine<Engine name="Catalina" defaultHost="localhost">,这个是原来的配置,现在将这个配置修改为:<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">,然后另一个tomcat修改为<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm2">。
现在再回过头去看看apache的配置:<proxy balancer://cluster>BalancerMember ajp://localhost:8009 loadfactor=1 route=jvm1BalancerMember ajp://localhost:9009 loadfactor=1 route=jvm2</proxy>这里再说明一点,loadfactor相当于一种加权策略,loadfactor的值越大,对应的tomcat 服务器分到的请求就越多。
像上面的这种设置就说明两台tomcat将平均负载。
4、配置Session的复制步骤1:<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"/><!-- timeout="60000"--><Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter"><TransportclassName="org.apache.catalina.tribes.transport.nio.PooledParallelSender" /></Sender><InterceptorclassName="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/><InterceptorclassName="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/> <InterceptorclassName="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/></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"/><Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"tempDir="/tmp/war-temp/"deployDir="/tmp/war-deploy/"watchDir="/tmp/war-listen/"watchEnabled="false"/><ClusterListenerclassName="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/><ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/> </Cluster>步骤2:在每个web项目web-info 下web.xml 最后加上<distributable/>新建一个项目测试就OK了惊醒测试测试结果jvm1Jvm25、安装memcache客户端1 Memcached 介绍Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。