apache2.4+tomcat6实现负载均衡(windows版本)
软件准备
apache2.4下载
http://httpd.apache.org/download.cgi
找到Files for Microsoft Windows找到Apache Lounge,先下载安装vc_redist_x64 or vc_redist_x86
再下载httpd-2.4.28-Win64-VC15.zip 或httpd-2.4.28-Win32-VC15.ziptomcat6/7下载
tomcat6
http://archive.apache.org/dist/tomcat/tomcat-6/v6.0.29/bin/
下载apache-tomcat-6.0.29-windows-x64.ziptomcat7
https://tomcat.apache.org/download-70.cgi
下载7.0.82 64-bit Windows zip (pgp, md5, sha1)
创建工作目录
创建目录结构
D盘建立文件夹Apache24和tomcats
tomcats下分别建tomcat1和tomcat2文件夹
安装apache2.4
解压httpd-2.4.28-Win64-VC15.zip放置到Apache24下
打开Apache24\conf\httpd.conf
搜索并替换全部c:/Apache24为d:/Apache24安装apache2.4
cmd管理员下执行 cd D:\Apache24\bin httpd.exe -k install -n apache2.4 卸载命令是sc delete apache2.4安装完成,执行Apache24\bin\ApacheMonitor.exe,右键>start,启动apache2.4,浏览器输入localhost出现 it works! 则表明apache正常运行。
安装tomcat6
将tomcat6解压并复制到tomcat1和tomcat2两个文件夹中(两个文件夹中的tomcat是一样的)
依次打开tomcat/bin/startup.bat,浏览器地址栏输入localhost:8080,出现tomcat界面,则表明tomcat正常运行。
Apache2.4和tomcat负载均衡配置
配置Apache24\conf\httpd.conf
去掉以下7个模块前的#注释:
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_http_module modules/mod_proxy_http.so LoadModule slotmem_shm_module modules/mod_slotmem_shm.so LoadModule socache_shmcb_module modules/mod_socache_shmcb.so LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so --------------------------------------------------------------------- 找到(279行): <IfModule dir_module> DirectoryIndex index.html </IfModule> 修改成 <IfModule dir_module> DirectoryIndex index.html index.jsp </IfModule> ---------------------------------------------------------------------- 文件最后添加(稍后tomcat里会做相关配置192.168.202在这里是本机ip,所以也可以写成127.0.0.1): #ProxyRequests Off <proxy balancer://cluster> BalancerMember ajp://192.168.202.1:8011 loadfactor=1 route=tomcat1 BalancerMember ajp://192.168.202.1:8012 loadfactor=1 route=tomcat2 </proxy> ------------------------------------------------------------------------ # Virtual hosts #Include conf/extra/httpd-vhosts.conf 改为 # Virtual hosts Include conf/extra/httpd-vhosts.confhttpd-vhosts.conf设置
打开Apache24\conf\extra\httpd-vhosts.conf(请提前做好备份,以便配置错误时可以恢复)
注释掉原有的<VirtualHost *:80></VirtualHost>两个代码块。 添加 <VirtualHost *:80> ServerAdmin webmaster@aa.com ServerName www.aa.com ServerAlias www.aa.com ProxyPass / balancer://cluster/ stickysession=JSESSIONID|jsessionid nofailover=On ProxyPassReverse / balancer://cluster/ </VirtualHost> ServerName www.aa.com可以通过修改windows的host文件来伪装。 host文件位置: C:\Windows\System32\drivers\etc\host 最后面添加 127.0.0.1 www.aa.com
配置tomcat1和tomcat2
打开tomcat server.xml
tomcats\tomcat1\conf\server.xml 找到<Server port="8005" shutdown="SHUTDOWN"> 将tomcat1的port改为8006,tomcat的port改为8007 -------------------------------------------------- 找到: <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> 将8080改为8081,tomcat2的改为8082 ------------------------------------------------------- 找到 <Connector port="8011" protocol="AJP/1.3" redirectPort="8443" /> 将8009改为8011,tomcat2的改为8012 (和apache中配置的对应: BalancerMember ajp://192.168.202.1:8011 loadfactor=1 route=tomcat1 BalancerMember ajp://192.168.202.1:8012 loadfactor=1 route=tomcat2 ) ----------------------------------------------------------- 找到: <Engine name="Catalina" defaultHost="localhost"> 改为: <Engine name="Standalone" defaultHost="localhost" jvmRoute="tomcat1"> tomcat2中的改为: <Engine name="Standalone" defaultHost="localhost" jvmRoute="tomcat2"> 这里同样时和 BalancerMember ajp://192.168.202.1:8011 loadfactor=1 route=tomcat1 BalancerMember ajp://192.168.202.1:8012 loadfactor=1 route=tomcat2 对应的。 ----------------------------------------------------------------- 找到 <!-- <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/> --> 在其下方添加 <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="6"> <Manager className="org.apache.catalina.ha.session.BackupManager" expireSessionsOnShutdown="false" notifyListenersOnReplication="true" mapSendOptions="6"/> <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="5001" selectorTimeout="100" maxThreads="6"/> <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter"> <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/> </Sender> <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/> <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/> <Interceptor className="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;"/> <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/> </Cluster> 注意:tomcat2中的port="5001"应该为5002测试
至此,apache2.4和tomcat的负载均衡配置完毕。
测试:
将test_war.war放到tomcat1和tomcat2的webapps目录下,启动apache,再启动tomcat1和tomcat2,浏览器输入localhost/test_war/index.jsp,观察两个tomcat命令框的输出文字,会发现,浏览器多次访问,则由两个tomcat接替处理。
HTTPS的配置
上面已经配置并测试了apache2.4和tomcat的负载均衡,下面将继续配置https
打开apache2.4的配置文件
找到 #LoadModule ssl_module modules/mod_ssl.so 将其前面的注释#去掉,改为: #LoadModule ssl_module modules/mod_ssl.so ------------------------------------------------ 找到 # Secure (SSL/TLS) connections #Include conf/extra/httpd-ssl.conf 改为 # Secure (SSL/TLS) connections Include conf/extra/httpd-ssl.conf打开Apache24\conf\extra\httpd-ssl.conf
找到 <VirtualHost _default_:443> 添加 ProxyPass / balancer://cluster/ stickysession=JSESSIONID|jsessionid nofailover=On ProxyPassReverse / balancer://cluster/ 变成 <VirtualHost _default_:443> # General setup for the virtual host DocumentRoot "d:/Apache24/htdocs" ServerName localhost:443 ServerAdmin admin@example.com ErrorLog "d:/Apache24/logs/error.log" TransferLog "d:/Apache24/logs/access.log" ProxyPass / balancer://cluster/ stickysession=JSESSIONID|jsessionid nofailover=On ProxyPassReverse / balancer://cluster/ ------------------------------------------------------- 将证书复制到apache\conf下 server.crt server.csr server.key启动apache2.4,依次启动tomcat1和tomcat2,浏览器输入https://localhost/test_war/index.jsp发现https访问可以进行。
https证书获取方式
自制证书
待续…
申请证书
待续…