首页科技 › 亚洲城手机客户端Windows 2013 系统搭建高可用故障转移集群

亚洲城手机客户端Windows 2013 系统搭建高可用故障转移集群

原标题:去哪儿系统高可用之法:搭建故障演练平台

Windows 2012 系统搭建高可用故障转移集群

作者介绍

一、故障转移集群介绍 2

王鹏,2017年加入去哪儿机票事业部,主要从事后端研发工作,目前在机票事业部负责行程单和故障演练平台以及公共服务ES、数据同步中间件等相关的研发工作。

1.1 系统介绍 2

去哪儿网2005年成立至今,随着系统规模的逐步扩大,已经有成百上千个应用系统,这些系统之间的耦合度和链路的复杂度不断加强,对于我们构建分布式高可用的系统架构具有极大挑战。我们需要一个平台在运行期自动注入故障,检验故障预案是否起效——故障演练平台。

1.2 工作原理 2

一、背景

二、实验目的 2

这是某事业部的系统拓扑图:

2.1 验证故障转移功能 2

亚洲城手机客户端 1

2.2 验证高可用集群的可用性,以及支持的服务类型 2

系统之间的依赖非常复杂、调用链路很深、服务之间没有分层。在这种复杂的依赖下,系统发生了几起故障:

三、实验原理 3

  • 弱依赖挂掉,主流程挂掉,修改报销凭证的支付状态,下单主流程失败;
  • 核心服务调用量陡增,某服务超时引起相关联的所有服务“雪崩”;
  • 机房网络或者某些机器挂掉,不能提供核心服务。

3.1 实验拓扑 3

三个故障原因:

3.2 实验环境设备 3

  • 系统强弱依赖混乱、弱依赖无降级;
  • 系统流量陡增,系统容量不足,没有限流熔断机制;
  • 硬件资源网络出现问题影响系统运行,没有高可用的网络架构。

四、配置步骤 4

各种各样的问题,在这种复杂的依赖结构下被放大,一个依赖30个SOA服务的系统,每个服务99.99%可用。99.99%的30次方≈99.7%。0.3%意味着一亿次请求会有3,000,00次失败,换算成时间大约每月有2个小时服务不稳定。随着服务依赖数量的变多,服务不稳定的概率会呈指数性提高,这些问题最后都会转化为故障表现出来。

4.1 配置域服务器 4

二、系统高可用的方法论

4.2  iSCSI 虚拟存储配置 18

如何构建一个高可用的系统呢?首先要分析一下不可用的因素都有哪些:

4.3 配置故障转移集群服务 45

亚洲城手机客户端 2

4.4  验证集群 63

高可用系统典型实践

五、实验结果验证 68

理论上来说,当图中所有的事情都做完,我们就可以认为系统是一个真正的高可用系统。但真是这样吗?

5.1  验证故障转移 68

那么故障演练平台就隆重登场了。当上述的高可用实践都做完,利用故障演练平台做一次真正的故障演练,在系统运行期动态地注入一些故障,从而来验证下系统是否按照故障预案去执行相应的降级或者熔断策略。

5.2 高可用集群的验证 69

三、故障演练平台

 

故障演练平台:检验故障预案是否真正的起作用的平台。

 

故障类型:主要包括运行期异常、超时等等。通过对系统某些服务动态地注入运行期异常来达到模拟故障的目的,系统按照预案执行相应的策略验证系统是否是真正的高可用。

 

1、故障演练平台的整体架构

一、故障转移集群介绍

故障演练平台架构主要分为四部分:

1.1 系统介绍

