作者:潘罡 (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的更多相关文章

  1. Service Fabric Cluster Manager

    作者:潘罡 (Van Pan)@ Microsoft 我们回到Service Fabric最底层的话题,谈谈Service Fabric是怎么工作的. 首先,我们回到下面的文档,看看Service F ...

  2. Service Fabric SfDevCluster目录从默认的C盘移动

    管理员权限打开Powershell CD\ 回车 CD "C:\Program Files\Microsoft SDKs\Service Fabric\ClusterSetup" ...

  3. 拥抱Service Fabric —— 目录

    理解分布式 经典分布式系统设计 云时代分布式系统演进 Service Fabric基础概念 Node, Application, Service, Partition/Replicas Partiti ...

  4. Service Fabric Placement and Load Balancing

    作者:潘罡 (Van Pan)@ Microsoft 什么是PLB (Placement and Load Balancing) 介绍FM的上文中,我们提到了PLB. 这个组件和FM协同工作,为FM提 ...

  5. service fabric docker 安装

    1. 镜像拉取 docker pull microsoft/service-fabric-onebox 2. 配置docker(daemon.json) { "ipv6": tru ...

  6. Service Fabric 群集在Service Replica过多的情况下报错问题

    首先 Service Fabric 群集是正常的,部署一些服务过后也能正常运行,但一旦部署的服务过多后,且每个服务不止一个Partition,就有可能让群集状态为Error,但其实服务还是在正常运行的 ...

  7. ServiceFabric极简文档-1.1 附属文件:规划和准备 Service Fabric 独立群集部署

    准备好要充当节点的计算机 下面是要添加到群集的每台计算机的建议规格: 至少 16 GB RAM 至少 40 GB 可用磁盘空间 4 核或更高规格的 CPU 所有计算机与安全网络连接 Windows S ...

  8. 【Azure 微服务】Service Fabric, 使用ARM Template方式来更新SF集群的证书(Renew SF Certificate)

    问题描述 因证书过期导致Service Fabric集群挂掉(升级无法完成,节点不可用)一文中,描述了因为证书过期而导致了SF集群不可用,并且通过命令dd-AzServiceFabricCluster ...

  9. Azure Service Fabric 开发环境搭建

    微服务体系结构是一种将服务器应用程序构建为一组小型服务的方法,每个服务都按自己的进程运行,并通过 HTTP 和 WebSocket 等协议相互通信.每个微服务都在特定的界定上下文(每服务)中实现特定的 ...

随机推荐

  1. css 文字展示两行 其余的省略号显示

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  2. DataRow对象的RowState和DataRowVersion属性特点

    DataRow对象有两个比较重要的属性,分别是行状态(RowState)和行版本(DataRowVersion),通过这两个属性能够有效的管理表中的行.下面简要的介绍一下行状态和行版本的特点和关系. ...

  3. 互评Beta版本 - Hello World团队项目空天猎

    由于改组项目未提供可以直接进行安装运行的安装包或可执行文件,所以我找到了该组组长陈同学,由他根据其小组项目的功能说明书进行演示. 基于NABCD评论作品,及改进建议 每个小组评论其他小组beta发布的 ...

  4. HTML和CSS <h1> --3-- <h1>

    标签语义化,让网页更好的被搜索引擎理解 标签的用途:我们学习网页制作时,常常会听到一个词,语义化.那么什么叫做语义化呢,说的通俗点就是:明白每个标签的用途(在什么情况下使用此标签合理)比如,网页上的文 ...

  5. 网页访问过程(基于CDN)

    1. 全局负载均衡(基于DNS) 如果有多台 WEB 服务器同时为一个域名提供服务时,即一条 URL 对应多个 IP 地址,那么该 URL 的权威域名服务器可能会根据该 URL 解析出多个 IP 地址 ...

  6. 累计进度条 PSP 饼图

    累计进度条   PSP   饼图 每周例行报告 本周PSP 类别 任务 开始时间 结束时间 被打断时间 总计工作时间 2016年9月24日 读书 构建之法-6.7章 19:00 20:00 2 58m ...

  7. 服务 在初始化安装时发生异常:System.IO.FileNotFoundException: 未能加载文件或******

    这个问题是在用installutil.exe安装服务时候碰到的 解决方法就是把installutil.exe文件直接复制到要安装的目录下 installutil.exe的所在位置 windows/mi ...

  8. python基础(五)函数

    一.函数概念 函数一词来源于数学,但编程中的「函数」概念,与数学中的函数是有很大不同的,编程中的函数在英文中也有很多不同的叫法.在BASIC中叫做subroutine(子过程或子程序),在Pascal ...

  9. error_reporting 报错

    <?php // 关闭所有PHP错误报告 error_reporting(0); // 报告简单的运行错误 error_reporting(E_ERROR | E_WARNING | E_PAR ...

  10. windows结束端口对应的进程

    netstat -ano |findstr " //window查看端口占用 taskkill /pid 54828taskkill /F /pid 54828 //强制中止 转载请注明博客 ...