略看了一下,感觉太复杂,要配置的东西太多,因此在这里写出一种更简洁的方法。

要集群tomcat主要是解决SESSION共享的问题,因此我利用memcached来保存session,多台TOMCAT服务器即可共享SESSION了。

你可以自己写tomcat的扩展来保存SESSION到memcached。

这里推荐使用memcached-session-manager这个开源项目(http://code.google.com/p/memcached-session-manager/ ),下面简称msm。

如何安装nginx、memcached、tomcat这些就不多说了。

先说明一下测试环境:

tomcat1、nginx、memcached安装在192.168.1.11

tomcat2安装在192.168.1.101

下面分步实现基于nginx的tomcat负载均衡和集群配置

一,tomcat集群

1,先下载msm及其依赖包

http://memcached-session-manager.googlecode.com/files/memcached-session-manager-1.3.0.jar

http://memcached-session-manager.googlecode.com/files/msm-javolution-serializer-jodatime-1.3.0.jar

http://memcached-session-manager.googlecode.com/files/msm-javolution-serializer-cglib-1.3.0.jar

http://spymemcached.googlecode.com/files/memcached-2.4.2.jar

http://memcached-session-manager.googlecode.com/files/javolution-5.4.3.1.jar

2,将这5个包放到$TOMCAT_HOME/lib目录下

3,修改$TOMCAT_HOME/conf/server.xml

  1. <Context docBase="E:/java_codes/TestSession/WebContent" path="" reloadable="true" >
  2. <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
  3. memcachedNodes="n1:localhost:11211"
  4. requestUriIgnorePattern=".*\.(png|gif|jpg|css|js)$"
  5. sessionBackupAsync="false"
  6. sessionBackupTimeout="100"
  7. transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"
  8. copyCollectionsForSerialization="false"
  9. />
  10. </Context>

这里的memcachedNodes是填写memcached节点,多个节点时可以以空隔分开,如:

n1:localhost:11211 n2:localhost:11212

sessionBackupTimeout的单位为分钟

E:/java_codes/TestSession/WebContent 替换成你的WEB目录

修改后重启两个TOMCAT即可,这个时候已经解决SESSION的共享问题.

二,配置nginx实现负载均衡

以我的nginx.conf为例

  1. #user  nobody;
  2. worker_processes  1;
  3. error_log  logs/error.log;
  4. events {
  5. worker_connections  1024;
  6. }
  7. http {
  8. include       mime.types;
  9. default_type  application/octet-stream;
  10. sendfile        on;
  11. keepalive_timeout  65;
  12. #gzip  on;
  13. upstream  www.docyeah.com   {
  14. server   192.168.1.11:8080;
  15. server   192.168.1.101:8080;
  16. }
  17. server {
  18. listen       80;
  19. server_name  www.docyeah.com;
  20. charset utf-8;
  21. location / {
  22. root   html;
  23. index  index.html index.htm;
  24. proxy_pass        http://www.docyeah.com;
  25. proxy_set_header  X-Real-IP  $remote_addr;
  26. client_max_body_size  100m;
  27. }
  28. location ~ ^/(WEB-INF)/ {
  29. deny all;
  30. }
  31. error_page   500 502 503 504  /50x.html;
  32. location = /50x.html {
  33. root   html;
  34. }
  35. }
  36. }

将www.docyeah.com替换成你的域名

192.168.1.11和192.168.1.101替换成你服务器的IP

OK,已经完成。启动nginx即可。

这是我采用的负载均衡及集群方案,希望大家拍砖.

ps:javaeye的编辑器有问题,代码里加颜色后居然变乱了

apache的tomcat负载均衡和集群配置 "的更多相关文章

  1. 基于apache的tomcat负载均衡和集群配置

    最近不是很忙,用零碎时间做点小小的实验. 以前公司采用F5负载均衡交换机,F5将请求转发给多台服务器,每台服务器有多个webserver实例,每个webserver分布在多台服务器,交叉式的分布集群. ...

  2. 基于apache的tomcat负载均衡和集群配置session共享

    接上面的话题接着继续完善.为什么没接到上篇呢?原因很简单太长的文章不爱看!就像有人写了上千行的方法一样,不是逼得没办法谁爱看谁看,反正我不看. 期间我没有一次配置成功,从失败的开始说起, 1.准备ja ...

  3. 基于Apache的Tomcat负载均衡和集群(2)

    反向代理负载均衡 (Apache+JK+Tomcat) 使用代理服务器可以将请求转发给内部的Web服务器,让代理服务器将请求均匀地转发给多台内部Web服务器之一上,从而达到负载均衡的目的.这种代理方式 ...

  4. 使用apache和nginx代理实现tomcat负载均衡及集群配置详解

    实验环境: 1.nginx的代理功能 nginx proxy: eth0: 192.168.8.48 vmnet2 eth1: 192.168.10.10 tomcat server1: vmnet2 ...

  5. apache + tomcat 负载均衡分布式集群配置

    Tomcat集群配置学习篇-----分布式应用 现目前基于javaWeb开发的应用系统已经比比皆是,尤其是电子商务网站,要想网站发展壮大,那么必然就得能够承受住庞大的网站访问量:大家知道如果服务器访问 ...

  6. Apache、Tomcat负载均衡与集群

    一. 环境准备 1.软件下载 a) apache_2.0.55-win32-x86-no_ssl.msi: b) apache-tomcat-5.5.17.rar c) mod_jk-apache-2 ...

  7. 基于nginx的tomcat负载均衡和集群

    要集群tomcat主要是解决SESSION共享的问题,因此我利用memcached来保存session,多台TOMCAT服务器即可共享SESSION了. 你可以自己写tomcat的扩展来保存SESSI ...

  8. Linux下Apache与Tomcat的完全分布式集群配置(负载均衡)

    最近公司要给客户提供一套集群方案,项目组采用了Apache和Tomcat的集群配置,用于实现负载均衡的实现. 由于以前没有接触过Apache,因此有些手生,另外在网上搜寻了很多有关这方面的集群文章,但 ...

  9. 基于mod_proxy+Apache 2.2.16+Tomcat 7的负载均衡与集群配置

    第一章. 背景简介 对于大多数企业应用,都希望能做到7*24小时不间断运行.要保持如此高的可用性并非易事,比较常见的做法是将系统部署到多台机器上,每台机器都对外提供同样的功能,这就是集群.系统变为集群 ...