亚洲城手机客户端 3

    故障转移群集是针对具有长期运行的内存中状态或具有大型的、频繁更新的数据状态的应用程序而设计。这些应用程序称为状态应用程序,并且它们包括数据库应用程序和消息应用程序。故障转移群集的典型使用包括文件服务器、打印服务器、数据库服务器和消息服务器。

  • 前台展示系统(WEB):展示系统之间的拓扑关系以及每个AppCode对应的集群和方法,可以选择具体的方法进行故障的注入和解除;
  • 发布系统(Deploy):这个系统主要用于将故障演练平台的Agent和Binder包发布到目标APP的机器上并且启动执行。前台展示系统会传递给发布平台要进行故障注入的AppCode以及目标APP的IP地址,通过这两个参数发布系统可以找到相应的机器进行Jar包的下载和启动;
  • 服务和命令分发系统(Server):这个系统主要是用于命令的分发、注入故障的状态记录、故障注入和解除操作的逻辑、权限校验以及相关的Agent的返回信息接收功能。前台页面已经接入QSSO会对当前人可以操作的IP列表做故障注入,防范风险。后端命令分发的模块会和部署在目标APP上的Agent进行通信,将命令推送到Agent上执行字节码编织,Agent执行命令后返回的内容通过Server和Agent的长连接传回Server端;
  • Agent和Binder程序:Agent负责对目标APP做代理并且做字节码增强,具体代理的方法可以通过传输的命令来控制,代理方法后对方法做动态的字节码增强,这种字节码增强具有无侵入、实时生效、动态可插拔的特点。Binder程序主要是通过发布系统传递过来的AppCode和启动端口(ServerPort)找到目标APP的JVM进程,之后执行动态绑定,完成运行期代码增强的功能。

1.2 工作原理

2、 Agent整体架构

    故障转移群集是基于域的管理模式部署, 以 “心跳机制” 来监视各个节点的健康状况;如果在群集中的一台服务器发生了故障,则群集中的其它服务器会立刻接手并继续运行。而这些服务器是通过心跳网络来进行相互检测的,当服务器发生故障时,其他的服务器就会检测不到故障服务器的心跳信号,此时就会认为此服务器发生故障,并立刻接手并继续运行。

目前AOP的实现有两种方式:

二、实验目的

  • 静态编织:静态编织发生在字节码生成时根据一定框架的规则提前将AOP字节码插入到目标类和方法中;
  • 动态编织:在JVM运行期对指定的方法完成AOP字节码增强。常见的方法大多数采用重命名原有方法,再新建一个同名方法做代理的工作模式来完成。

2.1 验证故障转移功能

静态编织的问题是如果想改变字节码必须重启,这给开发和测试过程造成了很大的不便。动态的方式虽然可以在运行期注入字节码实现动态增强,但没有统一的API很容易操作错误。基于此,我们采用动态编织的方式、规范的API来规范字节码的生成——Agent组件。

    学习搭建Windows故障转移集群,测试Windows高可用集群与高可用集群进行对比。

Agent组件:通过JDK所提供的Instrumentation-API实现了利用HotSwap技术在不重启JVM的情况下实现对任意方法的增强,无论我们是做故障演练、调用链追踪(QTrace)、流量录制平台(Ares)以及动态增加日志输出BTrace,都需要一个具有无侵入、实时生效、动态可插拔的字节码增强组件。

2.2 验证高可用集群的可用性,以及支持的服务类型

Agent的事件模型

    在故障转移集群的基础上搭建常用基础服务器(DTC、SQL、文件共享集群、Hyper-v),来测试架构的可行性。

如图所示,事件模型主要可分为三类事件:

三、实验原理

亚洲城手机客户端 4

3.1 实验拓扑

BEFORE在方法执行前事件、THROWS抛出异常事件、RETURN返回事件。这三类事件可以在方法执行前、返回和抛出异常这三种情况做字节码编织。

亚洲城手机客户端 5

如下代码:

 

// BEFORE

3.2 实验环境设备

try {

序号

设备名称

IP规划

用途

1

iSCSI存储服务器

172.16.200.73

共享存储虚拟磁盘

2

域服务器

172.16.200.70

wangzx-noc.com域服务器

3

MSHV-1服务器

172.16.200.71

节点服务器1:  MSHV-1

4

MSHV-2服务器

172.16.200.71

节点服务器2:  MSHV-2

5

集群

172.16.200.75

集群虚IP

/*

3.3 实验检测方式

* do something...

搭建分布式事务协调器,和hyper-v验证高可用服务的可用性。

*/

验证方式:

foo();

1. 服务器宕机测试

// RETURN

2. 物理网卡中断

return;

3. 故障转移集群服务停止

} catch (Throwable e) {

 

// THROWS

 

}

 

事件模型可以完成三个功能:

四、配置步骤

  • 在方法体执行之前直接返回自定义结果对象,原有方法代码将不会被执行;
  • 在方法体返回之前重新构造新的结果对象,甚至可以改变为抛出异常;
  • 在方法体抛出异常之后重新抛出新的异常,甚至可以改变为正常返回。

