Redis的主从集群搭建
迪丽瓦拉
2024-06-02 19:28:14
0

主从集群

在服务开发中,单机都会存在单点故障的问题,即服务部署在一台服务器上,一旦服务器宕机服务就不可用,所以为了让服务高可用,分布式服务就出现了,将同一服务部署到多台机器上,即使其中几台服务器宕机,只要有一台服务器可用服务就可用。

Redis 也是一样,为了解决单机故障引入了主从模式,但主从模式存在一个问题:master 节点故障后服务,需要人为的手动将 slave 节点切换成为 master 节点后服务才恢复。Redis 为解决这一问题又引入了哨兵模式,哨兵模式能在 master 节点故障后能自动将 slave 节点提升成 master 节点,不需要人工干预操作就能恢复服务可用。但是主从模式、哨兵模式都没有达到真正的数据 sharding 存储,每个 Redis 实例中存储的都是全量数据,所以 Redis cluster 就诞生了,实现了真正的数据分片存储。但是由于 Redis cluster 发布得比较晚(2015 年才发布正式版 ),各大厂等不及了,陆陆续续开发了自己的 Redis 数据分片集群模式,比如:Twemproxy、Codis 等。

优缺点

优点:主从结构具有读写分离,提高效率、数据备份,提供多个副本等优点。

不足: 最大的不足就是主从模式不具备自动容错和恢复功能,主节点故障,集群则无法进行工作,可用性比较低,从节点升主节点需要人工手动干预。

首先在每台服务器上部署Redis,可以单独运行,然后在此基础上进行修改

案例中192.168.17.22为master ip,192.168.254.8为slave节点

搭建集群时的错误信息

默认redis的日志目录是/var/log/redis_6379.log,如果不是可以查看redis.conf文件中的logfile值查看具体错误

master节点

修改Redis的redis.conf文件,将daemonize参数为yes,另外将bind修改为当前master的ip

image-20230313163545691

image-20230313163722688image-20230313163731196

slave节点

修改slave节点上的bind为当前服务器的ip地址,修改daemonize为yes,打开replicaof参数并在后面配置master节点的IP与端口,一般master节点都有连接密码所以还需要添加参数masterauth,后面为master节点的密码

image-20230313164157001

image-20230313164000899

image-20230313164125395

重启master和slave节点

lz是通过ps指令查看到redis的pid,然后使用kill指令进行退出

# 获取Redis的pid
ps -ef|grep redis
# 停止redis的进程
kill -9 pid
# 启动Redis(redis的bin目录下启动)
./redis-server redis.conf

查看节点状态

master状态

# 进入redis cli端
./redis-cli -h 192.168.17.22 -p 6379 -a pwd
# redis的cli中输入指令
info replication

image-20230313164915508

slave状态

# 进入redis cli端
./redis-cli -h 192.168.254.8 -p 6379 -a pwd
# redis的cli中输入指令
info replication

image-20230313165534316

测试

在master上set数据,然后在slave上get数据,能获取到就说明搭建成功。如果想搭建多个slave节点,可以在其他机器上进行上面slave的操作就可以

相关内容