目录结构:

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来解决。

最新文章

  1. Python: Windows 7 64位 安装、使用 pymongo 3.2
  2. 修改AspNetPager的CustomInfoHTML,添加自定义样式
  3. java项目——数据结构实验报告
  4. linux-虚拟机安装
  5. c# 调用zebra打印指令 打印到USB端口
  6. 一站式Hadoop&Spark云计算分布式大数据和Android&HTML5移动互联网解决方案课程(Hadoop、Spark、Android、HTML5)V2的第一门课程
  7. ios的NSMutableString用法
  8. PL/SQL Developer 与tnsnames.ora
  9. bzoj5153&uoj348 【WC2018】州区划分
  10. mysql查询用,或#隔开的字段
  11. vue 导航栏切换
  12. Linux - 进程服务资源
  13. iOS UI基础-9.2 UITableView 简单微博列表
  14. SRM480
  15. python中常用的知识
  16. [转]创建一个 Microsoft Outlook 扩展插件
  17. P1183 多边形的面积
  18. 安装TestNG在eclipse中的插件
  19. SSM整合Redis
  20. HTML5本地存储——IndexedDB二:索引

热门文章

  1. (转)Xen Server删除Local Storage
  2. Asp.NET websocket,Asp.NET MVC 使用 SignalR 实现推送功能一(Hubs 在线聊天室)
  3. Auty 2017——WebMonitor接口本地检测平台
  4. IC卡制作常识概述
  5. SuperMap开发入门2——环境部署
  6. 【Ubuntu】Ubuntu网络配置DNS失效问题处理
  7. Selenium2(webdriver)入门之TestNG的安装与简单使用
  8. JAVA 线程池入门事例
  9. MAVEN创建JAVA的Web工程
  10. JavaBean与XML转换——XStream使用笔记