计算高可用目标还是在硬件损坏时,计算任务能继续运行,所以本质上还是通过冗余来避免部分故障,毕竟你想一台服务器就能达到计算高可用,从物理层面来讲是基本不可能的
关键点
- 哪些服务器可以执行任务
- 类似集群,集群机都执行任务
- 主备:备机不能执行任务
- 任务如何重新执行
- 第一种是不做任何处理,只需要保证新的任务能分配到非故障机即可
- 第二种是设计一个任务管理器来管理需要执行的任务,当任务完成后,执行机器需要反馈任务执行情况,任务管理器决定是否需要将任务重新分配
1 主备
是计算高可用中最简单的架构,和存储高可用的主备复制架构类似,但是更简单,毕竟只用来计算不需要备份和复制数据,复杂度大大下降
计算高可用的主备模式适用于后台管理系统,这种使用人数不多的场景,不太适合在线业务
步骤
- 主机执行所有计算任务
- 主机故障时,任务分配器不会自动将计算任务发送给备机,系统此时是不可用的
- 主机如果能恢复,就继续使用,不能就人工操作,将备机升级为主机,再增加一个备机
通常主备的结构分为两种:冷备和温备
- 冷备就是,配置好了,可以随时启动,且将任务分配其的任务发送方指定为这个启动的备机
- 温备则是,已经启动了,只是不对外提供服务,需要人工来切换
冷备通常可以节省一定的能源,温备则能减少手工操作时间,推荐温备用
优点
- 主备之间不需要交互,状态判断,并且倒换操作由人工操作
- 操作简单
缺点 - 如果员工没有发现服务异常,那么可能耽误的时间会更久,且手工置换可能也会出错
2 主从
同样类似存储高可用的主从复制架构,任务分配器需要将任务进行分类,决定哪些任务给主机哪些给从机
步骤
- 正常情况,主机执行部分计算任务,备机执行部分计算任务
- 当主机故障时,任务分配器不会自动降级发给从机,而是继续给主机,无论是否执行成功
- 主机能恢复,则规则不变,不能恢复泽人工操作,从机升级,增加新从机
优点
- 从机也执行任务,没有浪费资源
缺点 - 任务需要根据任务类型分发,任务分配器的规则会比较复杂
3 对称集群
主备主从架构,是冗余服务器来到达高可用,并且需要人工主动切换(效率低,出错高,不及时)高可用集群方案可以通过系统自动完成切换操作
- 高可用中的对称集群是指集群中的每个节点都是相同性质,角色相同,都可以执行任务
- 对称集群通常叫做负载均衡集群
步骤
- 任务分配器采取某种负载均衡策略将计算任务分配给集群中的不同节点
- 某个节点故障后,任务服务器则不会将任务继续分配给它
- 节点恢复后,则会继续分发任务
注意
- 轮询策略很简单,但是复杂度在于状态检测,节点的状态(网络状态,服务器状态,任务执行时间是否过长)
- 状态检测一般是任务分配器和节点通过心跳包来传递信息来判断状态
- 不同的业务要求有不同的状态判断条件
4 非对称集群
每个节点都有自己的角色,每个角色有不同的任务且承担不同的职测,以Master-Slave为例
步骤
- 集群会通过某个方式区分不同节点角色(Paxos选举算法,简单取所有节点中id最小的作为Master)
- 任务分配器将不同任务发给不同角色节点,计算任务A发给Master,任务B发给其他Slave
- 当某种角色的节点故障时,需要重新分配一个节点这个角色,比如Master宕掉后需要重新选举/指定一个Master,Slave如果没有强制需求可以直接剔除这个故障节点即可(没必要),恢复后重新加入集群
复杂度
- 任务分配更加复杂,需要将任务分类后分发给不同角色的节点
- 角色分配策略复杂,需要Paxos这种算法来选举Leader