随机推荐

  1. Java 系书籍,,,,,,,,,,,,,

    Java 系书籍 本文仅对每本书做简单介绍,里面的精华我是希望留给各位看官仔细去阅读去琢磨~~ Java 1. <Java核心技术 卷1 基础知识> 2. <Java核心技术 卷II ...

  2. 左手Mongodb右手Redis redis操作

    set key value  设置key的值 get key 取得key的值 decr key 值会减一 incr key 值会加一 decrby key value ,会让key的值减少value. ...

  3. 104、Tensorflow 的变量重用

    import tensorflow as tf # 在不同的变量域中调用conv_relu,并且声明我们想创建新的变量 def my_image_filter(input_images): with ...

  4. win7下使用cygwin编译VLC

     win7下使用cygwin编译VLC http://kathy.blog.51cto.com/1168050/295460 2010-04-15 14:54:01 标签:编译 休闲 VLC 职场 w ...

  5. Python中的浮点数原理与运算分析

    Python中的浮点数原理与运算分析 本文实例讲述了Python中的浮点数原理与运算.分享给大家供大家参考,具体如下: 先看一个违反直觉的例子:     >>> s = 0. > ...

  6. golang 国内环境配置

    写在 .bashrc 或 .zshrc 等文件中: # golang env export GO111MODULE=on export GOPROXY=https://goproxy.cn #七牛云提 ...

  7. ATT&CK实战系列 红队实战(一)————环境搭建

    首先感谢红日安全团队分享的靶机实战环境.红队实战系列,主要以真实企业环境为实例搭建一系列靶场,通过练习.视频教程.博客三位一体学习. 靶机下载地址:http://vulnstack.qiyuanxue ...

  8. C语言博客作业12

    一.我学到的内容 二.我的收获 * https://www.cnblogs.com/asd123456/ * 我的收获:通过这一个学期的学习,我一共完成了11次作业,由最开始的第一次作业https:/ ...

  9. Ajax 中Post 与 Get的 实例

    Ajax中 Post 与 Get 实例   Ajax的POST实例,index.html <html> <head> <script type="text/ja ...

  10. 用vim写go代码——vim-go插件

    GoImport:导入包 GoImport!:导入远程包 GoImportAs: 导入包并且重命名