基于Apache和Tomcat的负载均衡实验报告
说明:本实验为浙江科技大学软件工程本科专业课程《软件体系结构》的实验报告。
五、总结
- 负载均衡的基础是集群,集群就是一组连在一起的计算机,从外部看它是一个系统,各节点可以是不同的操作系统或不同的硬件构成的计算机。负载均衡即把负载压力根据某种算法合理分配到集群中的每一台计算机上,以减轻主服务器的压力,降低对主服务器的硬件和软件要求。
- Apache是一款Web服务器软件,它可以运行在多种计算机平台上。Apache官网只提供源代码下载,对于Windows用户可以下载民间的二进制包。
- byrequests是Apache支持的一种负载均衡策略:轮询,将HTTP请求数平均分配给代理。
一、实验内容或题目
- 选定自己开发的应用系统;
- Tomcat环境下的负载均衡配置过程;
- 将自己的应用部署在步骤2中的环境中。
- 测试用户请求。
实验原理图如下。
说明:<IP地址>:<端口号>
为计算机网络应用层的服务入口点,不同的服务入口点可视为不同的系统。在本实验中,由于硬件资源限制,<IP地址>
统一取localhost,Apache和2个Tomcat Server运行在不同端口上。
二、实验目的与要求
实验目的:掌握Tomcat环境下负载均衡的配置方法。
实验要求:详细描述负载均衡配置过程中的各个步骤。
三、实验步骤
-
下载安装运行Apache
(1)下载httpd-2.4.48-o111k-x86-vc15.zip
,解压至某目录。
(2)打开conf/httpd.conf
文件,找到含有Define SRVROOT
的一行,将其值修改为Apache所在路径。
(3)进入bin目录。以管理员身份打开cmd,执行命令httpd -k install
。
(4)打开服务控制台,启动服务Apache2.4。
(5)浏览器访问http://localhost/
进行测试。 -
修改
conf/httpd.conf
(1)删除以下行开头的#(取消注释)。
LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so
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 proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
Include conf/extra/httpd-vhosts.conf
(2)在文件中找到DirectoryIndex index.html
,在其末尾添加index.jsp
(注意空格)。
(3)在文件末尾添加以下配置。
ProxyRequests Off
<Proxy balancer://mycluster>
BalancerMember ajp://localhost:8045/ loadfactor=1 route=jvm1
BalancerMember ajp://localhost:8042/ loadfactor=1 route=jvm2
</Proxy>
- 在
conf/extra/httpd-vhosts.conf
的末尾添加以下配置
<VirtualHost *:80>
ServerName 127.0.0.1
ServerAlias localhost
ProxyPass / balancer://mycluster/ stickysession=jsessionid nofailover=On
ProxyPassReverse / balancer://mycluster/
ErrorLog "logs/lbtest-error.log"
CustomLog "logs/lbtest-access.log" common
</VirtualHost>
- 下载安装运行Tomcat
(1)下载apache-tomcat-9.0.46-windows-x86.zip
,解压到两个不同的目录。
(2)修改两个Tomcat的conf/server.xml
。
元素 | 属性名 | Tomcat A属性值 | Tomcat B属性值 |
---|---|---|---|
<Server…> | port | 8040 | 8043 |
<Connector protocol=“HTTP/1.1”…> | port | 8041 | 8044 |
<Connector protocol=“AJP/1.3”…> | port | 8042 | 8045 |
<Engine…> | jvmRoute | jvm1 | jvm2 |
<Connector protocol="AJP/1.3"…>
的完整形式:<Connector protocol="AJP/1.3" port="XXXX" redirectPort="8443" secretRequired=""/>
。修改port是为了避免冲突。注意:两个Tomcat的AJP port、jvmRoute
要与Apache中的配置对应。
(3)部署应用:将应用复制到两个Tomcat的webapp/sy1
中,修改其中一个Tomcat的webapp/sy1/index.jsp
。
(4)运行bin/startup.bat
,启动服务器。打开浏览器,分别访问http://127.0.0.1:8041/sy1/index.jsp
和http://127.0.0.1:8044/sy1/index.jsp
。
- 测试负载均衡
浏览器访问http://127.0.0.1:8041/sy1/index.jsp
。
四、实验结果
第一次访问
第二次访问
结论:负载均衡配置成功。(以上结果来自单页面JSP应用,也可以使用其他技术实现)