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可以防止程序崩溃问题.但不能避免服务器崩溃,要避免服务器崩溃,就要采用服务器集群. ...
随机推荐
- linux命令大全网站
一. linux命令大全网站 http://man.linuxde.net/watch
- (转)【Unity Shaders】Vertex Magic —— 访问顶点颜色
转自:http://blog.csdn.net/candycat1992/article/details/38147767 本系列主要参考<Unity Shaders and Effects C ...
- MongoDB数据库遭大规模勒索攻击,被劫持26000多台服务器 #精选GITHUBMYSQL
昨天,一个大新闻爆出,MongoDB数据库叕被攻击了.就在上周末,三个黑客团伙劫持了MongoDB逾26000多台服务器,其中规模最大的一组超过22000台. “MongoDB启示录”再临? 此次 ...
- oracle 学习blogs
http://blog.sina.com.cn/s/blog_5dfbafd20100sxv7.html
- javax.validation.UnexpectedTypeException: No validator could be found for constraint 'org.hibernate.validator.constraints.Length' validating type
使用hibernate validator出现上面的错误, 需要注意: @NotNull 和 @NotEmpty 和@NotBlank 区别 @NotEmpty 用在集合类上面@NotBlank 用 ...
- JAVA Eclipse如何导入已有的项目
File-Import,然后在弹出的窗口中输入exit,会自动提示下面的选项(已存在的项目) 把项目源代码放到Eclipse的工作目录,然后找到 导入完成
- redis 中 set 和 hset 有什么不同,什么时候使用 hset 什么时候使用set?
转载:https://blog.csdn.net/wab719591157/article/details/73379844 redis 中存数据时,到底什么时候用 hset 相比于 set 存数据 ...
- 分析jQuery源码时记录的一点感悟
分析jQuery源码时记录的一点感悟 1. 链式写法 这是jQuery语法上的最大特色,也许该改改POJO里的set方法,和其他的非get方法什么的,可以把多行代码合并,减去每次 ...
- Android Studio 之 导入Eclipse项目常见问题及解决方案
在将Eclipse做的Android项目成功导入Android Studio 后,启动生成,遇到一些问题,现总结如下: 问题1:图片命名问题 AS对图片命名要求比eclipse严格,图片名称只能有&q ...
- 高级NUMA参数
Advanced NUMA Attributes You can use the advanced NUMA attributes to customize NUMA usage. Attribute ...