负载均衡:解决整个服务的可用性

水平扩展:成本最低
基于水平扩展的算法(X轴):Round-Robin算法,least-connected算法
但是并不能解决所有问题,比如数据量的问题,当单台应用上的数据已经非常大的时候,无论如何扩展,每一台服务的数据仍然非常大。此时,应该通过另外两种解决方案:从Y轴和Z轴上进行解决
Y轴:(基于URL对功能进行分发)原先由一台服务处理的功能,现在由两台或多台进行处理(需要更改代码,做大量重构,成本高),能解决数据上升问题
Z轴:将用户IP地址或其他信息映射到某个特定的服务或者集群
三个配合使用
加权Round-Robin负载均衡算法(哈希算法,一次性哈希算法,在某种情况下都会退化成Round-Robin)
缺点:无法保证某一类请求只能由一台服务器去处理
功能:在加权轮询的方式访问server指令指定的上游服务,集成在nginx的upstream框架中
指令:
(1)weight:服务访问权重,默认1
(2)max_conns:server的最大并发连接数,仅用作单worker进程。默认是0,表示没有限制
(3)max_fails:在fail_timeou时间段内,最大的失败次数。当达到最大失败时,会在fail_timeout秒内这台server不允许再次被选择
(4)fail_timeout:单位为秒,默认值为10秒。指定一段时间内,最大的失败次数max_fails。到达max_fails后,该server不能被访问的时间
1.upstream指令
语法:upstream name{......} (name:交由反向代理模块使用。大括号中就是下面的server)
默认:空
放置位置:http
2.server指令
语法:server address[parameters](每个server就是一台服务器,参数用来控制负载均衡的行为。address可以是域名,ip地址或者unix socket。可以在后面加端口,不加默认80)(两个通用参数:backup:指定当前server为备份服务,仅当非备份server不可用时,请求才会转发到该server。down:标识某台服务已经下线)
默认:空
放置位置:upstream
2619

被折叠的 条评论
为什么被折叠?



