目录结构:

contents structure [+]

1,为什么需要集群

集群就是把一个项目发布到多个服务器下面,然后再对多个服务器进行管理,一台普通tomcat基本上可以承受的并发量几乎在3000左右,如果有两台tomcat那么并发量就可以翻倍,因此使用集群开发可以极大的减少单台服务器的压力和提高用户访问的舒适度。对多个服务器进行管理的过程,叫做负载均衡。当URL访问的时候,首先由负载均衡处理,然后根据权重分配这个URL到底访问那个服务器上面的资源。

通过这张图片可以看出,主要通过一个负载均衡软件作为服务器,实现多个tomcat服务器之间的分布式处理,用户直接请求负载均衡软件,然后由负载均衡软件把请求分配到具体的tomcat中去,之后tomcat响应负载均衡软件,再有负载均衡软件把数据响应给用户。

2,如何使用Nginx部署Tomcat集群

上面的负载均衡软件有许多比如:Apacher Server 、Nginx等等,这里笔者介绍使用Nginx软件的方式。

2.1 下载Nginx软件

读者可以到nginx中下载一个稳定版本的nginx(偶数),Nginx下载

2.2 同一台电脑上部署多个Tomcat服务器

为了在本地上演示部署多个Tomcat服务器,我们需要在本地上部署多个Tomcat服务器,这里笔者就部署两个,Tomcat1和Tomcat2。我们运行项目的时候,catalina.bat和startup.bat会自动读取环境变量的CATALINA_HOME的值,如果需要部署多个Tomcat,那么就需要修改环境变量,并且修改catalina.bat和startup.bat中的CATALINA_HOME。关于Tomcat的安装和配置可参见Tomcat的下载和配置

这里笔者把Tomcat解压到了:E:\tomcats

这里笔者把Tomcat赋值了两个,分别为Tomcat1和Tomcat2,然后在环境变量新建变量CATALINA_HOME1和CATALINA_HOME2,分别指向tomcat1和tomcat2。

然后对在对Tomcat1中bin目录下的catalina.bat和startup.bat文件进行修改,将所有的CATALINA_HOME替换CATALINE_HOME1。

Tomcat2同理,也进行修改,将CATALINA_HOME替换为CATALINA_HOME2。

在修改完毕后,因为两个服务器需要同时开启,所以将Tomcat1和Tomcat2的端口错开,这里笔者建议将两个server.xml文件中所有端口都错开,这里笔者指定了Tomcat1的端口8081,Tomcat2的端口为8082。

然后开启两个服务器。

可以看出成功启动了两个服务器,tomcat1和tomcat2。笔者对Tomcat的index文件进行了修改,以示区分两个Tomcat。

2.3 在Nginx软件中对多个Tomcat服务器进行管理

在2.2中,我们实现了在一台电脑部署多个Tomcat。接下来就是用Nginx软件对Tomcat进行集群管理。

在下载好Nginx解压后

在conf目录下,打开nginx.conf这个文件。

添加一个

upstream server_list{
server localhost:8081;
server localhost:8082;
}

proxy_pass http://server_list/;

如果外部请求80端口那么就会有Nginx进行地址分配。

可以看出访问同一个地址可以访问不同的服务器,关于这里tomcat1和tamcat2出现的次数和nginx.conf文件中分配的权重有关。

3 集群开发的session共享和Ajax跨域请求

上面是基于Tomcat的集群开发,使用一堆服务器来减轻负担的话,那么服务器之间的通信就由成为了一个新的问题。关于session会话,如果是基于集群开发,不建议使用session,关于集群之间session共享可以参考http://www.cnblogs.com/ruiati/p/6247588.html,关于集群开发中ajax跨域请求的问题,可是使用jsonp来解决。

