Apache,Nginx

Apache和Nginx都属于属于 静态页面服务器,都有插件支持动态编程语言处理,但Nginx的IO模比Apache更适合跑代理。所以一般都作为前端缓冲代理(Nginx的反向代理功能)。

Tomcat,Jetty

tomcat和Jetty都是Java Servlet容器,可以用来生成动态页面,主要用来跑Java的Web功能,当然也提供一个简单静态页面转换:

  • Jetty 是面向 Handler 的架构,就像 Spring 是面向 Bean 的架构,iBATIS 是面向 statement 一样,而 Tomcat 是以多级容器构建起来的,它们的架构设计必然都有一个“元神”,所有以这个“元神“构建的其它组件都是肉身
  • Jetty 可以很容易被扩展和裁剪,相比之下,Tomcat 要臃肿很多,Tomcat 的整体设计上很复杂

负载均衡

tomcat的最大优势在于处理动态请求,处理静态内容的能力不如Apache和Nginx,并且经过测试发现,tomcat在高并发的场景下,其接受的最大并发连接数是由限制的,连接数过多会导致tomcat处于"僵死"状态,因此,在这种情况下,我们可以利用Nginx的高并发,低消耗的特点与tomcat一起使用。因此,tomcat与Nginx、Apache结合使用共有如下几点原因:

  1. Tomcat处理html的能力不如Apache和Nginx,tomcat处理静态内容的速度不如Apache和Nginx。
  2. tomcat接受的最大并发数有限,接连接数过多,会导致tomcat处于"僵尸"状态,对后续的连接失去响应,需要结合Nginx一起使用。

通常情况下,tomcat与Nginx、Apache结合使用,Nginx、Apache既可以作为 静态页面服务器,也可以 转发动态请求 至tomcat服务器上。但在一个高性能的站点上,通常Nginx、Apache只提供代理的功能,也就是转发请求至tomcat服务器上,而对于静态内容的响应,则由前端 负载均衡 器来转发至专门的静态服务器上进行处理。其架构类似于如下图:

在这种架构中:

  • Nginx作为前端代理时,如果是静态内容,如html、css等内容,则直接交给静态服务器处理;如果请求的图片等内容,则直接交给图片服务器处理。
  • 如果请求的是动态内容,则交给tomcat服务器处理。

因此在这里,我们通过用Nginx作为代理服务器来转发来自前端的请求,

安装多个Tomcat

  1. 修改Tomcat端口为:8081,8082(在同一台电脑上,避免端口冲突)
SHUTDOWN HTTP/1.1 redirectPort AJP/1.3 redirectPort
默认 8005 8080 8443 8009 8443
Tomcat7.1 8101 8081 - 8009 -
Tomcat7.2 8102 8082 - 8009 -
  1. 在两个Tomcat中context.xml中加入(与redis客户端交互)
     <Manager className="com.radiadesign.catalina.session.RedisSessionManager"
host="localhost"
port="6379"
database="0"
maxInactiveInterval="60" />
  1. 两个Tomcat中加入jar包
  • commons-pool2-2.4.2.jar
  • jedis-2.7.3.jar
  • tomcat-redis-session-manager-1.2-tomcat-7-java-7.jar

Redis

安装redis(Google,百度一下redis作为nosql,但是下载我的redis版本,在最后),看一下bin下的RedisService.docx

Windows下Nginx命令

  1. 启动

    直接点击Nginx目录下的Nginx.exe 或者 cmd运行start Nginx
  2. 关闭

    Nginx -s stop 或者 Nginx -s quit

    stop表示立即停止Nginx,不保存相关信息

    quit表示正常退出Nginx,并保存相关信息
  3. 重启(因为改变了配置,需要重启)

    Nginx -s reload
  4. 关闭进程

    tskill Nginx

Nginx负载均衡配置

在Nginx.conf配置文件中加入注释部分

#  upstream  localhost   {
# server localhost:8081;
# server localhost:8082;
# }
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
# proxy_pass http://localhost;
# proxy_set_header Host $host;
# proxy_set_header X-Real-IP $remote_addr;
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

测试

  1. 在两个Tomcat中的webapps下的ROOT下加入一个session.jsp
<%=session.getId()%> + Tomcat7.1
<%=session.getId()%> + Tomcat7.2
  1. 依次运行redis,Tomcat,Nginx

成功

jar包,redis,Nginx,Tomcat : http://pan.baidu.com/s/1c1NSPzU

总结

Tomcat9配置

最开始,我采用的是Tomcat9,在我安装的时候总是有问题,很多东西已经改了,tomcat9安装来安装去,结果都是同一个Tomcat,有时候版本高就是有点坑。

Tomcat9必须要配置 CATALINA_HOME

问题 :

  1. 必须配置CATALINA_HOME变量,不然就闪退,但是如果配置就打开了自己的用的Tomcat,不是需要测试的Tomcat,结果是加的东西改变了他的属性

具体配置参考 : windows下安装多个tomcat服务

  1. 安装服务

    在命令行中进入/Tomcat路径/bin/,执行“service.bat install”:

    说明:
  2. 服务名和显示名称:service.bat中设置了默认的服务名称,不同版本分别命名为Tomcat4、Tomcat5、Tomcat6,如果需要自 定义服务名或服务的显示名称,可在service.bat中修改SERVICE_NAME或PR_DISPLAYNAME;
  3. 防火墙的影响:/bin/tomcat6.exe(或tomcat4.exe、tomcat5.exe)将被作为服务程序,如果有防火墙,需要设为允许作为服务。
  4. 卸载服务

    在命令行中进入/Tomcat路径/bin/,执行“service.bat remove”:

