upstream balance1{ server 47.104.61.1;#tomcat1所在地址 server 47.104.61.2;#tomcat2所在地址 }
对做事器的要求会按顺序分配到47.104.61.1和47.104.61.2。
这种办法下,如果47.104.61.1挂掉了,没事,47.104.61.2还能供应做事。这个nginx能自动检测出。所谓的双机热备,这便是很好的实现办法。以是对应的架构可为:
权重
上面架构在一些公司就涌现问题了,由于历史缘故原由,tomcat1所在做事器性能强大,tomcat2所在做事器性能比较垃圾(内存低、带宽低、相应慢),这样tomcat1实在性能都没发挥出来,tomcat2都快要累去世了。

这时候也不焦急,配置下轮询权重便是了,如下所示,80%的要求由tomcat1处理,20%tomcat2处理,完美。
upstream balance1{ server 47.104.61.1 weight:8;#tomcat1所在地址 server 47.104.61.2 weight:2;#tomcat2所在地址 }哈希
上面的架构还是有问题啊,如果是须要用户登录之后反复操作的系统,例如商城。
如果用户是在tomat1登录的,然后系统用session保存了登任命户的信息。
结果用户第二个要求发送到了tomcat2,此时悲剧了,tomcat2认为用户没登录。
没紧要,nginx已经考了到了这种情形,直策应用哈希策略,此时nginx会自动识别访问者的ip,然后通过哈希算法分配一个固定的做事器给该访问者,以是对同一个用户来说,每次访问都是由一个做事器相应了。
配置如下:
upstream balance1{ ip_hash;#如此大略的配置就能产生重大浸染 server 47.104.61.1 weight:8;#tomcat1所在地址 server 47.104.61.2 weight:2;#tomcat2所在地址 }后端无状态下负载均衡策略的利用
现在都讲究后端无状态,啥是无状态,大略理解便是后端没有session,用户的要求也不用每次都固定到后端一个做事器上。
那如何来识别用户是否登录呢。
此处举个大略的例子,假设咱们的系统是用户商城。
用户登录成功后,咱们天生一个UUID与用户编号一起存到数据库中,标志着会话开始。
用户在前端拿到UUID后,后续每次要求都携带UUID到达后端。
后端通过拦截器,看看UUID是否合法(数据库中存在且不超时),不合法的要求不相应即可。
当然在现实程序中,这种频繁访问数据的场景放到数据库中速率太慢,对数据库拖累严重。
以是可以放到缓存数据库如redis中,这样速率就大大加快了。
此时负载均衡策略的制订就很自由了,由于nginx重启非常迅速,后端接口又没有状态,我们可以通过监控看各个做事器的负载情形,然后动态的调度权重即可。
当所有做事器都不堪忍受的时候,加做事器,然后重新配置nginx即可,完备不会影响业务正常运作。
作者:慕课熊猫
链接:https://www.imooc.com/article/276175
来源:慕课网