4.1 配置域服务器

Agent如何防止“类污染”

1、打开服务器管理器,点击添加角色

在开发Agent的时候,第一个应用是故障演练平台,那么这个时候其实我们并不需要Agent执行的过程中有自定义结果对象的返回,所以第一个版本的Agent采用硬编码的方式进行动态织入:

亚洲城手机客户端 6

亚洲城手机客户端 7

 

故障类加载模型

 

首先介绍下几个类加载器:

亚洲城手机客户端 8

  • BootstrapClassLoader引导类加载器加载的是JVM自身需要的类,这个类加载使用C++语言实现的,是虚拟机自身的一部分;
  • ExtClassLoader它负责加载<JAVA_HOME>/lib/ext目录下或者由系统变量-Djava.ext.dir指定位路径中的类库;
  • AppClassLoader它负责加载系统类路径java-classpath或-D
    java.class.path指定路径下的类库,也就是我们经常用到的classpath路径;
  • CommonClassLoader以及下边的都是Tomcat定义的ClassLoader。

 

Agent和相关的lib会放到AppClassLoader这一层去加载,利用Javasist做字节码的织入,所以Javasist的加载器就是AppClassLoader。

 

但是想改变的是Tomcat
WebClassLoader所加载的com.xxx.InvocationHandler这个类的Invoke方法,不同的ClassLoader之间的类是不能相互访问的,做字节码的变换并不需要这个类的实例,也不需要返回结果,所以可以通过Instrument
API拿到这个类加载器,并且可以根据类名称获取到这个类的字节码进行字节码变换。故障类Drill.class和变形后的com.xxx.InvocationHandler.class重新load到JVM中,完成了插桩操作。

亚洲城手机客户端 9

以Dubbo为例说明下如何注入故障和解除故障:

 

亚洲城手机客户端 10

 

Dubbo调用的注入过程

亚洲城手机客户端 11

  • 服务A调用服务B在Client端的Proxy层做AOP;
  • 启动Agent并且生成一个Drill类invoke方法,抛出一个运行期异常;
  • 字节码变形:在代码第一行之前增加Drill.invoke();
  • 如果想变换异常类型,改变Drill类即可,换成Sleep 3s
    ClassRedifine之后会重新load到JVM完成故障类型的转化或者清除。

 

遇到的问题

 

上边的方式貌似很完美的解决了问题,但是随着平台的使用业务线要对很多接口和方法同时进行故障演练,那么我们生成的Drill类里面就会有各种:

亚洲城手机客户端 12

if method==业务线定义方法

 

do xxx

 

而且很容易拼接出错并且难以调试,只能把生成的类输出为文件,查看自己写的字节码编译成class文件是否正确,简直太痛苦了!

亚洲城手机客户端 13

怎么解决?

 

新的架构需要解决三个问题:

 

  • 类隔离的问题:不要污染原生APP;
  • 事件的实现是可编译的;
  • 支持返回自定义的结果。

亚洲城手机客户端 14

下一版本的Agent实现就产生了,把所有Agent的类和实现的功能抽象出来,放到一个自定义的AgentClassLoader里面,字节码注入到目标APP后可以通过反射的方式来调用具体的事件实现。

 

亚洲城手机客户端 15

 

类加载模型

2、进行域服务器配置,点击运行Active Directory 域服务安装向导

  • 在BootstrapClassLoader里面注入Drill类作为通信类;
  • Agent会接受命令,根据事件类型对InvocationHandler做字节码变形,注入到目标APP;
  • 在目标APP调用的时候,调用Drill.invoke(targetJavaClass,targetJavaMethod,
    targetThis,
    args)传递过来几个参数(目标类、方法、实例、本身参数等);
  • Drill类通过反射的方式调用AppClassLoader里面的具体事件实现,比如BEFORE事件的执行代码,来完成注入后的逻辑执行。

亚洲城手机客户端 16

Agent的整体架构

 

Agent的整体架构如图所示:

安装过程基本上是默认

亚洲城手机客户端 17

亚洲城手机客户端 18

  • 支持不同的模块的加入,比如Mock、流量录制、故障演练等;
  • 支持QSSO的权限验证;
  • 支持测试和仿真环境的无成本接入;
  • 支持自动部署不需要人工介入;
  • 支持各种故障命令的发布和执行、 超时 、异常以及数据的返回;
  • 支持方法级别的编织以及代码执行流程的编织;
  • 支持在任意的Web容器执行Agent代理。

 