Tomcat之如何使用Nginx进行集群部署的更多相关文章

  1. 利用nginx进行集群部署

    现在一般的服务器都是集群的情况了,所以准备搞集群部署下. nginx用的是第三方的openrestynginx.首先安装nginx,我的系统是UBuntu,安装方法也很简单,见官网. 自己采用了默认安 ...

  2. Apache+Tomcat+jk windows环境下的集群部署

    记一次在Windows服务器上搭建apatch+tomcat+jk的集群搭建过程,其中也遇到了很多问题,总结一下. 一.准备工作 1.apache-tomcat-7.0.88 2.Apche http ...

  3. Nginx+Tomcat集群部署

    为了获取更好的性能,我们常常需要将tomcat进行集群部署.下文通过nginx转发实现tomcat集群,并通过nginx-upstream-jvm-route插件保证session的粘滞. 应用场景环 ...

  4. Nginx+Tomcat+Memcached 实现集群部署时Session共享

    Nginx+Tomcat+Memcached 实现集群部署时Session共享 一.简介 我们系统经常要保存用户登录信息,有Cookie和Session机制,Cookie客户端保存用户信息,Sessi ...

  5. tomcat+nginx+redis集群试验

    Nginx负载平衡 + Tomcat + 会话存储Redis配置要点   使用Nginx作为Tomcat的负载平衡器,Tomcat的会话Session数据存储在Redis,能够实现0当机的7x24 运 ...

  6. 使用Tomcat-redis-session-manager来实现Tomcat集群部署中的Session共享

    一.工作中因为要使用到Tomcat集群部署,此时就涉及到了Session共享问题,主要有三种解决方案: 1.使用数据库来存储Session 2.使用Cookie来存储Session 3.使用Redis ...

  7. 使用Tomcat+Redis来实现集群部署中的Session共享问题

    一.工作中因为要使用到Tomcat集群部署,此时就涉及到了Session共享问题,主要有三种解决方案: 1.使用数据库来存储Session 2.使用Cookie来存储Session 3.使用Redis ...

  8. 基于Tomcat的Solr3.5集群部署

    基于Tomcat的Solr3.5集群部署 一.准备工作 1.1 保证SOLR库文件版本相同 保证SOLR的lib文件版本,slf4j-log4j12-1.6.1.jar slf4j-jdk14-1.6 ...

  9. Tomcat部署问题,Tomcat集群部署问题。

    1.服务器崩溃,指的是Tomcat程序崩溃,还是服务器系统崩溃? 答:都有可能. 所以一台服务器上部署多个Tomcat可以防止程序崩溃问题.但不能避免服务器崩溃,要避免服务器崩溃,就要采用服务器集群. ...

随机推荐

  1. Oracle整形转字符串to_char()

    使用to_char()将NUMBER转换为字符串: select to_char(AW_PROCESSSTATUS ) as PROCESSSTATUS from A

  2. artTemplate--使用artTemplate时,由于json对象属性有特殊格式 导致调用报错artTemplate,syntax error,Template Error

    我们首先看下面的代码 data = { "siteName" : "西部云谷二期17", "PM10" : "10017" ...

  3. 使用 HTML5, javascript, webrtc, websockets, Jetty 和 OpenCV 实现基于 Web 的人脸识别

    这是一篇国外的文章,介绍如何通过 WebRTC.OpenCV 和 WebSocket 技术实现在 Web 浏览器上的人脸识别,架构在 Jetty 之上. 实现的效果包括: 还能识别眼睛 人脸识别的核心 ...

  4. ActiveMQ持久化方式

    ActiveMQ持久化方式 发表于8个月前(2014-09-04 15:55)   阅读(686) | 评论(0) 17人收藏此文章, 我要收藏 赞1 慕课网,程序员升职加薪神器,点击免费学习 摘要  ...

  5. Spring4新特性——集成Bean Validation 1.1(JSR-349)到SpringMVC

    在之前的<跟我学SpringMVC>中的<第七章 注解式控制器的数据验证.类型转换及格式化>中已经介绍过SpringMVC集成Bean Validation 1.0(JSR-3 ...

  6. iOS运用keychain 把identifierForVendor当成唯一标识。替换advertisingIdentifier

    iOS运用keychain 结合[[[UIDevice currentDevice] identifierForVendor] UUIDString] 取得设备唯一标识 NSString *ident ...

  7. 机器学习-分类器-Adaboost原理

    Adaboost原理 Adaboost(AdaptiveBoosting)是一种迭代算法,通过对训练集不断训练弱分类器,然后把这些弱分类器集合起来,构成强分类器.adaboost算法训练的过程中,初始 ...

  8. 机器学习-分类器-级联分类器训练(Train CascadeClassifier )

    一.简介: adaboost分类器由级联分类器构成,"级联"是指最终的分类器是由几个简单分类器级联组成.在图像检测中,被检窗口依次通过每一级分类器,这样在前面几层的检测中大部分的候 ...

  9. 两个自定义对象List列表取交集(intersection)

    public static void main(String[] args) { List<Fpxx> list = ListUtils.intersection(getFpList1() ...

  10. java线程同步实的现方式

    为何要使用同步? java允许多线程并发控制,当多个线程同时操作一个可共享的资源变量时(如数据的增删改查), 将会导致数据不准确,相互之间产生冲突,因此加入同步锁以避免在该线程没有完成操作之前,被其他 ...