Tomcat之如何使用Nginx进行集群部署
目录结构:
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进行集群部署的更多相关文章
- 利用nginx进行集群部署
现在一般的服务器都是集群的情况了,所以准备搞集群部署下. nginx用的是第三方的openrestynginx.首先安装nginx,我的系统是UBuntu,安装方法也很简单,见官网. 自己采用了默认安 ...
- Apache+Tomcat+jk windows环境下的集群部署
记一次在Windows服务器上搭建apatch+tomcat+jk的集群搭建过程,其中也遇到了很多问题,总结一下. 一.准备工作 1.apache-tomcat-7.0.88 2.Apche http ...
- Nginx+Tomcat集群部署
为了获取更好的性能,我们常常需要将tomcat进行集群部署.下文通过nginx转发实现tomcat集群,并通过nginx-upstream-jvm-route插件保证session的粘滞. 应用场景环 ...
- Nginx+Tomcat+Memcached 实现集群部署时Session共享
Nginx+Tomcat+Memcached 实现集群部署时Session共享 一.简介 我们系统经常要保存用户登录信息,有Cookie和Session机制,Cookie客户端保存用户信息,Sessi ...
- tomcat+nginx+redis集群试验
Nginx负载平衡 + Tomcat + 会话存储Redis配置要点 使用Nginx作为Tomcat的负载平衡器,Tomcat的会话Session数据存储在Redis,能够实现0当机的7x24 运 ...
- 使用Tomcat-redis-session-manager来实现Tomcat集群部署中的Session共享
一.工作中因为要使用到Tomcat集群部署,此时就涉及到了Session共享问题,主要有三种解决方案: 1.使用数据库来存储Session 2.使用Cookie来存储Session 3.使用Redis ...
- 使用Tomcat+Redis来实现集群部署中的Session共享问题
一.工作中因为要使用到Tomcat集群部署,此时就涉及到了Session共享问题,主要有三种解决方案: 1.使用数据库来存储Session 2.使用Cookie来存储Session 3.使用Redis ...
- 基于Tomcat的Solr3.5集群部署
基于Tomcat的Solr3.5集群部署 一.准备工作 1.1 保证SOLR库文件版本相同 保证SOLR的lib文件版本,slf4j-log4j12-1.6.1.jar slf4j-jdk14-1.6 ...
- Tomcat部署问题,Tomcat集群部署问题。
1.服务器崩溃,指的是Tomcat程序崩溃,还是服务器系统崩溃? 答:都有可能. 所以一台服务器上部署多个Tomcat可以防止程序崩溃问题.但不能避免服务器崩溃,要避免服务器崩溃,就要采用服务器集群. ...
随机推荐
- 如何导入另一个 Git库到现有的Git库并保留提交记录
问题描述: 我在本地有两个Git库项目(D1=PC项目 包含通用项目,D2=移动项目 也包含通用项目这两个项目在同一目录下),因为这两个项目使用的通用项目是一样的如数据库访问等 只有显示层(vie ...
- python命令行参数传递JSON串
有点小问题,一是传递的双引号被自动删除了,但是如果用单引号,JSON解析又不认. 所以,最后的方案是,传递单引号,但程序处理时做一个替换,替换成单引号.
- 转载:Unicode和Utf-8有何区别 转载自知乎 原文作者不详
作者:于洋链接:https://www.zhihu.com/question/23374078/answer/69732605来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出 ...
- 谷哥的小弟学前端(10)——JavaScript基础知识(1)
探索Android软键盘的疑难杂症 深入探讨Android异步精髓Handler 具体解释Android主流框架不可或缺的基石 站在源代码的肩膀上全解Scroller工作机制 Android多分辨率适 ...
- uni-app - 上传图片组件
2018-12-29 更新1.0 2019-01-08 更新1.1 2019-01-29 更新1.3 重大更新 插件地址: http://ext.dcloud.net.cn/plugin?id= ...
- ExtJs4.2中Tab选项卡的右击关闭其它和关闭当前功能不准确的解决方法
一.ExtJs4.2中Tab选项卡的右击关闭其它和关闭当前功能不准确的解决方法 二.找到ux目录下的TabCloseMenu.js文件,将内容替换成下面代码. 三.代码: /** * Plugin f ...
- CDH的安装和设置
采用伪分布模式安装和设置CDH,前提是已经安装了Java和SSH. 1. 下载hadoop-2.6.0-cdh5.9.0,复制到/opt/下,再解压: 2. 进入/opt/hadoop-2.6.0-c ...
- Response的返回内容类型
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6682514.html 服务器在返回结果给浏览器时,通常需要先设置响应头的contentType属性.那么,c ...
- Java多线程之Future与FutureTask
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6561154.html 一:Future 在使用实现Callable创建线程时,call()方法是有返回值的. ...
- Cocos2d-js 3.0 颜色变换(调整sprite/图片的色调)
Flash在滤镜方面做得比较成熟,starling也有很多现成的办法. 但Cocos2D这里就显得比较单薄,百度/谷歌很少相关资料. 后续如果有时间,再慢慢整理各种滤镜效果. 这里先介绍一下颜 ...