nginx笔记4-负载均衡带来的问题以及解决办法

Posted 妮蔻

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx笔记4-负载均衡带来的问题以及解决办法相关的知识,希望对你有一定的参考价值。

接着笔记3,将笔记三的改造一下,现在分别启动两个Tomcat,在页面获取session。如图所示:

tomcat2的session:

tomcat1的session:

 

 根据上图发现,每个tomcat取到的session不一样。因此nginx负载均衡带来的问题就是session不一致,假设用户登陆后请求分发到Tomcat1,下一次请求到tomcat2的话,

那么每一次请求都会要求用户登陆。这必然不行的。

解决session共享问题办法有:

1.应用服务器(即Tomcat)之间进行session同步。通过配置tomcat的server.xml文件中配置相应的端口和地址等等。但是缺点是:应用服务器本身能力有限,再来个session共享的话,会带来很大的网络开销,

因此这种方式基本不用。

2.通过前面的笔记三的负载均衡算法中的源地址哈希算法。通过这个算法,只要IP不变化,请求永远定位到同一台应用服务器。修改nginx.conf文件,配置负载均衡的算法为源地址哈希,如下图所示:

 

 配置好后,我们再重新刷新浏览器,看一下,请求分发是否还发生变化,如下图:

正如上图所示,无论怎么刷新,请求的都是用一个应用服务器。

这样做就不存在session问题了。虽然解决的session问题,但是不容灾了。因为如果定位到的那台应用服务器挂了,那么用户是无法访问的。

某些中小型的系统可以使用。但是优缺点。

 

3.通过session外置集中管理。session外置集中管理用的最多的就是NoSQL数据库redis.举个例子,比如用用户账号和登陆系统的时间搓弄成一个token来模拟session。设置一定的过期时间。每次

请求分发到应用服务器的时候,从redis从取token校验即可。这样就解决的session共享问题。

以上是关于nginx笔记4-负载均衡带来的问题以及解决办法的主要内容,如果未能解决你的问题,请参考以下文章

Nginx学习笔记06负载均衡之负载均衡介绍

客户端负载均衡Ribbon之二:Loadbalance的几种算法以及在ribbon中的使用

四层负载均衡技术

链路负载均衡笔记

nginx反向代理服务器以及负载均衡,从安装到配置

企业运维实战--k8s学习笔记 通过Ingress-nginx实现k8s七层负载均衡Ingress加密认证以及地址重写