Redis相关笔记(4)主从复制及Sentiel

Redis相关笔记(4)集群及Sentiel

1.集群

创建redis集群

配置项:

replica-serve-stale-data yes   #当此配置项为yes时,即使从机失去与主机的链接,重新建立数据同步时,从机依然作为服务响应请求
                               #配置为no时,重新建立数据同步时,从机不会向请求提供服务
replica-read-only yes          #为yes时从机只提供读业务,为no时从机提供读写业务

常用命令:

> replicaof [ip] [端口] //将此redis设置为所选的ip+端口的redistribution服务的从机   例如replicaof 127.0.0.1 6379
> replicaof no one	//退出从机模式,变回主机

当一个redis集群中的主机发生故障,从网络中消失时,可以利用replicaof 命令重新选择新的主机或是成为主机。

主从数据同步原理:

1、从节点 发送psync 复制请求 : 默认值为 ? 和 -1

2、主节点根据判断为全量复制回复 : full resync(全量复制)、continue(继续 ,出现在部分复制或者是增量复制)、err(错误)

3、从节点接受响应,保存 运行id 和偏移量

4、主节点执行bgsave 保存rdb文件到本地 ,

5、发送给从节点,从节点把接受的rdb文件保存到本地,并直接作为从节点的数据文件

6、从节点保存文件,并记录。主节点仍然响应

7、从节点删除自身的旧数据,加载rdb文件

8、加载完成后,会开启AOF持久化,进行学习

主机操作复制:主机会将写操作异步发送给所有从机,从机在接收到操作后更新本地的数据。

2.sentinel

哨兵机制的引入是为了省去当主机服务发生故障时手动配置新主机的问题(程序比人稳定)

redis自带哨兵机制:

配置:

port 26379					#配置哨兵的端口
sentinel monitor mymaster 127.0.0.1 6379 2  	#配置被选为主机的ip 端口 与投票权重值

redis哨兵集群:

sentinel会以每秒一次的频率向主从和其他sentienl发送ping命令,当超过设置的down-after-milliseconds后未收到的有效的响应会认为该master主观下线,接着向其他sentiel进行确认,接收到足够数量的后,sentinel会判定该服务器客观下线
该sentinel会想其他sentinel发送请求其他sentinel视自己为leader,每个sentinel每次选举会自增配置纪元,每个sentinel只能选择一次,当收到半数以上的票,sentinel会进行slave的选举
slave的选举.进行不健康的slave排除(主观下线的,大于5秒未回应的,与master节点失联的),对健康节点进行排序(设置的优先级,若相同进行下一步,选择偏移量大的从节点)
选举出的slave会执行slaveof no one成为主节点,向其他slave发送命令其成为新的master的slave,监视旧的master恢复后成为新的master的slave并进行同步

简单说就是每当有哨兵发现主机故障,那他会向其他哨兵确认主机是否故障,如果超过半数的哨兵都认为主机故障,则哨兵将通过投票重新选出主机。

启动哨兵:

# redis-server [配置的路径] --sentinel

哨兵间的通讯通过订阅服务来完成。

posted @ 2021-09-01 22:11  飞杨煎生物  阅读(121)  评论(0)    收藏  举报