设为首页 收藏本站
查看: 1265|回复: 0

[经验分享] Windows下Apache+Tomcat做简单负载均衡--使用mod_proxy实现

[复制链接]

尚未签到

发表于 2015-7-30 15:30:40 | 显示全部楼层 |阅读模式
  Apache作为前端的Web服务器,将客户端的请求分流到后端的多个Tomcat应用服务器。
    1、准备环境
      1)确保已安装好不低于1.5版本的JDK,并配置好相应的环境变量
      2)下载Apache HTTP Server
        2.1)windows版本下载地址:http://archive.apache.org/dist/httpd/binaries/win32/  我下载的是:httpd-2.2.22-win32-x86-openssl-0.9.8t.msi
        2.2)安装Apache HTTP Server,选择典型安装就行了。在安装界面出现Server Information界面时,需要填写Network Domain、Server Name和Administrator's Email Address,我只是在自己的机器上配置,所以我就按如下填写了。
DSC0000.jpg
        填写好之后,一路Next。
        2.3)检查Apache HTTP Server是否安装成功,在浏览器输入 http://localhost/ 如果出现下面的页面即可。
DSC0001.jpg
      3)准备两个Tomcat应用服务器
        我这里使用的是apache-tomcat-7.0.33.zip
        解压后分别取名tomcat-7-1和tomcat-7-2
DSC0002.jpg
  2、配置Apache HTTP Server负载均衡
      1)修改Apache HTTP Server安装路径conf目录下的httpd.conf文件,找到以下内容,去掉前面的#注释,启用mod_proxy模块



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
      mod_proxy  提供HTTP/1.1的代理/网关功能支持
      mod_proxy_ajp  mod_proxy的扩展,提供Apache JServ Protocol支持
      mod_proxy_balancer  mod_proxy的扩展,提供负载均衡支持
      mod_proxy_connect  mod_proxy的扩展,提供对处理HTTP CONNECT方法的支持
      mod_proxy_ftp  mod_proxy的FTP支持模块
      mod_proxy_http  mod_proxy的HTTP支持模块
      2)在httpd.conf文件的最后面添加以下内容



ProxyRequests Off  
  
BalancerMember ajp://localhost:8009 loadfactor=1 route=jvm1  
BalancerMember ajp://localhost:9009 loadfactor=1 route=jvm2  

      ProxyRequests Off  使用反向代理
      BalancerMember  把服务器添加到负载均衡组
      loadfactor  负载比例分配,上面的设置是按1:1的比例给两台服务器分配请求,loadfactor的值是1-100之间
      因为是在同一台机器上,所以我把其中一个应用服务器tomcat-7-2的AJP协议端口改为9009,怎么改在后面tomcat的配置中会说,在不同的机器上无需修改。route也要和各自的应用服务器配置的引擎一致
      3)找到httpd.conf文件中的Include conf/extra/httpd-vhosts.conf,去掉前面的#注释,导入虚拟主机配置文件。修改后如下



# Virtual hosts
Include conf/extra/httpd-vhosts.conf
      4)修改conf目录下extra目录中的httpd-vhosts.conf文件,在文件最后添加以下内容,将80端口的请求转发给负载均衡代理处理器




ServerName localhost
ProxyPass / balancer://cluster/ stickysession=jsessionid nofailover=On
ProxyPassReverse / balancer://cluster/  

  
    3、配置Tomcat的server.xml文件
      1)因为是在同一台机器上,所以将其中一个应用服务器tomcat-7-2的端口做如下修改
      1.1)找到:




        修改成:




      1.2)找到:



  
   修改成:



  
      1.3)找到:




        修改成:




      2)配置引擎Engine
      2.1)找到:




        tomcat-7-1修改成如下内容,将tomcat-7-1配置成集群成员




        tomcat-7-2修改成如下内容,将tomcat-7-2配置成集群成员




      3)配置一个集群环境中的session复制
      3.1)找到:




      去掉注释,在tomcat-7-1中修改为:




















  在tomcat-7-2中修改为:



   
















  
    4、在应用程序的web.xml中加入元素使应用程序支持集群
    5、放入session中的对象需要实现序列化接口
    6、测试,建立一个web项目叫webapp。
      1)在index.jsp中,把一个值存到session中








My JSP 'index.jsp' starting page



hello,apache and tomcat!  this is index.jsp file.


      2)写一个Servlet,把存在session中的值取出



package cn.luxh.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class MyServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

System.out.println("Hello,Apache and Tomcat!!!!!!!!====="+request.getSession().getAttribute("myName"));
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("");
out.println("");
out.println("  A Servlet");
out.println("  ");
out.print("    This is ");
out.print(this.getClass());
out.println(", using the GET method");
out.println("  ");
out.println("");
out.flush();
out.close();
}
}
      3)配置web.xml







MyServlet
cn.luxh.servlet.MyServlet


MyServlet
/servlet/MyServlet
   

index.jsp



      4)将项目打成war包,分别放到tomcat的webapps目录下
      5)启动Apache HTTP Server,启动tomcat-7-1,启动tomcat-7-2
      访问:http://localhost/webapp/ ,可以看到请求被分发到tomcat-7-1中,并且把值存到session中
DSC0003.jpg
  
  接下来,我们不断访问servlet,可以看到,请求被平均分发到两个应用服务器,并且能从session中取到值。
DSC0004.jpg
  
        接下来,停掉tomcat-7-1,继续不断访问servlet,在剩下的那个tomcat中依然可以取到session中的值
DSC0005.jpg
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-92358-1-1.html 上篇帖子: Web安全实践(9)攻击apache 下篇帖子: 不仅开源,而且对企业应用完全免费!ExtAspNet弃用GPL v2,拥抱Apache License 2.0
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表