概念理解(原文链接

  集群:多个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上

windows+nginx+tomcat实现集群负载均衡(生产环境必读)的更多相关文章

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

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

  2. 转】Nginx+tomcat配置集群负载均衡

    原博文出自于:http://blog.csdn.net/bruce_6/article/details/38228299         感谢! 相信很多人都听过nginx,这个小巧的东西慢慢地在吞食 ...

  3. Nginx+tomcat配置集群负载均衡

    开发的应用采用F5负载均衡交换机,F5将请求转发给5台hp unix服务器,每台服务器有多个webserver实例,对外提供web服务和socket等接口服务.之初,曾有个小小的疑问为何不采用开源的a ...

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

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

  5. Nginx部署tomcat/wildfly集群负载均衡

    1.调度器配置: docker run -p 80:80 --name nginx --restart=always  -v /root/nginx/www/:/usr/share/nginx/htm ...

  6. 【nginx+tomcat集群】Nginx1.12.2+Tomcat7集群+负载均衡+Session共享

    今天想着将项目优化一下,就想的实现集群分布,在本机测试:利用nginx+tomcat实现 通过上一篇博客(http://www.cnblogs.com/qlqwjy/p/8535235.html),N ...

  7. ngnix apache tomcat集群负载均衡配置

    http://w.gdu.me/wiki/Java/tomcat_cluster.html 参考: Tomcat与Apache或Nginx的集群负载均衡设置: http://huangrs.blog. ...

  8. Apache + Tomcat集群 + 负载均衡

    Part I: 取经处: http://www.ramkitech.com/2012/10/tomcat-clustering-series-simple-load.html  http://blog ...

  9. .net core 跨平台开发 微服务架构 基于Nginx反向代理 服务集群负载均衡

    1.概述 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客 ...

随机推荐

  1. UI5-学习篇-4-SCP-SAP WEB IDE登录

    1.注册SAP账号 登录SAP官网:https://www.sap.com/index.html 注册Register 填完相关信息,勾选条款,然后提交. 账号激活:完成后需到Email邮件中激活链接 ...

  2. cxGrid 颜色设置

    一.cxGrid 根据列值变色(样式) 在使用cxGrid的过程中,某一个单元格经常需要根据其他单元格的值来做相应的变色,如: 在cxGridDBTableView中,选定要变样式(如背景色.字体属性 ...

  3. SQL SERVER 2000安装遇到的问题小汇总(转载)

    [1]安装程序配置服务器失败需要修改下注册表1 打开注册表 在"开始"--"运行"键入 "regedit"  2 删除注册表如下键值: HK ...

  4. nginx+php 开启https

    nginx 配置如下,配置好重启nginx,不是nginx -s reload,如果还不能访问肯定就是防火墙问题,关闭防火墙再试试. 我遇到的问题是:我服务器是ecs,域名解析到阿里云复杂均衡的,结果 ...

  5. 安装安卓SDK和JDK的简便方法

    直接在VS的安装程序里选:使用.NET的移动开发,其中就包括了安卓SDK,JAVA SE等 另外:自己手动安装SDK时,不要选模拟器相关的东西,太大了,如果每个版本都选,安装下来上100G以上

  6. TypeScript语言学习笔记(1)

    基本类型 // 布尔型(Boolean) let isDone: boolean = false; // 数值型(Number) let decimal: number = 6; let hex: n ...

  7. avalon2学习教程06样式操作

    avalon2的ms-css的变革思路与ms-attr一样,将多个操作合并成到一个对象里面处理,因此没有ms-css-name="value",只有ms-css="Obj ...

  8. Android忽略文件

    转自我自己的博客...Android Studio上传项目到GitHub

  9. subline 相关

    ctrl + ` 输入命令: import urllib.request,os; pf = 'Package Control.sublime-package'; ipp = sublime.insta ...

  10. Hibernate 再接触 关系映射 一对一双向外键关联

    凡是双向关联必设mapped by  由对方主导 wifi.java package com.bjsxt.hibernate; import javax.persistence.Entity; imp ...