Jar包

jar包是一个很大的问题,有些jar包不支持(错误为仔细记录),而且Tomcat-session jar的实现版本也不一样。

不过正因为踩了坑,才更有趣,不是吗

Windows下Nginx实现负载均衡的更多相关文章

  1. windows配置nginx实现负载均衡集群

    windows配置nginx实现负载均衡集群2014-08-20 09:44:40   来源:www.abcde.cn   评论:0 点击:617 网上大部分关于nginx负载均衡集群的教程都是lin ...

  2. windows配置nginx实现负载均衡集群 -请求分流

    windows配置nginx实现负载均衡集群 一.windows上安装nginx 1.下载nginx的windows版本http://nginx.org/en/download.html 2.把压缩文 ...

  3. Windows下apache+tomcat负载均衡

    Windows下apache+tomcat负载均衡 网上已经有很多的资料,但是很多都比较零碎,需要整合一起才能搭建出理想的负载均衡,正好前段时间搭建了windows与linux下的负载均衡,在此记录, ...

  4. Linux环境下Nginx及负载均衡

    Nginx 简介 Nginx 是一个高性能的 HTTP 和反向代理 Web 服务器,同时也提供了 IMAP/POP3/SMTP 服务.前向代理作为客户端的代理,服务端只知道代理的 IP 地址而不知道客 ...

  5. Nginx学习系列二Linux下Nginx实现负载均衡

    关于在本地虚拟机(VMware 14)下安装Linux同时安装Nginx,请参考Nginx学习系列之搭建环境 1.启动Nginx 在Nginx安装成功的前提下,启动Nginx 已root模式登陆(权限 ...

  6. linux 下 nginx的负载均衡

    nginx是如何实现负载均衡的,nginx的upstream目前支持以下几种方式的分配: 1.轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除.   2 ...

  7. Linux下Nginx+Tomcat负载均衡和动静分离配置要点

    本文使用的Linux发行版:CentOS6.7 下载地址:https://wiki.centos.org/Download 一.安装Nginx 下载源:wget http://nginx.org/pa ...

  8. lnmp环境下nginx配置‘负载均衡’

    NGINX负载均衡分发请求的几种方式: 1.轮询(默认)每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除.2.weight 指定轮询几率,weight和访问比率成正比 ...

  9. Windows下nginx配置多台服务器做负载均衡

    Nginx (engine x) 是一个高性能的HTTP和反向代理服务,也是一个IMAP/POP3/SMTP服务. Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3 ...

随机推荐

  1. Android基础_web通信

    一.发展史 1G 模拟制式手机,只能进行语音通话2G 数字制式手机,增加接收数据等功能3G 智能手机,它已经成了集语音通信和多媒体通信相结合,并且包括图像.音乐.网页浏览.电话会议以及其它一些信息服务 ...

  2. 认识Java中的字符串

    Java 中 String 类的常用方法 Ⅰ String 类提供了许多用来处理字符串的方法,例如,获取字符串长度.对字符串进行截取.将字符串转换为大写或小写.字符串分割等,下面我们就来领略它的强大之 ...

  3. Hadoop伪分布式部署

    一.Hadoop组件依赖关系: 步骤 1)关闭防火墙和禁用SELinux 切换到root用户 关闭防火墙:service iptables stop Linux下开启/关闭防火墙的两种方法 1.永久性 ...

  4. [bzoj1731] [Usaco2005 dec]Layout 排队布局

    差分约束系统...因为题目要求的是1和n的最大距离所以这题就跑最长路.. 对于互相反感的牛(i与j互相反感,彼此距离至少为len,i<j),就有dis[j]-dis[i]>=len.就加一 ...

  5. c语言基础学习08_关于内存管理的复习

    =============================================================================对于c语言来讲,内存管理是一个很重要的内容,它 ...

  6. 文件末尾判断feof

    feof 作用:如果文件结束,则返回非0值,否则返回0 但要注意的是feof要读取到文件结束标志EOF后,才能判断文件是否结束. 所以使用while(!feof(pFile))会出现最后fread会返 ...

  7. TI-RTOS 控制LED灯

    TI将FreeRtos放在自家芯片上,于是得到了TI-RTOS,两者的区别我还不太清楚,近日因为项目需要,开始试用TI-RTOS,先来一个点灯的实验吧,算是 hello world. 这次手上的板子是 ...

  8. PHPMailer发送邮件中文附件名是乱码

    可能使用了PHPMailer发送邮件的朋友带中文附件名时会出现乱码,下面我来介绍一个解决办法. 比如我们要发送的附件是"测试.txt",如果在添加附件的时候强制使用指定文件名的方式 ...

  9. dede 提交表单 发送邮件

    第一步:要到dede后台设置好邮箱的资料,并且确定所用的邮箱开启了smtp 第二步:找到/plus/diy.php在 [cce]$query = "INSERT INTO `{$diy-&g ...

  10. 在Intellij idea 2017中运行tomcat 8.5

    前提:jdk,tomcat都已安装完,环境变量该配置的都配置了,tomcat  localhost:xx  能登上去 首先新建web小项目 new  project next 为项目命个名 finis ...