四、如何使用

 

使用的好处是很明显的:

亚洲城手机客户端 19

  • 零成本接入,无需申请任何资源;
  • 故障注入解除,无需重启服务;
  • 可以提供所有集群的拓扑结构。

 

但是如何才能正确使用呢?如下图所示:

 

亚洲城手机客户端 20

此处建议选择新建域

使用方法

亚洲城手机客户端 21

步骤一、输入AppCode;

 

步骤二、选择故障方法;

根级域需要自定义,这里我定义为wangzx-noc.com

步骤三、指定机器;

亚洲城手机客户端 22

步骤四、注入故障。

 

五、总结

 

故障演练平台最核心的就是Agent组件——字节码编织框架,这个框架是纯Java的基于Instrumentation-API的AOP解决方案。它可以方便研发人员对于字节码插桩拆桩操作,可以很容易的实现故障演练、流量录制以及其他的应用模块。

亚洲城手机客户端 23

作者:王鹏

 

来源:Qunar技术沙龙订阅号(ID:QunarTL)

 

dbaplus社群欢迎广大技术人员投稿,投稿邮箱:editor@dbaplus.cn返回搜狐,查看更多

亚洲城手机客户端 24

责任编辑:

 

 

亚洲城手机客户端 25

 

 

亚洲城手机客户端 26

 

 

安装文件的路径默认即可

亚洲城手机客户端 27

 

 

亚洲城手机客户端 28

 

 

 

亚洲城手机客户端 29

 

 

亚洲城手机客户端 30

 

勾选以上选项后,在安装完成后服务器将会自动重启,重启完成后使用域管理员账户登录。

3、将所有节点服务器以及存储服务器均加入此域环境。(此处已一台节点服务器为例)

右击这台电脑--->点击属性。

亚洲城手机客户端 31

 

亚洲城手机客户端 32

 

亚洲城手机客户端 33

 

亚洲城手机客户端 34

 

修改完成后需要重启生效。重启服务器后使用域管理员账户登录。

    注:添加域的节点服务器的DNS设置必须设置为域服务器的管理IP(172.16.200.70)。所以在域服务器在安装角色时记得安装DNS角色服务。

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

4.2  iSCSI 虚拟存储配置

1、打开服务器管理器,点击添加角色和功能。

亚洲城手机客户端 35

 

 

 

亚洲城手机客户端 36

 

 

 

 

 

亚洲城手机客户端 37

 

 

 

 

亚洲城手机客户端 38

 

 

 

下面需要勾选需要安装的角色。

亚洲城手机客户端 39

 

 

功能如无其他需求,直接点击下一步。

亚洲城手机客户端 40

 

 

 

下面的安装过程均默认。

亚洲城手机客户端 41

 

 

亚洲城手机客户端 42

 

亚洲城手机客户端 43

 

至此iSCS角色添加完成。

 

 

2、新建虚拟磁盘。

   点击任务找到新建iSCSI虚拟磁盘,需要创建两块虚拟磁盘,一块磁盘做为仲裁磁盘,另外一块磁盘作为共享存储磁盘。由于仲裁磁盘主要用于群集节点的仲裁,无需太大空间。共享磁盘根据需求自行设置。

亚洲城手机客户端 44

 

    

 

    新建虚拟磁盘并选择存储位置。

亚洲城手机客户端 45

 

    输入虚机磁盘名称,我这里的名称为Q

亚洲城手机客户端 46

 

 

    分配虚拟磁盘大小,根据需求进行分配。

亚洲城手机客户端 47

 

    新建iSCSI目标,也可以选择现有的iSCSI目标,我这里选择新建。

亚洲城手机客户端 48

 

 

 

    目标名称和访问

亚洲城手机客户端 49

 

    添加访问服务器

亚洲城手机客户端 50

 

 

 

    添加发起程序ID,选择IP方式进行客户端访问限制。

亚洲城手机客户端 51

 

    添加172.16.200.71、72两个IP地址作为iSCSI发起程序客户端IP地址。

亚洲城手机客户端 52

 

 

    不启用验证服务

亚洲城手机客户端 53

 

    创建信息确认

亚洲城手机客户端 54

 

