redis学习(四)主从结构与哨兵机制

什么是主从结构

如图,一个主服务器可以有多个从服务器,从服务器下面还可以有从服务器,这是redis的级联结构。主服务器在数据发生变化时,将数据同步给从服务器,保持数据的弱一致性。

为什么redis要搭建主从结构

从作者个人的理解来看

1、降低主服务器压力,由于从服务器与主服务器数据定期同步,所以我们在进行读数据操作的时候,就可以访问从服务器,只有在写操作的时候才需要访问主服务器,大大降低了主服务器的压力

2、防止因主服务器宕机而导致服务崩溃,一旦主服务器宕机,如果没有从服务器,所有请求都会打在关系型数据库上,很有可能造成缓存雪崩,有了从服务器,通过哨兵机制,就可以重新选举出一个主服务器,之前的主服务器在重启后作为从服务器运行就可以。大大的增强了服务的健壮性

哨兵机制

顾名思义,哨兵即是用来放哨,哨兵通过定期ping各级服务器来确定服务器是否运行良好,刚才也说了,哨兵机制能够在主服务器宕机之后,在从服务器里选举一个新的主服务器出来,如果是从服务器出现了问题,只需要重启一下再与主服务器重新建立关联即可。

我们通常会使用多个哨兵共同监听一组服务器,以防止主服务器可能因为某些小问题没能被哨兵ping通而导致的更换主服务器。在多哨兵的情况下,当一个哨兵发现问题,就会做一个类似于发起投票的工作,之后其他哨兵也会尝试ping故障服务器,然后得出自己的结论,当认为服务器宕机的哨兵达到一定的标准,就会采取行动。

 

搭建主从+哨兵

原理 我们理解的差不多了,之后就试试搭建一个主从+哨兵的服务

作者在这里选择搭建一主两从

主服务器的配置文件使用默认的,就不展示了,注意哨兵模式主从同步不可以绑定127.0.0.1和0.0.0.0,否则主服务器宕机也无法投票得到新的主服务器

从服务器的配置如下,新建一个文件,注意后缀名为.conf

# 使得Redis服务器可以跨网络访问
bind 0.0.0.0
# 设置密码
requirepass "123456"
# 指定主服务器,注意:有关slaveof的配置只是配置从服务器,主服务器不需要配置
slaveof 192.168.43.38 6379
# 主服务器密码,注意:有关slaveof的配置只是配置从服务器,主服务器不需要配置
masterauth 123456

#启动端口
port 6079

接下来我们启动一下试试看:启动命令 redis-server.exe + 配置文件,如下图,启动从服务器命令相同,更换配置文件即可

从主服务器打印出的信息可以看到6079和6179两个端口的从服务器都成功与主服务器关联,之后我们测试一下

redis-cli.exe命令进入主服务器,如果有密码记得加参数 -a,举例为:redis-cli.exe -a 123456

设置一个aaa key,值为111

进入任意一个从服务器查看,注意进入从服务器需要加参数-p为从服务器端口号

 发现可以get到这个值,说明我的主从搭建完成

接下来我们设置哨兵,新建文件,尾缀名为.conf

sentinel myid 859fe0cf486ce0872bc03a3ab74d342e153d87b6
#监听主服务器
sentinel monitor mymaster 192.168.43.38 6079 1
sentinel down-after-milliseconds mymaster 500
#超时设置
sentinel failover-timeout mymaster 1500
sentinel auth-pass mymaster 123456
protected-mode no
# Generated by CONFIG REWRITE
port 26379
#文件位置
dir "D:\\redis"
sentinel config-epoch mymaster 4051
sentinel leader-epoch mymaster 4051
#监听的从服务器
sentinel known-slave mymaster 192.168.43.38 6379
sentinel known-slave mymaster 192.168.43.38 6179
sentinel current-epoch 4051

启动一下哨兵

然后尝试关掉主服务器

可以看到,在6079端口的服务器被选为新的主服务器 

完成

发布了41 篇原创文章 · 获赞 75 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_44407699/article/details/104788764