首页 > 代码库 > Service Fabric Failover Manager

Service Fabric Failover Manager

作者:潘罡 (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内部如何工作。

详细步骤:

  1. 增加Service命令到达FM
  2. FM向Service 缓存添加Service信息
  3. FM向Failover Unit 缓存添加Failover Unit
  4. FM更新PLB
  5. PLB 向FM返回新的Placement
  6. FM返回增加Service命令执行结果
  7. FM向Failover Unit 缓存创建Replica信息
  8. FM通知RA向Node中添加Replica

其他信息

因为FM的特性以及存储的信息,以下PS命令是在FM中执行的。

Get-ServiceFabricNode
Get-ServiceFabricService
Get-ServiceFabricPartition
Get-ServiceFabricReplica

Service Fabric Failover Manager