Redis通过哨兵模式实现主从复制的分布式

Redis中,可以通过执行slaveof命令或者设置slaveof选项,让一个服务器去复制另一个服务器,以达到同步的目的,其中被复制的服务器称为主服务器,复制的服务器是从服务器,主服务器负责写工作,从服务器负责读工作。
下面进行演示主从复制,我们需要准备两台Redis服务器,简单起见,我在我的阿里云上配置两台不同端口号的Redis服务器,另一台端口号为6380
在配置服务器的时候,需要修改这四个东西以守护进程启动daemonize yes,端口号port 6380,进程文件pidfile /var/run/redis_6380.pid,持久化文件dbfilename dump6380.rdb
在这里插入图片描述
接下来我们客户端连接6380服务器,记得带上-p参数,不带默认连接6379
./redis-cli -p 6380
在这里插入图片描述
连接上6380服务器之后,我们设置该服务器的主服务器为6379
SLAVEOF 127.0.0.1 6379
在这里插入图片描述
下面我们打印一下从服务器6380的信息,可以看出,这是个从服务器,其主服务器端口号是6379
INFO replication
在这里插入图片描述
下面是主服务器的信息,他有一个从服务器
在这里插入图片描述
下面我们给主服务器set一个值
在这里插入图片描述
可以看出,我们可以直接在从服务器中获得,这就是主从复制
在这里插入图片描述
当我们在从服务上设置值的时候,会报一个错,因为从服务器只负责读,不负责写
在这里插入图片描述
当我们的主服务器宕机的时候,我们可以看到,从服务器还是从服务器,只能负责读工作
在这里插入图片描述
在这里插入图片描述
当主服务器宕机的时候,从服务不能充当主服务器,导致不能完成写操作,如果想要从服务器负责写操作,需要手动复制,比较麻烦,于是就出现了一个哨兵模式,哨兵可以监视着,主服务器是否宕机,如果宕机了,就在从服务器中选出来一个,当做主服务器
哨兵也是一个进程,其中还有一个sentinel.conf配置文件,我们可以在这里面进行配置他所监视的服务器。这里是配置了一个哨兵,监视6379端口,当这个服务器宕机的时候,需要在从服务器中选举主服务器,该哨兵有两票的权利(可以配置多个哨兵,因为哨兵也有可能被暗杀)。

sentinel monitor mymaster 127.0.0.1 6379 2
在这里插入图片描述
接下来我们准备一台主服务器,两台从服务器
在这里插入图片描述在这里插入图片描述

接下来我们启动哨兵,可以看出,该哨兵监视的主服务器是6379,还有两台从服务器
./redis-sentinel ../sentinel.conf
在这里插入图片描述
接下来我们关闭主服务器,也就是让主服务器宕机,此时还剩下6380、6381服务,还有一个是26379哨兵
在这里插入图片描述
大约经过30秒再次info replication时,你会发现,新选举了一个主服务器,这个主服务器就是哨兵投票选举的。
在这里插入图片描述
可以看到此时选出了6381为主服务器。
在这里插入图片描述
当我们的6379服务器再次回来时,可以看出,主服务器还是被新选举的6381,而6379只能做从服务器。
在这里插入图片描述在这里插入图片描述

原创文章 483 获赞 395 访问量 10万+

猜你喜欢

转载自blog.csdn.net/HeZhiYing_/article/details/105873906
今日推荐