Redis   发布时间:2022-05-11  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Redis系列八:redis主从复制和哨兵大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

一、redis主从复制

主从复制:主节点负责写数据,从节点负责读数据,主节点定期把数据同步到从节点保证数据的一致性

1. 主从复制的相关操作

a,配置主从复制方式一、新增redis6380.conf,加入 slaveof 192.168.152.128 6379,在6379启动完后再启6380,完成配置;b,配置主从复制方式二、redis-server --slaveof 192.168.152.128 6379 临时生效

c,查看状态:info Replicationd,断开主从复制:在slave节点,执行6380:>slaveof no onee,断开后再变成主从复制:6380:> slaveof 192.168.152.128 6379f,数据较重要的节点,主从复制时使用密码验证: requirepasse,从节点建议用只读模式slave-read-only=yes,若从节点修改数据,主从数据不一致 h,传输延迟:主从一般部署在不同机器上,复制时存在网络延时问题,redis提供repl-disable-tcp-nodelay参数决定是否关闭TCP_NODELAY,默认为关闭参数关闭时:无论大小都会及时发布到从节点,占带宽,适用于主从网络好的场景,参数启用时:主节点合并所有数据成TCP包节省带宽,默认为40毫秒发一次,取决于内核,主从的同步延迟40毫秒,适用于网络环境复杂或带宽紧张,如跨机房

2. redis主从拓扑

a)一主一从:用于主节点@R_854_10772@从节点,当主节点的“写”命令并发高且需要持久化,可以只在从节点开启AOF(主节点不需要),这样即保证了数据的安全性,也避免持久化对主节点的影响 

 

Redis系列八:redis主从复制和哨兵

b)一主多从:针对“读”较多的场景,“读”由多个从节点来分担,但节点越多,主节点同步到多节点的次数也越多,影响带宽,也加重主节点的稳定

 

Redis系列八:redis主从复制和哨兵

C)树状主从:一主多从的缺点(主节点推送次数多压力大)可用些方案解决,主节点只推送一次数据到从节点B,再由从节点B推送到C,减轻主节点推送的压力。

Redis系列八:redis主从复制和哨兵

3. 主从复制原理

 

Redis系列八:redis主从复制和哨兵

4. 数据同步

redis 2.8版本以上使用psync命令完成同步,过程分“全量”与“部分”复制全量复制:一般用于初次复制场景(第一次建立SLAVE后全量)部分复制:网络出现问题,从节点再次连接主节点时,主节点补发缺少的数据,每次数据增量同步心跳:主从有长连接心跳,主节点默认每10S向从节点发ping命令,repl-ping-slave-period控制发送频率

5. 主从的缺点

a)主从复制,若主节点出现问题,则不能提供服务,需要人工修改配置将从变主b)主从复制主节点的写能力单机,能力有限C)单机节点的存储能力也有限

6.主从故障如何@R_854_10772@

a)主节点(master)故障,从节点slave-1端执行 slaveof no one后变成新主节点;b)其它的节点成为新主节点的从节点,并从新节点复制数据;C)需要人工干预,无法实现高可用。

Redis系列八:redis主从复制和哨兵

二、redis哨兵机制(SenTinel)

1. 为什么要有哨兵机制?

       哨兵机制的出现是为了解决主从复制的缺点的

2. 哨兵机制(senTinel)的高可用

  原理:当主节点出现故障时,由redis SenTinel自动完成故障发现和转移,并通知应用方,实现高可用性。

Redis系列八:redis主从复制和哨兵

其实整个过程只需要一个哨兵节点来完成,首先使用Raft算法(选举算法)实现选举机制,选出一个哨兵节点来完成转移和通知

3. 哨兵的定时监控任务

任务1:每个哨兵节点每10秒会向主节点和从节点发送info命令获取最拓扑结构图,哨兵配置时只要配置对主节点的监控即可,通过向主节点发送info,获取从节点的信息,并当有新的从节点加入时可以马上感知到

Redis系列八:redis主从复制和哨兵

任务2:每个哨兵节点每隔2秒会向redis数据节点的指定频道上发送该哨兵节点对于主节点的判断以及当前哨兵节点的信息,同时每个哨兵节点也会订阅该频道,来了解其它哨兵节点的信息及对主节点的判断,其实就是通过消息publish和subscribe来完成的

Redis系列八:redis主从复制和哨兵

 任务3:每隔1秒每个哨兵会向主节点、从节点及其余哨兵节点发送一次ping命令做一次心跳检测,这个也是哨兵用来判断节点是否正常的重要依据

Redis系列八:redis主从复制和哨兵

3

 

