请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

LVS负载问题,为什么前端的keepalived都只代理当前实例的nginx?

https://img1.sycdn.imooc.com//szimg/5b2671130001f08108340362.jpg

其实在看部署的时候一直有这个疑问,keepalived可以实现高可用,lvs本身支持各种调度算法,为什么不把多个实例都代理上而只代理当前实例,如果是这样的话,那谁抢占到master谁就要扛所有入口压力了?

还有一个就是,我登录后,用不同的前端实例地址刷新页面好像不会丢失登录信息,这个是跟jwt有关系么?也就是如果Lvs代理多个realserver需不需要考虑会话保持问题?

感谢老师!!!

正在回答

1回答

神思者 2018-06-17 22:59:49

同学你好,首先lvs的性能远超nginx和haproxy,但要先明确它是不支持虚拟机安装,只能部署在真实主机上面。另外你提到的所有负载均衡都配置到一个LVS上面,这个其实犯了大忌,因为配置文件内容很多很杂,比如想修改后端的负载均衡,就必须重启lvs,你想想看,是不是前端的负载均衡连带着也瞬间不能用了,所以负载均衡要采用分散的配置,头疼医头,脚疼医脚,这是最好的。最后回答你抢占了虚拟IP的服务器要承载所有的流量能不能行,Nginx最大的负载均衡是每秒8万。比如一个每天500万pv的大中型网站来说,每秒也就是116个请求,你说nginx每秒8万的性能可不可以满足呢?

0 回复 有任何疑惑可以回复我~
  • 提问者 KeithTt #1
    我可能没有表达清楚。。
    1、先不说性能问题,您配置的keepalived用到了lvs,而且用的是NAT模式,您看看是不是,可能是我理解的不对。。您说的不支持指的应该是DR模式吧?既然都用到了LVS代理,比如代理ff1和ff2,为什么后端realserver不把两个ff节点都写上,而只代理一个,我是指单从配置上来说,能够配两个为什么只配一个。
    
    2、keepalived支持reload,修改配置不用重启,也不会中断,而且Keepalived有两个节点,即便down了一个也没问题。而且,keepalived支持include指令,即便配置很多也是可以拆分的。
    
    3、会话问题,我是看到通过不同的前端节点访问都不会丢失会话,想确认一下这个会话是在哪保持的?
    回复 有任何疑惑可以回复我~ 2018-06-18 00:04:52
  • 同学你好。先说第一个问题,如果按照你说的用LVS去做ff1和ff2的负载均衡,那么单节点的lvs高可用怎么提现?是不是还要去做lvs的双机热备。第二个问题理解错了,我以为你要把前后端所有配置都写到lvs上面。
    回复 有任何疑惑可以回复我~ 2018-06-18 00:26:00
  • 神思者 回复 提问者 KeithTt #3
    还有第三个问题,jwt是为了实现后台无状态而设计的认证技术。以前后台是单体项目的时候,用户登录信息可以保存到session里面。后来变成了负载均衡,请求分发到不同的tomcat上,会出现丢失session的问题,所以有人就想出了一个解决办法,把tomcat的session保存到redis里面。过了一阶段发现还有问题,如果后台项目都是用java做的,没问题,但是如果是用nodejs、python做后台,它门用不了java的session对象。最后就演变成jwt,认证信息保存到前端,后台不保存,每次请求都把认证信息发到后台执行校验,即便有负载均衡也不怕,任何后台项目都能校验认证信息。
    回复 有任何疑惑可以回复我~ 2018-06-18 00:28:38
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信