亚洲城手机客户端 55

 

至此iSCSI 虚拟共享磁盘创建完成,根据以上操作再创建仲裁磁盘。

    创建完之后,在iSCSI列表中会出现对应iSCSI虚拟磁盘信息,如下:

亚洲城手机客户端 56

 

 

 

 

 

3、客户端连接iSCSI虚拟磁盘设置

   点击工具—>点击iSCIS发起程序

亚洲城手机客户端 57

 

 

    快速连接iSCSI目标,在此处输入172.16.200.73 目标IP(服务端管理IP)

亚洲城手机客户端 58

 

 

 

    

     

     

    点击快速连接后会出现iSCSI服务器已共享的虚拟磁盘,点击连接即可。

亚洲城手机客户端 59

     

 

亚洲城手机客户端 60

 

 

 

 

 

 

 

 

 

 

 

 

 

    点击发现-->发现门户,根据需求添加门户IP,我这里没有设置。

亚洲城手机客户端 61

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

亚洲城手机客户端 62

 

 

 

 

 

 

 

 

 

 

     点击确定后发现在磁盘中多出的共享磁盘

亚洲城手机客户端 63

 

     打开MPIO程序

亚洲城手机客户端 64

 

 

 

 

 

 

 

 

 

    发现多路径,添加对iSCSI设备支持

亚洲城手机客户端 65

 

 

 

 

 

 

 

 

 

 

 

 

    添加完成后需要重启iSCSI客户端服务器

亚洲城手机客户端 66

 

点击“是”立即重启设备

 

 

 

 

 

 

 

 

 

 

     客户端加载磁盘后需要初始化

亚洲城手机客户端 67

 

亚洲城手机客户端 68

 

 

 

 

 

 

 

 

 

 

 

亚洲城手机客户端 69

 

 

亚洲城手机客户端 70

 

 

 

 

亚洲城手机客户端 71

 

 

亚洲城手机客户端 72

 

 

亚洲城手机客户端 73

 

 

亚洲城手机客户端 74

 

 

 

 

亚洲城手机客户端 75

 

 

亚洲城手机客户端 76

 

 

 

 

亚洲城手机客户端 77

 

 

亚洲城手机客户端 78

 

 

 

 

亚洲城手机客户端 79

 

 

亚洲城手机客户端 80

 

 

 

 

亚洲城手机客户端 81

 

格式化完成后对磁盘进行读、写测试,这是的共享磁盘能进行读写。

 

 

3、对其MSHV-2节点进行虚拟磁盘挂载时,为了避免破坏集群磁盘,需要将MSHV-1节点关机后操作。

    对MSHV-2开机后查看磁盘管理,发现iSCSI虚拟磁盘未为脱机状态,这是只需要点击联机即可,并将磁盘盘符与MSHV-1节点分配一致,这是打开磁盘能看到,我们在MSHV-1测试读、写的文件,并能再次进行读、写测试。

     

     

     

     

     

     

     

     

     

     

     

     

     

     

 

4.3 配置故障转移集群服务

1、添加故障转移集群功能

    以MSHV-1节点为例,添加故障转移集群功能,该功能主备节点均需要做此操作。

打开:“服务器管理器”窗口,点击“添加角色和功能” ;

安装实例截图如下:

亚洲城手机客户端 82

 

 

亚洲城手机客户端 83

 

 

 

 

亚洲城手机客户端 84

 

 

亚洲城手机客户端 85

 

 

     

    功能选项中勾选“多路径I/O” 和“故障转移集群”

     

亚洲城手机客户端 86

 

 

 

亚洲城手机客户端 87

 

 

 

 

亚洲城手机客户端 88

 

 

 

亚洲城手机客户端 89

 

至此故障转移功能添加完成。

2、故障转移集群配置

   该配置只需要在两个节点中的一个进行配置即可。

   点击“工具”-->“故障转移集群管理器”

   实例配置截图如下:

亚洲城手机客户端 90

 

 

亚洲城手机客户端 91

 

 

 

   

    创建集群

亚洲城手机客户端 92

 

 

 

亚洲城手机客户端 93

 

 

 

 

    选择需要配置添加集群的服务器,这里可以手动输入服务器的FQDN,也可以通过浏览查看域中可用的服务器;

亚洲城手机客户端 94

 

 

 

