00:00
那好,接下来给大家介绍恩吉克给我们提供的第一种方式,这也是它官方原生我们的开源版本自带的一种方式叫IP哈希,这个IP哈希它能够起到的作用就是让我们的NGS根据客户端的IP地址来定向的去转发到固定的一台服务器上,比如说当前请求我们的NG服务器啊,用户的IP地址啊,注意是。啊,咱们写一个,比如说点0.1吧,啊简单点,当用户的IP是点0.1的时候。他叫IP哈基嘛。啊,他会通过哈希算法给我们的用户的IP取一个哈希值出来。当它取出哈希值之后,每一个IP地址呢,就有固定的呃一段呃字符串了,啊,那么这个字符串它是呃有一定特点的,这个特点就是相同的IP取出来的哈希值是一样的,那么不同的IP呢,取出来的哈希值是不一样的,那当取完这个哈希值,然后再根据我们的后端服务器去取一个余数出来,那么这会儿我们就可以具体定位到一台具体的服务器了,这个原理其实很简单啊,比如说我们根据点0.1取出来的哈机值,比如说啊,我们写一个伪代码,比如说这是125。
01:17
那么后边的这个当然它不是125啊,它是16进制的125呢,和我们后端的两台服务器去取余数。那最终的余数是几?它能被二整除吗?肯定不能对吧,他肯定是余一对吧。那么如果我给后台两后端的两台服务器呢,做好了标记编号。比如这是。呃,零那就是能被整除,那么这台机器呢,是一,这就是不能被整除对吧?那么这会儿这台,呃,这会儿这个请求这个点一的IP的请求会被打向哪,就这台服务器对吧?那如果是126呢,取出来的余数啊不是取出来这哈希值126,那得和二取余。
02:01
那这就被能够能够被整除,那么它的余数就是零了,那就会被转发到。第一台服务器。啊,这就是他的逻辑,当然在我再说一遍啊,它这个是属于16进制的啊。哈机值,不同的哈机算法取出来的值它也不一样啊,但是它一定会和我们的后端服务器去取,这就是这个IIP哈机算法,那么这里边呢,有一个问题,就是虽然说相同的IP会被指向相同的服务器。那么这里边儿的问题就是。你像我们的这个网吧学校啊,甚至有一些,呃,这个稍微大一点的公司,或者是这个一些这个宽带用户,他可能没有公网IP,它是共用的一个IP地址,那么这样就会造成一个情况。就是大量的请求都会被取到一个哈希值啊,取到一个哈希值之后呢,就全都给转发到这么一台服务器里了。这种这种这个呃。
03:00
分发流量的方法就是IP哈希特别不适用于某些啊,像需要在局域网里边运行的项目,比如说我们企业里边用的ERP,校园里边的一些教务系统,包括考试系统,比如有一些考试,你像公务员考试啊,或者一些什么需要这种机试的这种考试,同时在线考试呢,可能有几万人,这几万人都在这个,呃,这几个学校里边去考,那么他的IP地址可能就那几个。那你这个后端的服务器,你部署的再多,那可能最后被真正访问到的服务器,它也可能也就这么几个,再有就是呢,它非常容易造成流量倾斜。啊,就是大量的IP呢,有可能会被定位到其中的一台服务器上啊。但是这个这种这个分发的效率它是极高的,它能够直接把用户的请求呢,打到打到我们的后端的一台服务器上。啊呃,节省了我们后端的这个啊,就是我们如果用Java spring session,节省了这一套这个呃,这种这个技术的这个这个这个呃投入啊,但是问题很明显嘛,对吧,我们刚才说的第一个问题就是大量IP集中。
04:11
这第一个IP集中对吧?啊,这个你在做分发的时候,这就很难搞对吧,这是第一个问题,那第二个问题呢,其实就是我在后端服务器的这个环节里,那如果这台服务器它宕机了。啊,其实这不光是这个IP哈希的问题啊,所有NG转发啊这个。做这种这个绘画保持都有这么一个问题,第二个问题就是。后端服务器如果宕机。那么用户的会话啊,它其实也是消失了啊,真正的我们的这个呃,会话呢,保这个它存在了我们后端的某一台服务器里,那么这台机器上对于会话的信息就是它存这个session,如果没了这也不行是吧啊。
05:04
呃,那么我们为什么要讲这个呢?既然它有这种问题,其实它能够满足一些这个中小型的项目,呃,在初期,呃,部署上线的时候。注意它的应用场景啊,一定是中小型项目,想要快速扩容,就如现在,比如说我们现在一台机器,它这个单机的这个内存、CPU都已经到瓶颈了啊,我们不想通过提升硬件去做这些事儿了,那我们就可以搞出两台机器来,这样呢速度非常快,就能把眼前这个问题给解决了,而且原本的代码根本就不需要改,你如果加这个spring session,这需要改代码。对吧,啊,你需要把这个用户的session给它扔到这个呃,Red里,你如果要是用N来分发的话,这是压根就根本就不需要改代码了,这是它适用的场景,我们也会一步一步的从这种中小型项目呢,给大家迭代到大型项目里边的这种绘画的解决方案,也一点一点的给会给大家带出来。
06:04
那么IP哈希呢,我们先给大家介绍到这儿,那接下来带着大家来跑一跑,我们看一看这I pip哈希就应该怎么去配置它,我们现在呢,给大家准备了几台机器啊?呃,这套课程呢,我们管它叫NNGADV就高级课程,我们现在呢有三台,呃,NG服务器,两台tomcad服务器,这三台NG服务器呢,我们已经把它给起来了,那接下来我们看一下这IP哈希应该怎么配啊。呃,我拿这个Excel啊,也把这个机器呢,全部都连上了啊,先打开它的这个配置文件。当前这台机器的IP地址是44.101是吧?啊。然后我们找到这个配置在user。Local。N。
07:01
好,大家看啊,现在是一个特别干净的NG是吧?啊,那我们先看看这几台机器吧,啊,能不能正常访问配置文件呢?现在已经找着了。192.168.44.101好,这是44.101对吧,那么后端服务器呢?呃,我们先用额外的两台NG吧,那就是102和103。和这个103。啊,现在是这三台机器。那我们把101给它配成这个,呃,我们的这个呃负载交控器,让他把请求转发到后端,后边这个两个一个102,一个103上啊。那就改这个在这里边改,呃,在这里边呢,我们先加这个upstream。先加一个upstream啊,我们叫这个HTP。
08:00
啊,这HTP盖的请求吧,对吧,名字可以随便起,然后在这里边呢,我们呃,先写一个关键字啊,就是这个IP下划线哈西。这是N自带的模块啊,这不需要额外装,也不需要用,呃N剂啊,什么都不需要,在这边把那个IP地址写上server192.168.14.102,这是第一台机器。这是第二台机器103,然后在这儿呢,让它process这个就不要了。HTTP。这。OK,我们保存,然后。Reload一下这个N几,咱们再看一下走。
09:00
他把请求转发到我们这个零三服务器上了是吧,那我们再刷新,你看它会变吗?它不会对吧,因为我们现在客户端请求的IP地址就这一个啊,就是我当前的这个啊,这这一台机器如果要是额外的用户呢,IP地址和我不一样,那么他有就有可能会被转发到这个零二这这这台机器上,这个比较简单,我们就不做过多的这个演示了啊,我们把这个IP哈机你给他去了,你再看。我们再重新reload一下。大家看03020302,他就会呃走这个RR轮询了一人一下是吧?啊这就是通过IP哈希去做这个负载均衡,那么给大家总结一下它的特点就是我们可以在呃中小型项目去做这种快速的扩容的时候啊,想增加几台机器,然后又不想根本就不想改我们原来的代码,我们就可以通过NG。去做这个负载均衡啊,去做这个定向的请求的转发啊。
10:05
呃,坏处呢,也跟大家说了啊,就是它不适合大型项目啊,后端虽然说机器有可能会比较多,他也不会影响这个后端机器的性能,但是啊,你项目如果要是大了,后端机器如果要是,呃,有时候我们的上游服务器啊,或者后端的这个机器,如果它宕机了,那么这个机器里边所保持的一些会话信息,尤其是一些很关键的这些信息,比如说我们是一些银行的系统。啊,一些这个出入账和钱有关的一些操作,人家正在一步一步操作呢,你后台那台机器呢,突然宕机了,由于你这些操作呢,有这些上下文的这种关系,就是下一步,下一步人一共六步,人家刚走到第三步,你所有的操作这些都没有存盘,就没存到数据库里,全在绘画里边保持着,就是你在30里边存了,或者在服务器的内存里存了,那台机器要宕机了。那把请求就肯,他肯定会转发到另外一台健康的机器上,那另外一台机器上又没有,那么这样那些关键信息就全部都丢失了,给用户的体验度呢,呃,也是不太好的啊。
我来说两句