概念理解(原文链接)

  集群:多个tomcat服务器运行同一个web服务就能称之为集群

  负载均衡:apache按照一定方式将不同的客户端访问分配到不同的tomcat服务器

简单负载均衡实现:

网上参考了好多文章,都写的不全,拿来直接用时存在这样或那样的问题,花了好长时间摸索细致整理了一下希望能帮助像我这样的新手

集群搭建:

tomcat复制改8080端口为8081,8005为8006,8009为8010

添加项目进行访问:

如上图所示证明集群成功

负载均衡实现:@参考博客1、@参考博客2、@参考博客3、@参考博客4

借助ngnix,下载地址(我用的1.4.7和1.14.0l,两者都能成功其他的没试也不用试):

配置nginx:%nginx%/nginx.conf

测试:输入localhost:81出现欢迎界面

访问上述项目:

如果支持了ipv6下面的ip使用了localhost,

可能会报异常

com.orangefunction.tomcat.redissessions.SessionSerializationMetadata cannot be cast to com.orangefunction.tomcat.redissessions.SessionSerializationMetadata

据说是版本不兼容。最后博主舍弃了redis,因为nginx可以实现同样的效果。具体配置

    upstream naire {#weight(权重) 指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。如下所示,10.0.0.88的访问比率要比10.0.0.77的访问比率高一倍。#设置由 fail_timeout 定义的时间段内max_fails内该主机是否可用。#max_fails设置在指定时间内连接到主机的失败次数,超过该次数该主机被认为不可用。这里是在30s内尝试2次失败即认为主机不可用!默认情况下这个数值设置为 1。零值的话禁用这个数量的尝试。#server 127.0.0.1:8080 weight=1 max_fails=2 fail_timeout=30s;server 127.0.0.1:8080 weight=1 max_fails=10 fail_timeout=30s;server 127.0.0.1:8081 weight=1 max_fails=10 fail_timeout=30s;ip_hash;#每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。}

上面的ip_hash即可

效率对比:

为了验证负载均衡显著提高了访问速度,博主兴冲冲地进行了压力测试

结果如下:

1000个并发81端口
1000个并发8080端口
多次测试发现并没有提高效率反而降低了,猜想应该是nginx分发时占用了资源,项目不存在访问量压力的时候不会体现出来,加大访问量到2000,但出现java.net.SocketException: Connection reset异常,异常数占60%-70%左右,相当可怕。@参考博客给出的几条原因,猜想应是服务器的并发连接数超过了其承载量,服务器将其中一些连接Down掉 。通过这篇@参考博客给出的示例,修改了connector协议为nio,异常数降低至10%-50%,大大增加了并发处理能力,但仍不够。查看了数据库允许最大连接数select @@MAX_CONNECTIONS为32767,配置了数据库连接池最大连接数为1000,仍没有提升。tomcat中jvm配置在测试之前已经做过了,不在优化范围之内
报出的错误大致有以下几种:
java.net.ConnectException: Connection refused: connect
java.net.SocketException: Connection reset
java.net.SocketException: Unrecognized Windows Sockets error: 0: recv failed
upstream prematurely closed connection while reading response header from upstream, client: 192.168.1.56, server:  
根据这些异常我是各种百度谷歌,贴吧、博客园、csdn、开源中国、百度知道、QQ群各种求助,然无所获。最后在nginx官方文档上找到了答案,

Known issues

  • Although several workers can be started, only one of them actually does any work.
  • A worker can handle no more than 1024 simultaneous connections.
  • The UDP proxy functionality is not supported.

Possible future enhancements

  • Running as a service.
  • Using the I/O completion ports as a connection processing method.
  • Using multiple worker threads inside a single worker process.
截止我发这篇博客nginxwindows更新到版本nginx 1.15.3.1 Crow还没有解决(亲测了四五个版本)。以后的版本可能会解决吧。
最后,劝准备在windows下搭建nginx的,试试就行了,不建议用生产环境。博主优化tomcat后可以支持2000个并发,nginx还停留在1024上

转载于:https://www.cnblogs.com/yanan7890/p/9494437.html

windows+nginx+tomcat实现集群负载均衡(生产环境必读)相关推荐

  1. 图文解说:Nginx+tomcat配置集群负载均衡

    图文解说:Nginx+tomcat配置集群负载均衡 博客分类: appserver nginxTomcatUbuntuLinux网络应用  作者:niumd Blog:http://ari.iteye ...

  2. nginx+tomcat实现集群负载均衡(实现session复制)

    架构描述 前端一台nginx服务器做负载均衡器,后端放N台tomcat组成集群处理服务,通过nginx转发到后面(注:没做动静分离,静态动态全部都转给tomcat) 优点:实现了可弹性化的架构,在压力 ...

  3. Apache+Tomcat +mod_proxy集群负载均衡及session

      序言: 在玩Apache+Tomcat +mod_jk集群负载均衡及session的时候发现,还有一种方式可以实现,就是网上各位大牛们说的mod_proxy反向代理. 实在弄的我的知识细胞洋洋.实 ...

  4. centos下搭建nginx+tomcat实现集群负载与session复制

    第一章 测试环境说明 1.1 系统说明 系统均选用最小化安装的centos 5.7 1.2 软件说明 nginx-0.8.55 pcre-8.13 apache-tomcat-6.0.35  jdk- ...

  5. 架构系列二:使用Nginx+tomcat实现集群部署

    架构系列二:使用Nginx+tomcat实现集群部署 一.环境介绍  VM1:Ubuntu-S100 IP:192.168.130.128 部署Tomcat应用及Nginx  VM2:Ubuntu-S ...

  6. nginx+双tomcat集群负载均衡(一台机器)

    nginx简介 Nginx ("engine x") 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器. Nginx 是由 Igor ...

  7. 常见的服务器集群负载均衡技术:二三四七层负载均衡,DNS、LVS、F5、nginx负载均衡

    服务器集群负载均衡技术 LB:load balance负载均衡器.有时也叫做director. DNS负载均衡 DNS负载均衡,最基础的是轮询方式,循环返回不同的服务器IP地址.可以同时返回多个服务器 ...

  8. Tomcat集群快速入门:Nginx+Tomcat搭建集群

    参数的一些扩展点,那刚刚讲的一些负载均衡策略,都是实际企业当中常用的,负载均衡策略,领着大家分析了优缺点,希望大家好好体会,百分之一百的吸收,那我们现在把这些参数和扩展的点呢,放到一个配置里,一起来给 ...

  9. 前后端分离 集群负载均衡 分布式 微服务

    一.前后端分离 1.为什么要前后端分离 在以前传统的网站开发中,前端一般扮演的只是切图的工作,只是简单地将UI设计师提供的原型图实现成静态的HTML页面,而具体的页面交互逻辑,比如与后台的数据交互工作 ...

最新文章

  1. Qt网络编程之UDP编程练习(20200219)
  2. 微信小程序INC自增自减MUL自乘问题
  3. 获取minist数据并转换成lmdb
  4. ArcGIS个人数据库(mdb)中矢量字段无法删除
  5. 理论基础 —— 栈 —— 顺序栈
  6. secucrecrt配置文件导入和保存
  7. re模块中的非贪婪匹配
  8. 初入前端框架bootstrap--Web前端
  9. Spring源代码解析
  10. 电脑桌面录屏软件大全,给大家推荐一波优秀的屏幕录像工具!
  11. SOME/IP报文格式-Payload
  12. mysql导致的502_ab压测过程中出现502及操作数据库失败
  13. 代码题--C++--小米--英文句子字符串反转
  14. Charles手机的代理配置与证书的安装
  15. java xml sql_走进 SQL/XML
  16. excel学习笔记(一)
  17. 联想小新 Pad Pro 12.6评测
  18. 一个轻巧高效的多线程c++stream风格异步日志(一)
  19. 大学生一定要理解的15件事
  20. 随机接入协议简介及发展方向思考

热门文章

  1. 第 3 章 运行时数据区概述及线程
  2. 编程时程序无错却崩溃_程序员极度崩溃的 60 个瞬间,看到哪一个你哭了?
  3. 360 nginx+php,windows Nginx+PHP7+Mysql独立环境部署
  4. 启动后显示不了数据_90后都买不起房?统计数据显示:90后成了城市租房主力!...
  5. linux boot efi分区 容量,解决Ubuntu上由于/boot容量不足引起的无法更新系统
  6. redis分表_《面试官系列:深入数据库分区分库分表》
  7. 怎么通过controller层退出登录_控制层访问拦截
  8. 尚学堂java培训_送给 Java 自学者或者初学者的最全知识清单,2020 年 Java 就该这么学...
  9. NodeJS自定义包和模块的导入(require)、导出(exports)
  10. java yield方法_Java中的yield方法