Apache + Tomcat 实现负载均衡

最近实现了Apache+Tomcat的负载均衡,所以来记录一下

主要参考了下面的文章

https://www.cnblogs.com/xiuxun/p/7563484.html#commentform

首先去官网下载:

Apache 

https://www.apachehaus.com/downloads/httpd-2.4.39-o102s-x86-vc14.zip

Tomcat 

https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.42/bin/apache-tomcat-8.5.42-windows-x64.zip

下载好以后解压到一个文件夹中

就是下面的目录结构(tomcat下载一次后复制一次)

先配置环境变量

CATALINA_HOME1  E:\ApacheGroup\apache-tomcat-7.0.94-1

CATALINA_HOME2  E:\ApacheGroup\apache-tomcat-7.0.94-2

CATALINA_BASE1  E:\ApacheGroup\apache-tomcat-7.0.94-1

CATALINA_BASE2  E:\ApacheGroup\apache-tomcat-7.0.94-2

配置Apache

Apache主要需要修改的文件有Apache24/conf/httpd.conf 和Apache24/conf/extra/httpd-vhosts.conf

httpd.conf主要需要修改的地方有

Define SRVROOT  "E:\ApacheGroup\Apache24"   这里需要改成你自己的apache的路径

Listen 88 如果你的80端口已经使用了,那么可以改成别的 比如88

然后在下面有 LoadModule的地方把下面的模块添加进去

LoadModule proxy_module modules/mod_proxy.so

LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

LoadModule proxy_balancer_module modules/mod_proxy_balancer.so

LoadModule slotmem_shm_module modules/mod_slotmem_shm.so

LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so

然后把下面这条引用前面的注释去掉

Include conf/extra/httpd-vhosts.conf

然后在最后添加
ProxyRequests off

ProxyPassReverse / balancer://tomcatcluster/

<proxy balancer://cluster>

BalancerMember ajp://127.0.0.1:8021 loadfactor=1 route=tomcat01

BalancerMember ajp://127.0.0.1:8022 loadfactor=1 route=tomcat02

</proxy>

然后在配置httpd-vhosts.conf

在httpd-vhosts.conf最后添加下面的配置

#虚拟机配置,负载均衡配置 注意空格
<VirtualHost *:88>
ServerAdmin localhost

ServerName localhost

ServerAlias localhost

ProxyPass / balancer://cluster/ stickysession=jsessionid nofailover=On

ProxyPassReverse / balancer://cluster/

ErrorLog "logs/lbtest-error.log"

CustomLog "logs/lbtest-access.log" common

</VirtualHost>

配置Tomcat

Tomcat主要需要配置的是apache-tomcat-7.0.94-1/conf/server.xml

我为了方便查看分别吧下面的端口号配置成8001,8011,8012

<Server port="8001" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
 
<Connector port="8011" protocol="HTTP/1.1"  connectionTimeout="20000"  redirectPort="8443" />
 
<Connector port="8021" protocol="AJP/1.3" redirectPort="8443" />
然后把<Engine name="Catalina" >修改成<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat01">
 然后把下面的代码复制到
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat01"> 这个标签下面
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="8">
<Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/>
</Cluster>
(虽然不知道为啥要加这个)
上面是tomcat1的配置
tomcat2中把端口号改成8021,8021,8022 然后把下面那句话复制到相应的位置就OK了
注意上面的AJP/1.3的端口号一定要和Apache的httpd.conf中<proxy balancer://cluster>标签下面的相应服务器的端口号一致
然后相应的配置文件就都配置好了
可以在每个服务器配置完成后启动试试看,如果可以启动就说明配置成功了。
测试的话可以把Tomcat主页的一些东西修改一下
比如把这个页面
apache-tomcat-7.0.94-1\webapps\ROOT\index.jsp
下面的欢迎语修改成tomcat1,另一个tomcat下面的修改成tomcat2
然后在浏览器中打开
http://localhost:88/  (后面的端口号是在Apache中配置的)
然后会打开Tomcat主页,刷新的话会有不同的效果
如果刷新出现下面的效果的话就成功了!!

猜你喜欢

转载自www.cnblogs.com/rxc2018/p/11133949.html