设为首页 收藏本站
查看: 822|回复: 0

[经验分享] Windows下实现Nginx负载均衡

[复制链接]

尚未签到

发表于 2017-12-8 07:57:14 | 显示全部楼层 |阅读模式
Tomcat,Apache,Nginx


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


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


  • Jetty 是面向 Handler 的架构,就像 Spring 是面向 Bean 的架构,iBATIS 是面向 statement 一样,而 Tomcat 是以多级容器构建起来的,它们的架构设计必然都有一个“元神”,所有以这个“元神“构建的其它组件都是肉身
  • Jetty 可以很容易被扩展和裁剪,相比之下,Tomcat 要臃肿很多,Tomcat 的整体设计上很复杂
打造高性能的web服务器
  tomcat的最大优势在于处理动态请求,处理静态内容的能力不如apache和nginx,并且经过测试发现,tomcat在高并发的场景下,其接受的最大并发连接数是由限制的,连接数过多会导致tomcat处于"僵死"状态,因此,在这种情况下,我们可以利用nginx的高并发,低消耗的特点与tomcat一起使用。因此,tomcat与nginx、apache结合使用共有如下几点原因:


  • Tomcat处理html的能力不如Apache和nginx,tomcat处理静态内容的速度不如apache和nginx。
  • tomcat接受的最大并发数有限,接连接数过多,会导致tomcat处于"僵尸"状态,对后续的连接失去响应,需要结合nginx一起使用。
  通常情况下,tomcat与nginx、Apache结合使用,nginx、apache既可以作为静态页面服务器,也可以转发动态请求至tomcat服务器上。但在一个高性能的站点上,通常nginx、apache只提供代理的功能,也就是转发请求至tomcat服务器上,而对于静态内容的响应,则由前端负载均衡器来转发至专门的静态服务器上进行处理。其架构类似于如下图:
  
DSC0000.png
  在这种架构中,


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


  • 修改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
-

  •   在两个Tomcat中context.xml中加入(与redis客户端交互)
    <Manager>
              host="localhost"  
              port="6379"
      
              database="0"
      
              maxInactiveInterval="60" />

  • 两个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

Nginx配置
  Nginx Windows下命令


  • 启动  
    直接点击Nginx目录下的nginx.exe 或者 cmd运行start nginx

  • 关闭  
    nginx -s stop 或者 nginx -s quit
      
    stop表示立即停止nginx,不保存相关信息
      
    quit表示正常退出nginx,并保存相关信息

  • 重启(因为改变了配置,需要重启)
      
    nginx -s>
  • 关闭进程  
    tskill nginx

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

#gzip  on;  #  upstream  localhost   {
  #     server   localhost:8081;
  #     server   localhost:8082;
  #  }
  server {
  listen       80;
  server_name  localhost;
  

  #charset koi8-r;
  

  #access_log  logs/host.access.log  main;
  

  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;
  }
  

测试


  • 在两个Tomcat中的webapps下的ROOT下加入一个session.jsp
<%=session.getId()%> + Tomcat7.1<%=session.getId()%> + Tomcat7.2

  • 依次运行redis,Tomcat,Nginx
DSC0001.jpg

DSC0002.jpg

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

总结(可不看)

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


  • 必须配置CATALINA_HOME变量,不然就闪退,但是如果配置就打开了自己的用的Tomcat,不是需要测试的Tomcat,结果是加的东西改变了他的属性
  具体配置参考 : windows下安装多个tomcat服务


  • 安装服务  
    在命令行中进入/Tomcat路径/bin/,执行“service.bat install”:
      
    说明:

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

Jar包
  jar包是一个很大的问题,有些jar包不支持(错误为仔细记录),而且Tomcat-session jar的实现版本也不一样,不过正因为踩了坑,才更有趣,不是吗?

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-422003-1-1.html 上篇帖子: windows svchost.exe 引起的出现的莫名其妙的窗口失去焦点 下篇帖子: Windows下拷贝Linux的文件到本地(Putty)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表