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

[经验分享] Apache HTTP Server + Tomcat的集群配置

[复制链接]

尚未签到

发表于 2017-1-5 09:53:03 | 显示全部楼层 |阅读模式
如何应对大量请求所造成的服务器性能下降、崩溃

  • 应用逻辑优化
  • 服务器优化

    • 增强服务器处理能力
    • 增加服务器

      • 增加逻辑应用服务器(纵向扩展)
      • 增加硬件服务器(水平扩展)


  此处不打算介绍各种各种方式的优劣,下文展示的是如何纵向扩展,搭建Tomcat集群。
Tomcat集群访问示意图:
DSC0000.jpg

搭建Apache HTTP Server
  我的建议是最好在虚拟机里面做,并且在安装Apache HTTP Server之前关闭IIS服务和IE。

  • 下载Apache HTTP Server的安装文件(HTTPD)并安装。
    DSC0001.jpg

      Custom
    DSC0002.jpg

      注意安装目录不要太"深",将来改配置、找东西啥的,都很麻烦。
  安装完成之后,在此处启动HTTP Server DSC0003.jpg 。浏览器中输入http://localhost,如果有网页显示,则安装成功。

  • 下载Tomcat7并解压到HTTP Server的统计目录中,重命名为tomcat7_1.
      启动Tomcat,ie中输入http://localhost:8080,看到管理页面即为安装成功。
出击吧,喵咪们!~~~
进入到d:/apache/conf下,打开httpd.conf,找到DocumentRoot,修改为d:/webapps
继续找到
<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny  from all
</Directory>
这一节点,修改为:
<Directory />
    #Options FollowSymLinks
    Options none
    AllowOverride None
    Order deny,allow
    Allow from all
</Directory>
继续找到<Directory "D:/apache/htdocs">,修改为<Directory "D:/webapps">.
继续找到Options Indexes FollowSymLinks,修改为:Options none
然后在webapps文件夹下新建一个index.html,内容随便,重启apache服务,刷新http://localhost,应当显示为刚才的html页面。

  • 下载mod_jk-1.2.31-httpd-2.2.3.so并复制到D:\apache\modules。
  • 在httpd.conf文件最后一行追加
      include conf/jk_mod.conf
  • 在conf文件夹下新建jk_mod.conf文件,加入如下内容(注意注释换行问题):
    #加载apache-tomcate模块
    LoadModule jk_module modules/mod_jk-1.2.31-httpd-2.2.3.so
    #集群相关参数的属性文件
    JkWorkersFile conf/workers.properties
    #日志相关配置
    JkLogFile logs/mod_jk.log
    JkRequestLogFormat "%w %V %T"
    JkLogLevel info
    #将后缀为X的请求交由controller处理
    JkMount /*.jsp controller
    jkMount /*.do controller
  • 在conf文件夹下新建workers.properites文件,加入如下配置:
    worker.controller.balance_workers=tomcat7_1,tomcat7_2

    #-------controller---------------
    worker.list=controller
    worker.controller.type=lb
    worker.controller.sticky_session=false
    worker.controller.sticky_session_force=1
    #tomcat1
    worker.tomcat7_1.port=8009      
    worker.tomcat7_1.host=localhost
    worker.tomcat7_1.reference=worker.template
    worker.tomcat7_1.lbfactor=1
    #tomcat2
    worker.tomcat7_2.port=9009     
    worker.tomcat7_2.host=localhost
    worker.tomcat7_2.reference=worker.template
    worker.tomcat7_2.lbfactor=1
    #========template========
    worker.template.type=ajp13  
  • 修改tomcat7_1/conf/server.xml文件。
  找到:
<Engine name="Catalina" defaultHost="localhost">
改为:
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat7_1">
将:
  <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
  的注释去掉,使其生效。
找到:
appBase="webapps"
改为:
appBase="d:/webapps"
复制此tomcat的webapps文件夹到d:webapps。此时重启tomcat,还是能够看到之前的管理页面。

  • 复制tomcat服务器
  复制tomcat7_1到同级目录,改名为tomcat7_2,修改tomcat7_2的server.xml文件,修改三个个以8开头的端口:8005->9005;8080->9080; 8009->9009
同时将jvmRoute="tomcat7_1"改为:jvmRoute="tomcat7_2"
此时启动tomcat7_2,访问http://localhost:9080,即可看到tomcat7_2 的管理页面。

  • 部署一个测试过程
    这个工程最起码需要满足两个要求:

    • 有一定数量的(最起码一个)HTML静态文件,apache会解析他,不经过应用服务器(tomcat)
    • 有一定数量的"动"态文件,apache解析不了,交由app server处理。其中必须有对session的操作,以验证集群的session共享正确性。
    • 在web.xml下的web-app节点下添加<distributable/>
    我这里有一个及其简单的工程。复制到d:/webapps后,启动tomcat7_1和tomcat7_2,分别输入:
    http://localhost:8080/test/index.jsp
    http://localhost:9080/test/index.jsp

  应该都可以访问到。
  此时,所有配置完毕。
测试session是否被共享
  启动两个tomcat,重启apache服务。访问http://localhost/test/index.jsp,每次刷新,你将看见两个tomcat"轮流"处理请求,而页面内session的值则是连续的,说明session被共享。
配置失败?
  有一些原因会导致配置失败,这些永远很难在一篇文章内描述清楚,所以,遇到问题,及时google(其实我喜欢用百度,只是说google比较洋气点儿,呵呵)是必要的。
  这里是一个直接就可以用例子
  这是一个严重配置文件正确性的工具:
DSC0004.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-324109-1-1.html 上篇帖子: 服务器-apache-common-httpclient测试 下篇帖子: Apache集群乱码和最高并发控制
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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