在上软件体系结构这门课的时候,有一个实验是Tomcat环境下负载均衡的配置方法。在此记录一下。
------------------------------------------------------------------------------------------------------------------
步骤:
- 配置Apache
(1)从https://www.apachehaus.com/cgi-bin/download.plx 下载Apache2.4 VC14
(2)解压缩至F:\SoftwareArchitectural
(3)修改配置文件:
httpd.conf:
i.修改安装目录
改成Define SRVROOT "/Apache24"
ii.添加Module:Define SRVROOT "F:/SoftwareArchitectural/Apache24"
将
去掉注释LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_ajp_modulemodules/mod_proxy_ajp.so LoadModule proxy_balancer_modulemodules/mod_proxy_balancer.so LoadModule proxy_connect_modulemodules/mod_proxy_connect.so LoadModule proxy_express_modulemodules/mod_proxy_express.so LoadModule proxy_ftp_modulemodules/mod_proxy_ftp.so LoadModule proxy_http_modulemodules/mod_proxy_http.so LoadModule slotmem_shm_module modules/mod_slotmem_shm.so //Apache2.4要求 LoadModule lbmethod_byrequests_modulemodules/mod_lbmethod_byrequests.so
iii.添加httpd-vhost.conf
将
去掉注释Include conf/extra/httpd-vhosts.conf
iiii.关闭代理服务器,并配置balancer平衡器
在文件的最后加上
ProxyRequests Off <proxy balancer://cluster> BalancerMemberajp://localhost:8010 loadfactor=1 route=jvm1 smax=5 max=20 ttl=120 retry=300timeout=15 BalancerMemberajp://localhost:8011 loadfactor=1 route=jvm2 smax=5 max=20 ttl=120 retry=300timeout=15 </proxy>
httpd-vhost.conf:
i.
将
添加注释DocumentRoot "${SRVROOT}/htdocs"
ii.
在文件的最后添加
<VirtualHost *:80> ServerAdminxxxxx@qq.com ServerNamelocalhost ServerAliaslocalhost ProxyPassReverse/ balancer://cluster/ ErrorLog"logs/softwareApache.log" CustomLog"logs/softwareApache.log" common </VirtualHost> ProxyPass / balancer://cluster/stickysession=jsessionid nofailover=On
打开命令行并进入F:\SoftwareArchitectural\Apache24\bin
执行 httpd –k install
(5)启动apache2.4
打开命令行并进入F:\SoftwareArchitectural\Apache24\bin
执行 httpd –k start
(6)测试
打开浏览器 进入
127.0.0.1
出现
此结果表明Apache已经具备负载分流的功能,只是在相应IP:端口上没有对应的服务器可以接收。
(7)关闭apache2.4
打开命令行并进入F:\SoftwareArchitectural\Apache24\bin执行 httpd –k stop
配置tomcat
(1) 下载tomcat8.5 压缩版
(2) 分别在F:\SoftwareArchitectural下解压为
apache-tomcat-8.5-a
apache-tomcat-8.5-b
(3) 添加环境变量,右键单击我的电脑->选择属性->选择高级->选择环境变量:添加系统变量:
CATALINA_HOME_A
其值为:F:\SoftwareArchitectural\apache-tomcat-8.5-a
(不能加分号)
CATALINA_HOME_B
其值为:F:\SoftwareArchitectural\apache-tomcat-8.5-b
(不能加分号)
(4) 修改端口:
apache-tomcat-8.5-a:
打开tomcat根目录下的conf
打开server.xml
Server.xml:
i. 修改关闭端口:
<Server port="8006" shutdown="SHUTDOWN">
ii. 修改运行端口:
<Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
iii.修改AJP1.3端口:
这里的端口要与前面httpd.conf最后部分中对应
<Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />
iiii.修改TomcatRoute:
这里的端口要与前面httpd.conf最后部分中对应
<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">
iiiii.去掉注释:
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
apache-tomcat-8.5-b:Server.xml:
iii. 修改关闭端口:
<Server port="8007" shutdown="SHUTDOWN">
iv. 修改运行端口:
<Connector port="8082" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
iii.修改AJP1.3端口:
这里的端口要与前面httpd.conf最后部分中对应
<Connector port="8011" protocol="AJP/1.3" redirectPort="8443" />
iiii.修改TomcatRoute:
这里的端口要与前面httpd.conf最后部分中对应
<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm2">
iiiii.去掉注释:
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
(5) 修改startup.bat和catalina.bat文件内容:
1.编辑apache-tomcat-8.5-a\bin\startup.bat
把其中所有CATALINA_HOME替换为CATALINA_HOME_A
(就是前面设置的环境变量)
2.编辑apache-tomcat-8.5-a\bin\catalina.bat
把其中所有CATALINA_HOME替换为CATALINA_HOME_A
(就是前面设置的环境变量)
apache-tomcat-8.5-b相同的步骤就是
把其中所有CATALINA_HOME替换为CATALINA_HOME_B
(6) 启动tomcat:
在命令行下分别进入两个不同的Tomcat安装目录下,执行startup.bat
- 测试
一、
在apache-tomcat-8.5-a\webapp\下创建目录LoadBalancing
在目录下:
1.创建文件index.jsp:
<%@ pagecontentType="text/html; charset=UTF-8" %> <html><head><title>test</title></head> <body> <% out.println("<br>JSESSIONID: " +session.getId()+"<br>"); out.println("这是a的tomcat"); %> </body> </html>
2.创建WEB-INF目录:
创建web.xml:
<?xml version="1.0"encoding="utf-8"?> <web-appxmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0" metadata-complete="true"> <distributable /> </web-app>
二、
将目录LoadBalancing复制到apache-tomcat-8.5-b\webapp\下
并将index.jsp中
out.println("这是a的tomcat");
改成
out.println("这是b的tomcat");
三、
打开命令行并进入F:\SoftwareArchitectural\Apache24\bin
执行 httpd –k start
在命令行下分别进入两个不同的Tomcat安装目录下,执行startup.bat
结果:
在浏览器上进入 127.0.0.1/LoadBalancing
将tomcat-b关闭
总结:
在配置负载均衡的过程中参考了网上的大量资料,但是资料的质量参差不齐。一开始配置完apache,但是无法启动apache,查看了apache根目录下的logs/error.log知道了具体错误,再根据错误去寻找出错的地方。