知识卡片

负载均衡集群:任务分配策略与状态检测两个设计关键点

普通读书笔记卡

内容

主备和[[计算高可用主从架构:从机真正执行任务,但任务分配更复杂]]都要靠人工完成切换,效率低、容易出错、无法及时处理故障,可用性要求更严格的场景就需要系统自动完成切换——这就是高可用集群方案。计算高可用集群按角色是否相同分两类,本卡先看对称集群,更通俗的叫法是”负载均衡集群”:正常情况下任务分配器按某种策略(随机、轮询等)把任务分给集群里不同的服务器;某台服务器故障后任务分配器就不再往它那分任务,转发给其他健康服务器;故障服务器恢复后,任务分配器重新把它纳入分配范围。负载均衡集群的设计关键有两点:一是任务分配策略,这块相对简单,轮询和随机基本够用;二是状态检测,这块要复杂一些——既要检测服务器本身的状态(是否宕机、网络是否正常),也要检测任务的执行状态(是否卡死、执行时间是否过长),常见做法是任务分配器和服务器之间靠心跳传递服务器信息和任务信息,再据此设定状态判断条件。这个判断条件必须结合具体业务定制,没有通用标准:比如一个在线页面访问系统,正常响应时间是500毫秒以内,状态判断条件可以设为”1分钟内响应超过1秒(含超时)的页面数量占比达到80%就判定服务器故障”;一个后台统计任务系统,正常任务5分钟内完成,判断条件可以设为”单个任务执行超过10分钟还没结束就判定服务器故障”——这两个例子说明不同业务场景的判断条件差异很大,必须按实际业务需求去设计和调优,套用别的系统的阈值往往是不合适的。计算高可用集群和存储高可用集群有个明显不同:存储高可用把”双机架构”和”集群架构”分开讨论,而计算高可用集群里2台服务器的集群和多台服务器的集群在设计上没有本质区别,因此不需要专门区分。

参考来源

- 位置:《从零开始学架构》第27讲《如何设计计算高可用架构?》"集群"之"对称集群"(源文件:_epub-src/OEBPS/text00002.html) - 结论依据:原文说明"负载均衡集群的设计关键点在于两点:任务分配器需要选取分配策略……任务分配器需要检测服务器状态……常用的做法是任务分配器和服务器之间通过心跳来传递信息",并给出在线页面系统与后台统计任务系统两个不同状态判断条件的具体示例,说明"不同业务场景的状态判断条件差异很大,实际设计时要根据业务需求来进行设计和调优",直接支撑本卡片结论。 - 原始内容:负载均衡集群的设计关键点在于两点:任务分配器需要选取分配策略……任务分配器需要检测服务器状态……1 分钟内响应时间超过 1 秒(包括超时)的页面数量占了 80% 时,就认为服务器有故障……不同业务场景的状态判断条件差异很大,实际设计时要根据业务需求来进行设计和调优。