00:00
那接下来我们就以官方class方式来部署一个red集群,那我们现在呢,来先创建六个节点,这六个节点呢是三主三从的方式,那么这个主从呢是为了进行同步备份的,但主跟主之间,我们这个red集群里边可以来进行slot,我们的这个数据分片,那整个图呢就应该是这样子,我们来创建三个主,每一个组呢都有一个自己的存,然后我们来保存数据的时候,我们会从组里边来进行保存,读取数据呢,我们也可以从从里边来进行读取,但一旦我们这个主节点出现问题以后,你这个从节点呢就会来重新顶上来,那下次这个主节点再上来,它就应该演变为从节点来同步我们之前从节点这个数据,这是我们这个red class集群的原理图,那现在就来部署,那这个部署呢,我来写了一个非常快的这个部署脚本,我呢直接写了一个负循环,我从7001~706开始来变历,相当于。
01:00
来做了六个,然后我们这个六个呢,分别是这样,那red的NOTDE1 notde2,一直到我们的NOTDE6,那么现在来进行便利,那便利的第一步先是麦c dar,这就是我们以前在基础环境里边装red的这个步骤,一模一样,我们呢先来创建一个no德几这个来保存配置的这个文件夹,然后呢,我们再来给文件夹里边创建一个red的这个配置类,每一个呢都是Dollar福大括号,取出它当前的这个端口,所以red里边呢,将来会有非常多的node杠,7001,一直到7006,然后接下来我们给red的这个配置文件里边,主要呢是来写一些内容,从u off开始到u off结束,然后我们的内容是这一块,每一个red自己的端口化,我们来定义好,包括呢,我们来给它开启classster集群模式,以及每一个red,它的这些整个集群里边的mode的节点相当现在有多少个red?
02:00
这节点信息在这个里边保存着,那这个里边是由red集群自己来维护的,还有每一个节点的这个超时时间,如果多长时间联系不上了,就认为他已经断线了,还有我们的每一个节点在集群里边自己的这个IP,以及在集群里边这个团端口号,还有我们他跟其他这个red进行我们的这个bus整个总线数据交互,用的这个端口,那用的这个端口呢是一几几几几,那我们如果是7001,那就是17001,现在我们就可以在这呢,直接一个for循环,我们就来创建出了相当于六个red,然后每一个呢,在这都用docker run的方式把它们启动起来,比如docker run-P,然后呢,我们来指定端口号,由于我们red现在自己的端口号已经变了,是7001,对外暴露呢也7001,包括它的整个集群的这个交互端口,那现在是17001,对外暴露也是170001,每个ready。
03:00
的名字都是red杠它的这个端口号,而且呢也让它自动重启,这个自动重启命令呢,我们可以来去掉,要不然我们的这个虚拟机只要一启动,现在内存呢都可能不够了,好我们现在把这个自动启动的这个命令那就不要了,然后再来接下来那们现在呢,这几个red,每一个red呢,它的这个data都挂载到我们这个马red这个文件夹下,然后呢,配置都挂载到我们这个下,然后我们之前呢这些文件都创建过,然后呢杠D以后台的方式,我们用的是RED507的镜像,然后呢red server,现在我们来启动red用的命令是red server来加载我们自定义的这个配置,所以呢,我只要这么一个for循环,六个red呢就全部创建好了,好,我就直接把这个for循环拿过来,我就不用一行一行的先来创建好文件夹,再来执行这个,创建好文件夹再来执行这个,再给配置文件里边放这个啊嗯,太慢了,好,我把这一块呢,整个复制过来,CR。
04:00
来到我们的这一块,那现在来到我们的red这个文件夹里边,来看一下,Red文件夹里边目前啥都没有,一个config,一个data,这是我们之前装red的内容,好,我来粘贴一下,直接回车。我们看到这个123456好,现在启动了六个red们也不用docker PS,我们先来LS看一下,我们六个red分别在NODE700111,一直到我们这个NODE7006好,我们现在这个red启动起来以后,来doer PS来检查一下是不是这个六个red,我们7001~7006没问题,从RED7001~7006好,我们这六个red准备好了,但如果我们是现在这种模式下,默认呢,还没有形成集群,就是六个单台red,然后我们接下来想要让它成为集群,非常一个快的命令,我们随便呢进入一个red里边,但必须是master节点,那们进来以后呢,我们现在准备把这个7001到我们的这个7003,我们这三台机器来当成master,所以呢,我们现在在一个master进去以后来执行一个命令,用red client,就red的这个命令行,然后呢,杠杠class,那就是我们开始要创建。
05:16
一个集群create创建集群,然后来指定我们呢,现在哪些服务器整个构成一个red集群,从7001 70021直到7006,把这个六个服务器那都写上,然后注意后边在这儿,如果是我们以前red主从要同步,那是不是得自己配太麻烦,那现在我们来创建red集群的时候,来直接指定classluster repl,就是我们整个集群的副本数量一一的意思就是我们每一个主节点必须有一个副本节点,而我们现在主节点呢,现在我们来准备让7001 7002 7003当那相当于每一个主节点呢,自己就来找一个副本节点,当然如果是我们这种情况下,他随机给我们来挑一些节点来当为主节点,然后呢,剩下的每一个节点,再来找一个节点当成它的副本节点,好,我们现在就来复制过来,因为每一个节点只有一个副本,所以呢,我们六个里边,每一个一个副本,每一个一个副本,每一。
06:16
个一个副本,那正好我们六台机器,好,我们现在直接使用docker的端口号的方式,我们来模拟了六台机器,我现在就进来,我们来执行我们这个命令,Docker PS,我们先来确认一下,那这六个red呢,都在运行,然后docker exec-I,然后我们来进入我们某一个red的这个容器里边,我们red。7001好,我们现在进入它里边,然后使用它的这个b besh这个控制台进来以后呢,我们接下来直接运行我们这个命令叫red杠,Red c Li,就是它的这个客户端,然后呢,我们来让他创建一个集群,把我们这六个都来指定好就行了,然后呢,而且集群的这个复制分片,这个集群的副本是一个,现在每一个节点呢,得有一个副本,那现在。
07:06
六台服务器,那相当于只有三个主节点,然后呢,每一个主节点有一个自己的副本来回车,好,我们现在呢,看到这一块,我们整个的这一块的步骤MASTER0,相当于我们把这一块来截一个图给大家来看。就是第一个主节点,那第一个主节点我们的这个slot槽呢是零到5460,第二个呢是5461到这一块,第三个呢是我们10923到这一块,然后呢,而且它分配了master节点都是哪些,我们看到70010203这三个呢是master,然后slave主节点7004它到底是谁的slave能看到我们呢说这个节点是replic,是复制的是aef在这儿像7004是7002的副本,然后呢下边的这个,然后呢它复制的是8002,然后呢相当于7005是我们8002,也就是7003的副本,那7006它复制的是7F2C,那就是7001的副本,它呢挑了我们三台主节点,然后这三个随便呢挑了一个当副本,然后呢,他让我们是不是来接收这种配置,如果我们接收的话,我们就来写一个yes,好,我们一写yes以后呢,我们整个集群Y。
08:23
For class to join,那么现在就等我们集群里边的所有节点来加入进来,那只要一加入进来,我们整个集群就形成了,现在集群呢,就是这个样子,我们把现在的集群方式我来复制过来,那么现在的这个集群给我们告诉的整个信息内容是这样子的。我们现在呢能看到7001,它呢是一个MAS,然后呢7006,然后又复制的reppl 7f2C,这两个呢放在一起,一个M一个F,下面两个也一样,一个M一个F 7002是M,那么这个呢是S,就是它的silver,然后呢7003是M,然后呢7004是它的这个silver,好,没问题,我们整个集群呢就创建好了,那接下来我们来做一个简单的测试,我们连上集群,如果我们要保存数据,以前呢,我们来连上red client。
09:20
如果直接进行回车的话,那这种呢,我们现在要指定我们要连哪个red red client,好,我们现在来指定一下red client,杠H,我们连上哪个red192.16 8.56.10,然后呢杠P再指定一个端口号7001,我们连上这个red,那如果使用这种方式就是我们以前默认的方式,不是集群操作的方式,集群操作要加个命令杠C就是class模式走进来,那现在呢,连上了7001,连线7001以后,我们来给7001保存上几个数据,比如我们set hello,然后呢,它的这个值是一,然后我们来保存的是OK,然后呢,我们来再来set一个A,它的值呢是AAA,走,然后们会看到呢,这个命令是这样子的,我们想要set一个AAA,然后呢,它说redirect slot相当于它重定向到了我们这个槽里边,这个词呢,它是在7003这个端口的,所以呢,它这个。
10:21
Get我们看从7001自动的变到了7003,所以呢,如果我们想要get a,我们就是从7003里边拿到的,但如果我们想要get hello hello呢是在7001里边得到的,之前保存的,我们来看get hello走,然后这个hello呢,它还会计算,他呢说我们这个hello啊槽呢是在866,它呢计算出来的槽值是这个,然后呢,它在7001,最终哈返回的值是一,相当于呢,它给我们最终又重振向到了7001,这就是我们整个red class,而且呢数据是分片存储的,那现在在7001有个7003有个包括如果我们再来保存,可能给7002都能保存上走那赛BB比如值呢是AA,诶那正好这个BB呢,它被定位到7002,那我们现在可以看一下我们这些数据库里边的这些数据都对不对,来连上red的这六台节点,而且呢,关键它还有从节点,你看这个从节点数据。
11:21
没有同步过来。好,那现在连上我们这几个red,这个呢是M1MASTER1,然后呢,它的HOST192.168.56.10,按照我们的整个这一块的集群结构,我们现在先来连上7001 7001它的从是7006,所以我们现在M1我们就来写七零零一来测试一下,好,7001呢,没问题,我们现在连上这个7001里边有个hello,然后我们来看它重节点里边有没有数据,然后呢,我们就叫M1的这个s slave m1的这个s slave192.168.56.10,我们这个节点一的这个s slave之前它分配的是7006,咱们这个端口呢,我们就来写7006 7006,好们来测试一下这个连接,没问题,来点击OK,现在这个是M1的这个s slave,我们来点进来,诶确实呢,有一个hello,所以只要我们对集群的所有操作,这个从都会同步上来,而且如果我们这个M1宕机它的。
12:24
这一块呢,还会顶上来进行使用,我们可以来测试一下,我们现在呢,把M1这个节点,我们让它宕机,这是一个主节点,然后我们来看整个集群会是什么样子,如果我们来查看集群状态,我们可以使用这个命令classster英O,我们这个英O呢,能查看到当前集群的这个状态,集群呢现在是OK的,然后呢,集群里边的节点是六个,然后classluster的size是三,没问题,然后呢,包括我们也可以使用cster notes来看一下集群里边所有的这个节点信息,我们现在能看到每一个节点它们都是什么信息,这个是一个s slave7004,它呢是同步哪个节点的是aaaf,这aaaf在这是7002,我们现在都能看到这块的信息呢,也有,现我们来让一个red来做个宕机走。
13:13
那现在就来宕机上一个7001,好,Docker一个,那现在让docker stop stop来停止我们的这个RED7001的这个节点,这是一个master节点,那一旦一宕机以后,来重新来检查一下我们这一块的整个状态,我们还是来先进入我们的red这个内部,来进7002的内部,因为7001都宕机了,然后我们使用red client red client,我们还是杠C集群方式来操作,然后呢。杠H我们连上的是192.168.56.10,然后呢,杠P我们连接的是7002走,然后呢,我们现在来看一下克class info走,克classster info呢这一块它打印的这个已知的节点数是六个,然后克class size是三,而且class的这个状态是OK的,那说明节点数量呢不变,但如果我们来看它的整个no走,那现在就能观察到它呢其实已经判定到master这个费尔了,也就是我们的7001已经失败了,但7001失败了以后呢,我们看到这个7006,它呢又成为了一个master,这个7006跟7001是什么关系?我们之前能看到我们的这个图,7001的重节点就是7006,想想我们整个red集群把它呢就提升成了一个主节点,那只要我们的这个7001在上线以后,我们来看又会是发生什么变化,Docker,我们的red。
14:46
杠7001走,那现在呢,我们这个7001重新上线了,那上线以后我们来看我们的class no,这no呢,我们现在来看我们这个7006,现在呢还是master,然后我们来找7001,但这个7001呢,发现它这个7001它已经SLAVE3F10,由3F10相当于7001,它现在已经成了7006的重接点了,所以呢,它可以来做到故障切换,只要有一个有任何问题,我们下一个它的这个重节点都会来顶上,这是我们说的red class集群,我们如果要给集群里边保存数据,它呢也是分片存储的一个里边保存的不够,它会分到其他里边,使用我们的整个slot槽的这个机制。
我来说两句