作者:潘罡 (Van Pan)@ Microsoft
什么是Failover Manager
我们回到Service Fabric系统架构图。
Failover Manager是Reliability Subsystem其中的一部分核心组件。它被设计为SF的一个Service。你可以在Service Fabric Explorer中看到这个服务。
它主要负责以下功能:
- 维护全局可用的Node及Service视图
- 和Placement and Load Balancer (PLB) 以及 Reconfiguration Agent (RA)紧密工作。(PLB会在后续章节进行介绍。RA在上一节CM中有过介绍,主要负责在Node中应用配置变动)
- 创建Failover Units以及Replicas
- 如果发生故障,负责Failover Replicas。(比如选举Replica成为Primer)
- 管理SF 升级
- 管理Node失效
- 如果发生灾难,负责重建系统状态
Failover Manager由以下部分组成
- Global Failover Unit Map (GFUM)
- Node 缓存
- Service 缓存
- Failover Unit 缓存
- 内建Failover Unit 缓存
- State Machine
- State 升级
- 重新配置
- Placement
- Replica 移动
GFUM介绍
Node 缓存
Node缓存维护了所有Node的以下信息
- Node Id
- Node Name
- Upgrade Domain
- Capacity
- 失效/激活状态
Servic缓存
Service 缓存维护了以下信息
- Service 列表
- Service Type 列表
- Application 列表
- Application 当前升级状态
Failover Unit缓存
Failover Unit 缓存维护了以下信息
- Failover Unit以及Replica列表
- Service查找表
工作流程举例
我们用创建一个Service的例子,以下SF部件将协同工作。
Client –> Gateway –> CM –> Naming Service –> FM –> RA
在上一节中,我们已经介绍了CM和Naming Service之间是如何工作的,下面我们详细介绍FM内部如何工作。
详细步骤:
- 增加Service命令到达FM
- FM向Service 缓存添加Service信息
- FM向Failover Unit 缓存添加Failover Unit
- FM更新PLB
- PLB 向FM返回新的Placement
- FM返回增加Service命令执行结果
- FM向Failover Unit 缓存创建Replica信息
- FM通知RA向Node中添加Replica
其他信息
因为FM的特性以及存储的信息,以下PS命令是在FM中执行的。
Get-ServiceFabricNode
Get-ServiceFabricService
Get-ServiceFabricPartition
Get-ServiceFabricReplica