00:00
好,上午我们所讲的那个高可用啊,都是通过手动的方式,而且来回切,而且中间还有一个很重要的,有一个问题吧,就是说两个那弄的其中假如说有一个挂了的话,另外一个是切不过去的啊,这个问题就很大啊,这个是很影响我们那个用户体验的啊,假如就像我们所说的那台机器真的就再也起不来了,他机器坏了烧了怎么办呢?那这个高可用其实是不可靠的,对吧,不可靠,那我们在公司当中开发当中啊,肯定是用这种自动的,自动的。那既然自动的,就像我们当时说的这种手动一样,它这样的,这是n na1,这是N2,然后中间这个是JN,现在我们不用写什么NFS了,是吧,中间一个文件系统,我们知道它就是GN,真正用的当然有三个,因为最少三个官网上写的啊,然后它是活着的,就是active往这里边写,然后一个自己去读啊,自己去读,这是正常的一个过程。
01:07
手动的话,你就去手动去起一下把谁这回active就行了,那既然要它自动。他肯定有人监控,就是这个挂了有人知道吧,对吧,他要自动的,而且不仅有一个人要知道,假如说这里面有个第三方,他要知道,他不仅能监控他的状态,他还要能干什么。将它转化为active对吧。他同时要具备这两个功能。好,这是我们假设N1是active,假设N2是active呢,那这个第三方它还有一个什么功能。反向的吧,是不是这个反向懂什么意思,就监控他的一个健康状态,以及能启动他。对吧,也就是说这第三方啊,他肯定要监控,那我们就统一说一下,就是监控弄的的一个监控状态。
02:06
以及可以转换他们一个active stand bed,这个功能它是要有的,对吧,必须要有这两个功能。啊,然后这个第三方工具呢,其实大家也都知道,因为我们讲的这个高本用一定要在keepable之后才能讲,对吧?哎,第三方工具肯定是u keepable,而且足K,它本身就是管理什况共有的数据吧,啊共享的一些小数据,而且它是各个集群之间,它是相当于一个催化剂的作用,是不是润化剂啊,充当了这么一个角色,所以说我们这个地方第三方啊,它是一个u cable,它存的数据呢,就是他谁是active或者说。谁是standby,这种信息由他来决定的。它来决定的,那具体是怎么决定的呢?我们往下看这一块是它这个文字描述,文字描述啊,我们先看图啊,先看图正常的,我到时候调一下,我把文字描述应该放到图下面,看图更好理解一点是吧。
03:09
OK,这边是我们配的两个,那也就是我们机群当中的哈杜102跟103,这没问题吧,啊两个好。它们当中的一个原数据是一模一样的啊,因为中间有个真正做的啊,Active呢实时的往里写,然后stand半呢实时的往外读,所以它们中间的原数据信息是完全一样的,完全一样的是通过这个真录的来的吧,真录的他往里写,他往外读啊,这是我们正常的集群工作当中的一个。啊,非常正常的一个情况,你无论是手动挡还是自动挡,它正常的工作流程当中,这个步骤都是一样的吧,对吧?哎,这个步骤是一样的,只不过说它集群的挂掉,就说某一台节点它挂掉以后,它这个处理方式,哎两种方式是不一样的,一个手动,一个自动,现在我们要讲的就是自动这种方式是怎么实现的,OK,往下走。
04:10
这里边我们提到了啊,一定要有这个K客户端,它保存的信息是不是就是哪个是active stand等等这些内容啊,具体的信息那肯定在他的那个什么里边,在node里边是吧。Note里边存的不是数据嘛,对吧,Note里边,那我们等会配完了之后呢,诶,可以进到u keep的客户端里面去看一眼啊,到底它存的什么内容啊,看我们能不能找到。好,这是K我们要用的,那既然要用,肯定要起诉K爸啊,除了做keep之外。到底是谁来监控它的状态,就是健康状态以及切换active跟stand呢?它还有一个进程,到时候我们要增加其的一个进程ZKLC。
05:04
ZC。啊,它是一个什么失败控制器啊,对吧?啊控制器它里边啊,主要的是有两个线程。啊,当然PPT里面没有显示啊,没有写出来,你跟大家说一下,它里面的线程应该有三个,但是主要的是两个,一个HM healthy monitor,健康的一个它可以这个线程啊,就是监控,你看明白什么healthy monitor。就知道他是干什么用的吧?对,它就是监控它所在节点那个内的一个健康状态。啊,是否健康啊,这是第一个,第二个它还有一个内容。将active elect。就是要选出active的一个选择器。
06:03
啊,由他来选择,因为正常的如果说两个standby,那我们手动的刚起的时候是不是两个standby啊,对吧,那这个时候你既然是自动的,那就不能手动的,就不要人为干预吧,它起来之后就有一个是active的,有一个是在的,哎就是由ZKFC里边另外一个线程,哎来做的这事,来做的这事啊,他来选择哪个作为。Active它中间有选择策略,正常的,如果两个都是stand by的,一般都是先起呢,哎,都是active的,当然如果说你activity挂了,那只能是stand败为IP啊,那选择器做的这个事情啊,选择器做的这个事情好,这时候name。Active这个弄的挂掉了,这时候挂掉了,我们不能说真正的挂掉了吧,哎,只能说他是假死。假死因为什么呢?你无论是从N2去监控,还是说拿另外一个进程去监控它,你通信不上不代表什么,这个进程真的死掉了吧,是不是啊,你这个进程跟人家通信不上,但是data可能跟人家通信的好好的呢。
07:16
啊,这是有可能的,所以这个地方我们只能说它是假死,假死,假死的话,如果说监控到假死,你来起这个它是不是又是什么拒绝连接等等情况,是脑裂了啊又又防它是防止脑裂,防止脑裂所以不让你起,那这个时候ZTMC还干了一个另外一个事。他检测到假死以后,他会通知另外一台。因为另外一台要准备起了呀,是不是,但是他在起之前啊,他干了一个事。就把你干掉,不管你死没死,假如说你没死,他是不是有技能号啊,哎,他去把你手把你干掉,死的彻底一点是吧,再补个刀啊,死的彻底一点,他要防止脑裂啊,如果说他不补这刀的话,它是起不来的,就跟我们手都一样嘛,对吧。
08:14
嗯,我把这个K掉了以后,它是通信不上了,Stand跟active通信不上了,但是我去把stand转化为active的时候,它会报那个什么连接不上,因为它默认的它大数据框架在设计的时候都会考虑导电的问题。啊,因为大数据框架它肯定是一个集群式的,既然是集群式的,他肯定有大脑啊,有从接点嘛,有主接点,有从接点,那既然是主从模式的,他一定要考虑脑裂啊,防止脑裂,所以他考虑到了啊,所以你手动去起的时候,它是过不去的,那那个时候你通过其他一个进程去帮你完成这个事情的时候呢。哎,他就会强行的。干掉一个进场啊,不管你之前死没死,死的话死的更彻底一点是吧,保证绝对不会出现老裂的情况,老裂的情况之后,他杀死之后,这是这边啊脑烈这是他健康的一个描述啊。
09:18
它是发送一个K指令,或者说你觉得他这个里边啊,你还不放心的话,你在进程走到这块时候,你做一个监控,他准备起之前你可以自自己定一个脚本程序去再再补个到啊,这样更安全一点,但正常的它里边CKFC就差不多了,差不多了,因为它自己内部的现在都。出道,而且我们用的是2.7版本的是吧,从2.0版本的,它已经提出了高可用了啊,可以有高可用了,所以用到现在的话,它内部的一个机制还是比较完善的,所以说你这个的话,除非公司当中真的是安全性要求特别特别高的时候,你可以加一个,这个正常的话你不加也没有问题,不加也没有问题。
10:03
OK,这是解束了,解释了那个脑裂脑链应该是Li是吧?SBOK,他在杀死之后啊,他就起这个三的话,他就会激活本台一个的。切换为还切换。啊,这是整个的工作流程,工作流程当中在PPT上没有体现出来的就是两个点吧,一个healthy monitor,啊,健康的一个获取,它是监控自己这台的一个健康状态,然后还有一个是active elect,应该是active stand by elect,好像是反正就是选择一个选择器,就选择哪个成为active的啊一个选择器,等会我们看官网的时候能看到它有相应的解释啊,具体叫什么名字我现在也记不太清了,这两个。
11:00
整个的过程啊,就是这样的,他要确保啊,核心问题就是确保托,所以他在接收到。你准备激活之前,你一定要确保这个彻底死掉,你才能去激活,才能去激活,所以他会哎,发送一个命令去杀死这个进程,杀死这个程,好,然后我们看一下相应的一个文字描述描述。这块是讲的它什么,就是前面的手动故障转移,它不能自动的去切换吧。让你人工的啊,比较麻烦啊,很慢,你晚上半夜12点没有人工,整个的服务就瘫痪了是吧?啊不靠谱,所以我们才要用到那个自动的,自动了之后呢,我们引入了这个u cable u cable,它这功能第一个是故障检测。故障检测,第二个是先内的一个选择。
12:04
选择问题,它来控制哪个是的,然后更重点的是这个ZKFC的一个进程,这个ZKFC2。它是哈多的进程,你不要看它叫什么ZK,因为它是ZK的进程,不是咱哈鲁的进程,它是ha里边的一个进程啊,这不能弄错了,它的名字很像。K的进程是吧?啊,但是他不知道它是哈度的一个进程,它里边有一个监康监测,就是我们刚才所讲的那个healthy。啊,会定期的拼一个相同主机的啊,那note这个CKFC啊,刚才通过我们的PPT也能感觉到它是不是。一个内note对应一个ZKFC啊,而且你最好跟ZKFC跟那个内not放在同一台机器吧,这样不涉及到其他的一个网络传输,它可以监控到你看相同主机之间的一个那弄的啊,它的一个健康状态。
13:09
健康状态,然后这个东西就是我们所讲的。它的一个选择器啊,选择器。啊,这个绘画管理,绘画管理这块就是它怎么就是从K怎么来控制,只有对外只有一个active的。Name not,哎,怎么来控制的?来看一下,其实这样的,我们知道在z ku keep里边啊,无论什么内容或者进程来往里边存数据,其实都创建了一个临时节点是吗?对吧?啊,而且创建的都是临时的,一旦你会画都失了,就是说你进程挂掉了,那你会画肯定就断开连接了吧。那你会画断开连接了,就临时节点的话就怎么样,丢失了吧,哎,就没了,其实也一样。
14:05
在ha当中,它跟如K的一个会话建立了,也是一个临时节点,临时节点就是说谁是active状态的,首先active状态要有一个前提,就是说它必须是健康的,就是它通过这个健康检测,先不有两个。那么弄的吗?对吧,如果说一个起来了,一个挂着,那只能是起来的那个当选为active吧,还是这样的,它肯定是健康的,这是前提啊,他中间也会选举啊,选举机制在这一块就不多介绍了,然后如果选上的C2。它就保持一个特殊的一个Z的锁。这个锁就是一个临时节点呗,对吧,哎,谁就有拥有这个临时节点,当zoo keepable绘画当中谁拥有的这个zoo z no的这个所。
15:05
谁就是active状态的。谁就是active状态的。啊,当你挂掉了以后,是不是你会画中断了呀,你锁就释放了,你就有可能被其他一个节点。哎,来抓到这把锁,那其他另外一个节点。就是active的啊,它是通过这种唯一的一把锁啊,一个很特殊的锁来控制谁是active状态。而且一般的如果说你直接去起两个内not的话,正常情况下没有通信阻塞啊之类的情况,你就第一个起的name note,一般都是active啊,先起到active,因为在你起active的时候,在你起第一个name not的时候,第二个没起了,没起的时候默认的状态是不健康的呀,对吧,只有一个健康的,那肯定就是第一台。啊,当选为active,那之后就是谁挂掉了,那另外一台起来呗,啊其实他这个选举比较简单啊,比较简单。
16:08
这是他相应的一个原理。
我来说两句