00:00
好,同学们呢,这节课我们跟大家一起来学习一下NG的高可用配置啊,在这呢,我们简单的给大家讲一讲NG的高可用配置的解决方案和配置方法,先跟大家来聊一聊这个高可用的呃意义究竟是啥啊,以及它这个一些解决方案,看看哪个呢能行得通,我们先来看这张图,这是我们正常的互联网项目的一个简单的架构图,当用户请求到我们的NG个服务器的时候呢,N这个服务器会反向代理,把用户的请求呢代理到我们的后端的服务器,对吧?那如果这台NG服务器突然出现宕机不可用了,那怎么办?我们在之前的课程里边给大家讲过,我们的NG呢,可以做到负载均衡啊,是这个意思。也是我们的这台N。啊,后边呢,会有几台这个,呃,应用服务器。当我们在呃做负载均衡的时候啊,他会雨露均沾对吧,一人来一下,当有一些服务呢,不可用的时候,它会把它自动的剔除掉,就不再往上上边去转发请求了啊,然后就在这台服务器上呢去转发请求,那么讲讲NG,现在呢,是不是只有一台节一个节点了,后边的服务呢,也只有一个节点了,当这个服务再不可用的时候,后端呢,将没法去完成用户的请求了。
01:20
啊,对吧,那所以我们就要提供更多的后端的服务器,提供冗余备份,以备不时之需,一旦有一台机器down掉了啊,后边还有几台机器同时可以提供服务,那么虽然说之前的技术架构当中呢,后边的这个服务比较多,但前面的NG它只有一个。那有没有同学可能会讲,哎,那我可以再搞一个NG格出来啊,对吧,如果说NG同时有两个,然后呢,在它的前面呢,再放一个NG。然后把用户的请求呢,诶通过这台NG呢,反向到这两反向代理到这两台NG上,一旦有一台NG挂挂掉了,宕机了,诶还有一个可以用,诶还能再继续代理,对吧?那你这样想一想,是不是陷入了一个逻辑上的黑洞,那如果这台NG呃,他如果挂掉了怎么办?他现在也是单点的服务,只有一个节点。
02:10
对吧,如果这台NG挂挂掉了,后边的两个NG又访问不到了,那所以我们要干嘛在它把它再复制出来一份,提供冗余备份,那么前面还得再放一个是吧,那到这会儿呢,已经无解了,所以光靠NG的负载均衡。这是解决不了当前我们眼前这个问题的,那么如果要是切入到另外一种这个负载均衡器呢?LVS其实也是一个道理,你在前面放一个LVS,这LVS呢也得部署到一台服务器里,它和NG的原理其实差不多的,都是做这个负载均衡器,那么如果这台LVS宕机了怎么办?你是不是也得复制出来一台多机同时提供服务啊,这样呢,提供冗余备份,一个挂了,还有一个可以用,还是这个道理,所以限制了逻辑黑洞在这儿我们就不能再加机器了,不知道大家有没有看出来。
03:01
也就是这N几呢,我不能在它前面再加一个负载均衡器,这是一定要理解的,那么从这个问题呢,呃,这个呃衍生出来的需求已经很明确了,那必须得呃不加机器的情况下呢,我们还能做到它两台机器能够呃动态的切换是吧?那这时候怎么办?有这么一个技术叫keep alive的,这个keep alive的呢,不需要额外再加一台机器,这keep alive是跑在我们现在运行这台机上的。淘宝在这台机器上,它在这台机上呢,也有,它其实就是一个小小的软件。它跑起来之后能起到什么作用呢?它能互相的。通讯两台机器上的keep live的互相通讯,来互相检测对方有没有挂掉,是哎,有没有还活着。那么这两台机器同时对外提供服务,怎么提供服务呢?那大家要知道在局域网里边IP地址是不是不能重复啊,对吧?哎,我们假设说现在这台机器的IP地址是192.168.44。
04:08
点111。那这台机器还能是111吗?他肯定不行了呀,对吧,啊,它一启动之后它就冲突了。那么如果IP地址不一样的话。这就变112了,对吧?如果IP地址不一样的话,我们用户请求究竟是请求111还是请求112,以谁为主要的入口啊?假设说我们现在以111为入口,用户请求111这台服务器,对吧?那么111如果挂掉了keep live之间呢?哎,它之间建立了通讯是吧?他能不能把112直接顶替成111,假设说keep LA有这么一个功能,它就是换IP。诶,这台机器不是宕机了吗?然后我把这台机器的IP地址给它改成111,可不可以。大家想一想,可不可以,肯定是可以的呀,对吧?但是这会儿我们怎么能判断这台机器是真的down掉了,还是他当时是只是一个假死的状态,或者说当时这个交换机过热,出了一些短时的通讯故障,或者出现了网络分区故障,那什么叫网络分区故障呢?这个也非常常见啊,假如说我们现在有这么一个机柜,这儿还有一个机柜。
05:24
网络分区指的是啥?我们现在这台机器呢,在呃,这个111在这个机柜上,然后112在这个机柜上。然后这个机柜里呢,除了幺幺还有什么点二啊啊什点点七啊,这都是IP地址啊啊,假如说这一个机柜上有三个机器,那这一个机柜机柜上呢,也有几台机器,比如点八呀点九,举个例子啊。这个网络分区指的是啥?我们每一个机柜下边都会有一个这个,呃,小的这个交换机。那么交换机和交换机之间通讯一旦产生产生了故障,那么这会儿就出现了网网络分区的情况,就是分成了两个区,两个区域它内网互相访问的时候可能没问题,但这根网线如果断了。
06:12
两个机柜之间互相访问,就访问不到了。对吧?啊,那如果要说短时的这种交换机过热,这会儿可能就真的突然访问不到了,那我就把这个111的IP地址直接给它挪到112这台机器上吗?把112这ipp给它给清除掉啊,或者是在这网卡上面额外再加一个IP。那一旦这台机器在启动的时候,是不是就冲突了,或者网络突然恢复了,IP地址也重复也这个也冲突了,所以是不是不能直接去交换IP这种方式,因为我们期望呢,我们这两个NG,一个是主的,一个是备用的。一是主机。一个是备用机,主机宕机了,备用机才会上。这是主备的概念,也是ha的概念啊,一个主一个被,他不会对外同时提供服务,如果对外同时提供服务的话,那这东西就成了集群了,是吧?这会儿我们是想让他有一个备用机,当主机挂掉了,有一备用机能上,他如果想上的话,把IP直接切过来。
07:14
这会儿在逻辑上是可以行得通的,但实际使用的时候,这里边是有很大问题的。所以在这呢,我们能不能换一种思路,不直接换他的IP地址,我们给他虚拟出来一个IP地址。叫virtual IP,我们管它叫VIP虚拟出来这个IP地址呢,呃,在局域网里边是虚拟存在的,其实也不能说是完全虚拟存在啊,只是说在局域网里边,呃,没有任何一台机器占用了这个IP地址,比如说把这台机器的呃,这个虚拟IP呢,给它设置成幺九二点幺六八点四四点二百。这个四十四点二百,这个呢,就是VIP。他这他这个感觉是啥,这个IP地址啊,他一会儿在这台机器上,一会在这台机上keep alive的呢,不再去换它的真实的物理IP地址。
08:05
而是把这个虚拟的IP地址来回漂移。那么这样就能起到什么作用呢?用户访问的时候呢,入口是这个虚拟的IP地址,这个IP地址究竟在哪台机器上,它不固定,假设说我们现在有两台机器。哎,我可以先让主机上的。持有这个IP地址,一旦主机down掉了,Keep alive的互相检测,他能检测到,诶,这哥们荡掉了,那这会儿是不是皇上死了,太子能继位了?对吧,他一旦感知到他当掉了,哎,那么他把这个IP地址给他争夺回来。那一旦他在上线了之后呢,这里边儿就有竞选机制了,对吧,这里边竞选呢,它有呃,优先级的一个配置选项,优先级越高它的。他的这个这个竞选的时候,呃,成为这个master的几率它也就越高。Keep Li的呢,只是把这个IP地址来回切换,并没有把它固定的真实的IP地址来给做这种交换,这种变化,所以它不会太出出什么太大的问题啊,那这会儿。
09:08
这个200这台机器的这个,呃,200的这个IP地址启动的时候呢,是在一台机器上,一台机器上大家一定要知道啊,它可以配置多个IP地址,一个网卡上也能配置多个IP地址,不是一个机器只有一个IP的。啊,一个机器可以有多个IP,首先一个机器它可以有多多个网卡,你可以插好多网卡接入不同的网络,比如一台机器插一个网卡接入内网,另一个网卡接入外网,接入内网的呢,呃,来访问我们这个这些这个呃后端的应用服务器。接入外网的呢,接什么电信的呀?呃,联通的这些主干网络。啊,一个网卡。上面同时呢,还可以配置好多IP,不只是一个可以配好多个啊,你怎么配都可以,但是别配太多啊。
10:00
那么这个网卡上可以配置好多IP地址,那默认的它就是它的IP地址,固定IP是这个,它可以可能会飘过来这个,那么这个IP地址就是由keep live来管理的。这个就是keep alive的,做IP漂移,就是虚拟IP的,呃,基本概念和这种呃。高可用的解决方案啊,我们不能在前面再加机器了啊,两台机器呢,只能有这两台不能再加了,再加就没头了,大家一定要注意,两台机器全都一样,一个主一个被,这叫ha,叫high availability。啊,高可用啊,啥叫高可用,一个能用对吧?啊,那时不时它可能会出点什么问题啊,一旦它出了什么问题,再有一个备用机对吧,你手机里是不是也有一个分组,那叫什么鱼塘啊,有一些备胎对吧?你的主要的这些请求一旦达不到的时候,那那你就去找备胎嘛,让备胎过来对吧?那么迁移的话就是把请求给他迁移过来,怎么把用户的请求迁移过来呢?我们又不能主动的去让用户去访问我们现在112这台机器。
11:06
对吧,那域名解析的时候他也不能来回老换,如果他来回老换的话,用户本机DNS上的缓存他可能还没来得及更新呢,啊,它它它达不到这么高的这种呃切换速度啊,它只能说IP地址是固定的,但这个IP地址呢,可以在两台机器上来回老飘啊这就是呃,我们这个高可用的一些场景和它的解决方案,那么接下来呢,我们带着大家来安装一下keep alive的。
我来说两句