亚洲城手机客户端 95

 

 

 

亚洲城手机客户端 96

 

亚洲城手机客户端 97

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

亚洲城手机客户端 98

 

 

 

    点击下一步后出现“验证告警”可以选择是否进行配置验证测试,验证当前配置是否满足集群的要求,也可以选择不验证,不过为了安全,我们还是验证一下。该处等待时间较长,需要耐心等待。

亚洲城手机客户端 99

 

 

 

 

亚洲城手机客户端 100

 

 

 

亚洲城手机客户端 101

 

 

 

 

 

 

亚洲城手机客户端 102

 

 

 

 

亚洲城手机客户端 103

 

 

 

 

 

亚洲城手机客户端 104

 

 

 

 

亚洲城手机客户端 105

 

    验证完后后查看结果,不过有的时候会出现个别错误,这时可以查看报告,检查是哪里出现问题,如果不是严重错误,也是可以继续进行群集配置的。

     

     

    验证完成后返回,这是选择不验证,继续下一步

亚洲城手机客户端 106

 

 

    输入集群名称(自定义),定义集群IP

亚洲城手机客户端 107

 

 

 

 

 

亚洲城手机客户端 108

 

 

 

亚洲城手机客户端 109

 

亚洲城手机客户端 110

 

     OK,集群创建完成。

 

 

    集群创建完成后查看状态信息

    集群信息入下:

亚洲城手机客户端 111

 

 

 

 

 

 

    磁盘信息如下:

亚洲城手机客户端 112

 

 

 

亚洲城手机客户端 113

 

 

 

4.4  验证集群

    配置完成后在对集群进行一次验证,避免配置过程中出现故障。

亚洲城手机客户端 114

 

 

亚洲城手机客户端 115

 

 

 

 

 

亚洲城手机客户端 116

 

 

 

亚洲城手机客户端 117

 

 

 

 

 

 

亚洲城手机客户端 118

 

 

 

亚洲城手机客户端 119

 

 

 

 

亚洲城手机客户端 120

 

 

 

亚洲城手机客户端 121

 

    查看验证结果无异常后,我们在配置高可用集群服务器。

 

 

 

 

 

    查看集群状态,当前的主服务器为MSHV-2

亚洲城手机客户端 122

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

五、实验结果验证

5.1  验证故障转移

    目前主服务为MSHV-2,我先在存储节点测试虚IP以及两个节点的联通性,后将主服务关机,查看虚IP的联通性。测试结果入下:

    主服务器关机前测试结果:

亚洲城手机客户端 123

 

    主服务器关机后测试结果:

亚洲城手机客户端 124

 

    查看结果显示,可以看到节点 MSHV-2 服务器已经关机,网络不通,但是故障转移集群虚拟 IP 丢了一个包后依然可以联通。说明故障转移集群已经起到了作用。此时主服务主机已变为MSHV-1

亚洲城手机客户端 125

 

5.2 高可用集群的验证

    配置一个分布式事务协调器为例,验证服务的高可用性。

    登陆到新建的集群,“角色”——>“配置角色”进行分布式事务协调器的配置;

亚洲城手机客户端 126

 

 

 

亚洲城手机客户端 127

 

 

 

 

 

 

亚洲城手机客户端 128

 

 

 

亚洲城手机客户端 129

 

 

 

 

 

 

 

亚洲城手机客户端 130

 

 

 

亚洲城手机客户端 131

 

 

 

 

 

亚洲城手机客户端 132

 

 

 

亚洲城手机客户端 133

 

至此分布式事务协调器配置完成,查看服务所云行的主节点为MSHV-2。

 

 

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    对新建的服务右击-->点击移动-->选择节点,将该服务移动到MSHV-1节点运行查看是否正常。对集群服务的高可用性进行验证。

亚洲城手机客户端 134

 

亚洲城手机客户端 135

 

亚洲城手机客户端 136

 

 

    将服务正在运行的节点关机测试是否会自动迁移。

亚洲城手机客户端 137

 

结果反馈当服务运行的主节点宕机后,服务会自动切换到另一台主机运行。

OK,大功告成!!!

该程序也客户安装其他服务。(例如Hyper-V、SQL-server)

 

 

转载本站文章请注明出处:亚洲城手机客户端登录 https://www.little-lily.com/?p=3060

上一篇:

下一篇:

相关文章