专栏首页Java后端技术栈Nginx负载均衡实现tomcat集群方案简要小结

Nginx负载均衡实现tomcat集群方案简要小结

作者:yunnick

题目:Nginx负载均衡实现tomcat集群方案简要小结

链接:http://yunnick.iteye.com/blog/1838031


点两部分:一、负载均衡二、tomcat集群

所谓tomcat集群,就是可以向外提供并行服务的多台机器,任何一台服务器宕机,其它服务器可以替代它向外提供服务,而不影响用户访问。

Nginx是一个常用的反向代理服务,可自定义模块,实现请求转发及负载均衡(根具体采用策略有关)。为了tomcat集群的高可用性,还需要实现nginx的双机热备。

,如果仅是对外提供一个页面访问,不用区分单一用户(不区分每个访问session,不涉及用户权限,用户资料等内容),仅仅配置nginx负载均衡策略即可。

Nginx负载均衡策略主要分一下四种:

1)、轮询(默认)

每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器宕机,能自动剔除。

2)、ip_hash 每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器。

3)、fair 按后端服务器的响应时间来分配请求,响应时间短的优先分配。

4)、url_hash 按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。

,如果涉及到用户session,做一些鉴权缓存、存放临时信息时,就必须做tomcat的session共享。

目前可参考到的session共享方式主要分为两种。

1)利用tomcat自带的组播机制,实现session复制。

对tomcat及应用的若干配置文件进行配置即可实现,网上有很多资料可参考。但这种方式些弊端,看过一些资料,不建议用session复制的方式。在实际使用过程中,也发现有存在session莫名失踪的现象。

2)利用第三方机制存储session。

比较常见的是tomcat集成memcached服务器来存储session。实际项目中,我们采用过利用redis实现session存储,redis高效的存取性能为高效的访问提供了保障,但是目前redis的集群功能似乎没有发布,如何解决redis的单点故障需要研究。

结:是否实现session共享与nginx的负载策略有很大关系。比如采用轮询策略,就必须实现session共享,因为客户端会访问到每台服务器;而如果采用ip_hash策略,就可以不用考虑session共享的问题了,但是ip_hash有些缺陷使它不能随便使用(如多台pc使用同一个外网ip)。

最近发现一个Nginx的粘连模块(类似session粘连),可以看做nginx的第5种均衡策略。它利用客户端cookie,对其写入一个route参数,每次访问可以根据route的值,固定的访问一台服务器,解决的session共享的问题。

本文分享自微信公众号 - Java后端技术(JavaITWork)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-10-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Jenkins 在 Tomcat 中的部署及代码静态检查工具集成

    在安装了 Jenkins 运行所需的依赖(主要是 JDK)之后,可以通过如下步骤简单快速地部署 Jenkins:

    DevOps时代
  • SpringBoot应用部署于外置Tomcat容器

    来源:https://my.oschina.net/hansonwang99/blog/1824245

    程序猿DD
  • Apache已修复Apache Tomcat中的高危漏洞

    近日,Apache软件基金会为Tomcat应用程序服务器推送了最新的安全更新,并修复了多个安全漏洞,其中包括一个DoS漏洞和一个信息泄露漏洞。

    FB客服
  • keepalived 实现 Tomcat 服务双机热备

    操作系统:Red Hat Enterprise Linux Server release 5.6 (Tikanga)

    小小科
  • 必看,运维还要懂这么多?

    听说你精通运维?Apache、Nginx、tomcat、vmstat、iftop、awk、sed、sar、iostat、LVS、HA-proxy、MHA、Zoo...

    zhangdd
  • 在Spring-Boot中实现通用Auth认证的几种方式

    最近一直被无尽的业务需求淹没,没时间喘息,终于接到一个能让我突破代码舒适区的活儿,解决它的过程非常曲折,一度让我怀疑人生,不过收获也很大,代码方面不明显,但感觉...

    枕边书
  • windows系统Tomcat启动过程中找不到JAVA_HOME解决方法

    在winserver上明明已经安装了JDK1.6并设置好了JAVA_HOME,可偏偏Tomcat在启动过程中找不到。

    zhangdd
  • 『中级篇』 容器之间的Link(27)

    PS:用户自定义的bridge 和 docker0 这个bridge他们之前的区别,docker0 如果通过名称想找到需要通过link,实际的项目中很少使用li...

    IT故事会
  • tomcat8 启动报错: ignoring option PermSize=256m处理方法

    Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=512m; suppor...

    zhangdd
  • tomcat安全加固

    1. 升级到最新稳定版,这个是老生常谈了。目前Tomcat支持6.0和7.0两个版本。

    zhangdd

扫码关注云+社区

领取腾讯云代金券