Apache2219和Tomcat6029集群与负载均衡Word文件下载.docx
《Apache2219和Tomcat6029集群与负载均衡Word文件下载.docx》由会员分享,可在线阅读,更多相关《Apache2219和Tomcat6029集群与负载均衡Word文件下载.docx(30页珍藏版)》请在冰豆网上搜索。
Windows2003Enterprise
IP:
172.20.50.133PORT:
80
ApacheServer
管理/代理服务器
Windows2003Enterprise
8081
Tomcat1
Web服务器
8082
Tomcat2
WindowsXPSP3
172.20.50.183PORT:
8083
Tomcat3
8084
Tomcat4
表1
集群部署图示
图1
2.配置集群
1.
2.
2.1.安装应用程序
2.1.
2.1.1.JDK安装
本文JDK版本是jdk-6u20-windows-i586.exe,安装此处从略。
2.1.2.Apache安装
本文Apache版本是httpd-2.2.19-win32-x86-openssl-0.9.8r.msi,安装过程如下:
双击安装程序,弹出如下画面,点击“Next”按钮:
图2
选择“Iaccept……”,并点击“Next”按钮:
图3
点击“Next”按钮:
图4
设置系统信息,在NetworkDomain下填入您的域名(比如:
),在ServerName下填入您的服务器名称(比如:
,也就是主机名加上域名),在Administrator'
sEmailAddress下填入系统管理员的联系电子邮件地址(比如:
mail@),上述三条信息仅供参考,其中联系电子邮件地址会在当系统故障时提供给访问者,三条信息均可任意填写,无效的也行。
下面有两个选择,本文选择的是为系统所有用户安装,使用默认的80端口,并作为系统服务自动启动;
另外一个是仅为当前用户安装,使用端口8080,手动启动。
点击“Next”按钮。
图5
选择安装类型,Typical为默认安装,Custom为用户自定义安装,我们这里选择Custom,有更多可选项。
图6
出现选择安装选项界面,如下图所示:
图7
左键点选“ApacheHTTPServer2.2.19”,选择“Thisfeature,andallsubfeatures,willbeinstalledonlocalharddrive.”(此部分,及下属子部分内容,全部安装在本地硬盘上)。
图8
点击“Change...”按钮,可以手动指定安装目录,本文安装在了“D:
\Apache2.2”目录下,点击“Next”按钮。
图9
确认安装选项无误,如果您认为要再检查一遍,可以点“Back”一步步返回检查。
点击“Install”按钮开始安装。
图10
安装进行中:
图11
点击“Finish”按钮完成安装。
图12
安装向导成功完成,桌面右下角状态栏会出现下面绿色图标,表示Apache服务已经开始运行。
图13
在图标上左键单击,出现如下界面,有“Start(启动)”、“Stop(停止)”、“Restart(重启动)”三个选项,可以很方便的对安装的Apache服务器进行上述操作。
图14
测试一下按默认配置运行的网站界面,在浏览器地址栏输入“http:
//127.0.0.1”,可以看到如下页面,表示Apache服务器已安装成功。
图15
2.1.3.Tomcat安装
本文Tomcat安装版本是apache-tomcat-6.0.32-windows-x86.zip,解压后即可使用。
在Windws2003和WindowsXp两台机器上分别解压两个Tomcat,解压后的目录分别命名为tomcat-6.1,tomcat-6.2,tomcat-6.3,tomcat-6.4。
Tomcat安装目录
Windows2003
D:
\cluster\tomcat-6.1
\cluster\tomcat-6.2
WindowsXp
\cluster\tomcat-6.3
\cluster\tomcat-6.4
表2
2.2.配置Apache
2.2.
2.2.1.httpd.conf配置
修改APACHE的配置文件D:
\Apache2.2\conf\httpd.conf:
将以下Module的注释去掉,这里并没有使用mod_jk.so进行apache和tomcat的链接,从2.X以后apache自身已集成了mod_jk.so的功能。
只需简单的把下面几行去掉注释,就相当于以前用mod_jk.so比较繁琐的配置了。
这里主要采用了代理的方法,就这么简单。
LoadModuleproxy_modulemodules/mod_proxy.so
LoadModuleproxy_ajp_modulemodules/mod_proxy_ajp.so
LoadModuleproxy_balancer_modulemodules/mod_proxy_balancer.so
LoadModuleproxy_connect_modulemodules/mod_proxy_connect.so
LoadModuleproxy_ftp_modulemodules/mod_proxy_ftp.so
LoadModuleproxy_http_modulemodules/mod_proxy_http.so
继续往下找到:
<
Directory/>
OptionsFollowSymLinks
AllowOverrideNone
Orderdeny,allow
Denyfromall
/Directory>
修改成
Allowfromall
继续往下找到<
IfModuledir_module>
/IfModule>
加上index.jsp,修改成
DirectoryIndexindex.htmlindex.jsp
继续往下找到#Includeconf/extra/httpd-vhosts.conf把注释去掉,修改成:
#Virtualhosts
Includeconf/extra/httpd-vhosts.conf
最后在最下面加入
proxybalancer:
//cluster>
BalancerMemberajp:
//172.20.50.133:
8011loadfactor=1route=tomcat1
8012loadfactor=1route=tomcat2
//172.20.50.183:
8013loadfactor=1route=tomcat3
8014loadfactor=1route=tomcat4
/proxy>
上面的四个BalancerMember成员是我们配置的tomcat集群,后面会对其进行说明。
httpd.conf文件:
2.2.2.httpd-vhosts.conf设置
接下来进行虚拟主机的设置:
将文件(D:
\Apache2.2\conf\extra\httpd-vhosts.conf)原有的<
VirtualHost*:
80>
给注释掉,在文件最下面加入
ServerAdminwebmaster@
ServerName
ServerAlias
ProxyPass/balancer:
//cluster/stickysession=JSESSIONID|jsessionidnofailover=On
ProxyPassReverse/balancer:
//cluster/
/VirtualHost>
其中的域名和路径根据自己情况设置。
httpd-vhosts.conf文件:
2.3.配置Tomcat
本文用到的4个Tomcat都要做配置,主要对Tomcat的server.xml进行配置,Tomcat的server.xml位置分别为:
Windows2003下:
\cluster\tomcat-6.1\conf\server.xml;
\cluster\tomcat-6.2\conf\server.xml。
WindowsXP下:
D:
\cluster\tomcat-6.3\conf\server.xml;
\cluster\tomcat-6.4\conf\server.xml。
现在分别打开各个Tomcat的server.xml文件,以windows2003上的Tomcat-6.1为例进行说明,开始进行集群配置。
2.3.1.配置Serverport
一台机器上跑多个tomcat,需要修改不同tomcat的Serverport,避免出现端口被占用的情况。
在tomcat-6.1\conf\server.xml文件中找到<
Serverport="
8005"
shutdown="
SHUTDOWN"
>
,修改成:
8006"
,并将其余3个Tomcat的Serverport分别修改成8007,8008,8009。
2.3.2.配置Connectorport
在tomcat-6.1\conf\server.xml文件中找到
Connectorport="
8080"
protocol="
HTTP/1.1"
connectionTimeout="
20000"
redirectPort="
8443"
/>
修改成:
8081"
并将其余3个Tomcat的port分别修改成8082,8083,8084。
继续往下找到
8009"
AJP/1.3"
8011"
,并将其余3个Tomcat的port分别修改成8012,8013,8014。
这里是apache和tomcat链接的关键,前台apache就是通过AJP协议与tomcat进行通信的,以完成负载均衡,上面的红色部分(port="
8010"
)就是连接的端口了。
回顾一下httpd.conf配置中的
Tomcat中的端口要和“ajp:
XXXX”后面端口一致。
2.3.3.配置Engine
Enginename="
Catalina"
defaultHost="
localhost"
,
Standalone"
jvmRoute="
tomcat1"
并将其余3个Tomcat的jvmRoute分别修改成:
tomcat2"
tomcat3"
tomcat4"
Tomcat中的jvmRoute="
tomcatx"
要和“route=tomcatx”中的命名一致。
2.3.4.配置Cluster
在tomcat-6.1\conf\server.xml文件中找到被注释掉的<
ClusterclassName="
org.apache.catalina.ha.tcp.SimpleTcpCluster"
/>
,在注释行的下面添加:
channelSendOptions="
6"
<
ManagerclassName="
org.apache.catalina.ha.session.BackupManager"
expireSessionsOnShutdown="
false"
notifyListenersOnReplication="
true"
mapSendOptions="
ChannelclassName="
org.apache.catalina.tribes.group.GroupChannel"
<
MembershipclassName="
org.apache.catalina.tribes.membership.McastService"
address="
228.0.0.4"
port="
45564"
frequency="
500"
dropTime="
3000"
ReceiverclassName="
org.apache.catalina.tribes.transport.nio.NioReceiver"
auto"
5001"
selectorTimeout="
100"
maxThreads="
SenderclassName="
org.apache.catalina.tribes.transport.ReplicationTransmitter"
<
TransportclassName="
org.apache.catalina.tribes.transport.nio.PooledParallelSender"
/Sender>
InterceptorclassName="
org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"
org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"
org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"
/Channel>
ValveclassName="
org.apache.catalina.ha.tcp.ReplicationValve"
filter="
.*/.gif;
.*/.js;
.*/.jpg;
.*/.png;
.*/.htm;
.*/.html;
.*/.css;
.*/.txt;
"
ClusterListenerclassName="
org.apache.catalina.ha.session.ClusterSessionListener"
/Cluster>
其余3个Tomcat都要做相同的配置,注意每个Tomcat之间的差别是<
Receiver>
标签下面的port值不一样,这里是5001,其余3个Tomcat中分别是5002,5003,5004。
下面从左至右分别是4个Tomcat中的server.xml文件
Tomcat6.1Tomcat6.2Tomcat6.3Tomcat6.4
现在Apache和Tomcat的配置已经完毕,下面对其进行验证。
3.集群负载均衡和Session共享验证
3.
3.1.负载均衡测试
3.1.1.应用程序部署和启动
在每个tomcat下部署“购物车”应用程序ShoppingCart.war进行测试,如果Windows2003的防火墙开启,要将端口80,5001,5002添加到例外中。
图16
ShoppingCart部署包:
将ShoppingCart.war拷贝到每个Tomcat的webapps目录下,例如tomcat-6.1的位置是:
\cluster\tomcat-6.1\webapps。
然后分别启动4个Tomcat(例如tomcat-6.1,打开windows命令行窗口,到D:
\cluster\tomcat-6.1\bin目录下,输入startup.bat命令),并能看到集群的一些信息,参考下面的四个截图:
Tomcat-6.1启动图:
图17
Tomcat-6.2启动图:
图18
Tomcat-6.3启动图:
图19
Tomcat-6.4启动图:
图20
3.1.2.并发访问测试
本文利用Apache中所带的ab包(只需要单个文件ab.exe即可,本文ab.exe所在目录为D:
\Apache2.2\bin)来进行并发访问的模拟测试,使用如下的命令就可以完成压力测试。
ab.exe-n20-c10http:
80/ShoppingCart/welcome.jsp
参数n代表请求的总数量
参数c代表并发的请求数
url为要测试压力的地址
welcome.jsp页面有<
%System.out.println("
withinwelcome.jsp"
);
%>
语句,可以在命令行工具中输出:
withinwelcome.jsp
图21
观察tomcat控制台,总共有20个并发,“witninwelcome.jsp”在每个控制台输出5个,达到负载均衡,下面是其中3个tomcat控制台的截图:
Tomcat-6.1输出结果:
图22
Tomcat-6.2输出结果:
图23
Tomcat-6.3输出结果:
图24
3.2.Session共享测试
3.2.1.Session共享的条件
1.所有session中的对象可以序列化,实现java.io.Serializable接口。
2.确保你部署文件中的web.xml有<
distributable/>
元素(其父元素为<
/web-app>
),或者设置你的<
Contextdistributable="
。
本文采用的是在web.xml中添加<
元素。
3.当使用多台机器时,要保证不同机器时间的同步。
4.确保你的loadbalancer是stickysession模式。
3.2.2.Session共享验证
测试程序继续使用购物车ShoppingCart.war应用程序,购物车中的物品存放在session中。
该应用已经在“负载均衡测试”中部署好了,下面做session共享测试:
1.在Windows2003上启动Apache、Tomcat6.1,在WindowsXp上启动Tomcat6.3,在浏览器中输入http:
//172.20.50.133/ShoppingCart/,进