Redis主从哨兵Cluster集群

Redis单节点有什么问题?

  1. 单点故障
  2. 容量有限
  3. 承受压力有限

Redis集群搭建原则

AKF 扩展立方、CAP 原则

准备工作

  1. 使用 /root/soft/redis-5.0.5/utils 下的 install_server.sh 安装6379、6380、6381 这3个服务
  2. 复制 /etc/redis/ 下的配置文件到 test 目录
  3. 修改配置文件
  4. daemonize no //前台运行
  5. appendonly no //禁用aof
  6. #logfile /var/log/redis_6379.log //禁用日志文件,让日志输出来控制台
  7. 删除 /var/lib/redis 目录下的持久化文件,文件夹保留
  8. 启动 6379、6380、6381 三个实例 redis-server ~/test/6379.conf
  9. 启动 3 个对应端口的客户端 redis-cli -p 6379

主从

主备和主从区别是什么

主备:客户端只访问主,主挂了,备顶上。
主从:客户端同时访问主和从,可以配置从只读或者读写

主从复制搭建

  1. replicaof localhost 6379 // Redis 5.0以后使用 replicaof 追随
  2. 同步时,主会生成rdb文件全量同步给slave
    191:M 18 Apr 2020 09:31:12.823 * Starting BGSAVE for SYNC with target: disk
    191:M 18 Apr 2020 09:31:12.823 * Background saving started by pid 374
    374:C 18 Apr 2020 09:31:12.828 * DB saved on disk
    374:C 18 Apr 2020 09:31:12.831 * RDB: 0 MB of memory used by copy-on-write
    191:M 18 Apr 2020 09:31:12.923 * Background saving terminated with success
    191:M 18 Apr 2020 09:31:12.923 * Synchronization with replica 127.0.0.1:6380 succeeded
    
  3. 同步时slave会先清空自己的内容
    256:S 18 Apr 2020 09:31:12.923 * MASTER <-> REPLICA sync: Flushing old data
    256:S 18 Apr 2020 09:31:12.923 * MASTER <-> REPLICA sync: Loading DB in memory
    
  4. 未开启 aof 时,slave 挂掉后,重新连回主,增量更新
    191:M 18 Apr 2020 09:45:11.727 # Connection with replica 127.0.0.1:6381 lost.
    191:M 18 Apr 2020 09:45:53.210 * Replica 127.0.0.1:6381 asks for synchronization
    191:M 18 Apr 2020 09:45:53.211 * Partial resynchronization request from 127.0.0.1:6381 accepted. Sending 135 bytes of backlog starting from offset 1202.
    
  5. 开启 aof 后,slave 挂掉后,重新连回主,全量更新
  6. 主挂了以后,slave 可使用 REPLICAOF no one 把自己变成主

配置文件中几个与主从复制相关的配置

#主从复制过程中 从是否支持查
replica-serve-stale-data yes
#从节点只支持读
replica-read-only yes
#默认先经常磁盘IO生成rdb文件,再走网络传输。大带宽时走直接走网络速度更快
repl-diskless-sync no
#增量复制
repl-backlog-size 1mb
#主至少需要几个从节点才能写入
min-replicas-to-write 3
#指定网络延迟的最大值
min-replicas-max-lag 10

现在虽然我们已经是主从集群了对吧,但是主节点还是一个单节点,不能保证高可用。如果主挂了就凉凉了。我们总不能每次手动让从顶上去当主吧。Redis也想到了这点。Redis中可以使用哨兵来监控主的健康状态。
在这里插入图片描述

哨兵

新建哨兵配置文件

[root@d3c5a983ba7b test]# vi 26379.conf
[root@d3c5a983ba7b test]# cat 26379.conf
port 26379
sentinel monitor mymaster 127.0.0.1 6379 2

拷贝 2 份,端口分别为 26380,26381,修改文件内端口号

[root@d3c5a983ba7b test]# cp 26379.conf 26380.conf
[root@d3c5a983ba7b test]# cp 26379.conf 26381.conf
[root@d3c5a983ba7b test]# vi 26380.conf
[root@d3c5a983ba7b test]# vi 26381.conf
[root@d3c5a983ba7b test]# cat 26380.conf
port 26380
sentinel monitor mymaster 127.0.0.1 6379 2
[root@d3c5a983ba7b test]# cat 26381.conf
port 26381
sentinel monitor mymaster 127.0.0.1 6379 2

sentinel monitor mymaster 127.0.0.1 6379 2
这行配置指示 Sentinel 去监视一个名为 mymaster 的主服务器, 这个主服务器的 IP 地址为 127.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值