Redis系列八:redis主从复制和哨兵

4. 领导者哨兵选举流程

a)每个在线的哨兵节点都可以成为领导者,当它确认(比如哨兵3)主节点下线时,会向其它哨兵发is-master-down-by-addr命令,征求判断并要求将自己设置为领导者,由领导者处理@R_854_10772@;b)当其它哨兵收到此命令时,可以同意或者拒绝它成为领导者;C)如果哨兵3发现自己在选举的票数大于等于num(senTinels)/2+1时,将成为领导者,如果没有超过,继续选举…………

 

Redis系列八:redis主从复制和哨兵

5. @R_854_10772@机制

senTinel回复了一个错误消息,那么这个

 

Redis系列八:redis主从复制和哨兵

 b) 3负载处理主节点的@R_854_10772@

Redis系列八:redis主从复制和哨兵

 C) SenTinel3自动执行

 

Redis系列八:redis主从复制和哨兵

 

    1. 升级主节点,

         2. 

         3. 通知客户端主节点已更换

         4

 d) redis senTinel

Redis系列八:redis主从复制和哨兵

6. 哨兵机制-@R_854_10772@详细流程-确认主节点

回复过哨兵

dis.conf

最完整的从节点

3

Redis系列八:redis主从复制和哨兵

1. redis

  A)dis6379.conf

修改 requirepass 12345678

  B) dis6380.confdis6381.conf: 配置都一样

修改 requirepass 12345678,

加上访问主节点的密码masterauth 12345678,加上

    注意当主从起来后,主节点可读写,从节点只可读不可写

2. dis senTinel(

       /usr/local/bin/conf/senTinel_26379.conf  

       /usr/local/bin/conf/senTinel_26380.conf

       /usr/local/bin/conf/senTinel_26381.conf

文件的端口改成: 26379   26380   26381

senTinel monitor mymaster 192.168.152.128 6379 2  //

      senTinel auth-pass mymaster 12345678     //

三个配置除端口外,其它一样。

3. 修改每个senTinel.conf

senTinel monitor mymaster 192.168.152.128 637@R_618_11201@  

//2

senTinel auth-pass mymaster 12345678  //senTinel

senTinel config-epoch mymaster 2  //

senTinel leader-epoch mymaster 2

senTinel failover-timeout mymastera 180000 //

a,

b,180S时,则@R_854_10772@失败

c,180S转移失败

senTinel down-after-milliseconds mymastera 300000//senTinel300S回复,可能就认定为此主节点出现故障了……

senTinel parallel-syncs mymastera 1 //1一个一个复制主节点数据,如果为3

4. dis服务和

dis里面的标绿色的文件都拷贝到 usr/local/bin目录下,然后再再bin目录下新建一个conf文件夹存放配置好的redis主从配置文件和哨兵配置文件

Redis系列八:redis主从复制和哨兵

Redis系列八:redis主从复制和哨兵

b)启动主从复制服务,先启动主再启动从

主:./redis-server conf/redis6379.conf &

从:

  ./redis-server conf/redis6380.conf &

  ./redis-server conf/redis6381.conf &      

Redis系列八:redis主从复制和哨兵

Redis系列八:redis主从复制和哨兵

senTinel

       ./redis-senTinel conf/senTinel_26379.conf &

@H_944_673@

       ./redis-senTinel conf/senTinel_26380.conf &

Redis系列八:redis主从复制和哨兵

     

 ./redis-senTinel conf/senTinel_26381.conf &

Redis系列八:redis主从复制和哨兵

到此服务全部启动完毕

Redis系列八:redis主从复制和哨兵

连接到6379的redis的服务,可看到6379就是主节点,他有6380和6381两个从节点

title="redis系列八:redis主从复制和哨兵" alt="redis系列八:redis主从复制和哨兵" src="http://code.js-code.com/res/2019/02-10/10/046ea2869a403e078ed0a9149ae41192.png" >

5. kill -9 6379  dis

Redis系列八:redis主从复制和哨兵

Redis系列八:redis主从复制和哨兵

Redis系列八:redis主从复制和哨兵

重新启动6379以后变为6380的从节点

Redis系列八:redis主从复制和哨兵

Redis系列八:redis主从复制和哨兵

6380

6380升级为主节点info Replication     

senTinel_26379.conf6380 2

redis6379.conf6380,

redis SenTinel

部署建议

a

b

c一个主节点或多个主节点

    N

     3一个主节点

大佬总结

以上是大佬教程为你收集整理的Redis系列八:redis主从复制和哨兵全部内容,希望文章能够帮你解决Redis系列八:redis主从复制和哨兵所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:执行