首页   快速返回

redis 主从 哨兵 集群机制     所属分类 redis
复制 replication
master 可读写 
slave 一般只读

一个 master 可以有多个 slave ,一个 slave 只能有一个 master

slave配置
conf 文件加入 slaveof ip port 
或者 启动时加参数 
redis-server --port 6380 --slaveof 127.0.0.1 6379 
 
复制原理
slave 启动时,向 master 发送 sync 命令,master 接收到 sync 后 开始在后台保存快照rdb,
保存快照期间收到的命名缓存起来,快照完成时,master 将快照和缓存的命令 发送给slave ,复制初始化结束。
之后,master 收到 写入后 立即 异步发送 给 slave 。 
增量复制

master执行完写入后立即将结果返回客户端,并异步发送命令给slave 


哨兵  Sentinel
高可用 自动切换主从 自动化系统监控和故障恢复功能。

两个主要功能
监控redis 主从是否正常运行
主出现故障自动将从切换为主数据库


主从查看

127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:0
master_replid:02d36548206bf4b345461b7418f2331ddf76741a
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0



sentinel monitor  $master-name  $ip $redis-port $quorum

Tells Sentinel to monitor this master, 
and to consider it in O_DOWN (Objectively Down) state only if at least $quorum sentinels agree.


一主两从1哨兵配置

redis-server --port 6379 
redis-server --port 6380 --slaveof 192.168.0.167 6379 
redis-server --port 6381 --slaveof 192.168.0.167 6379

redis-sentinel sentinel.conf 
哨兵配置文件 sentinel.conf 
sentinel monitor mymaster 192.168.0.167 6379 1 
        
哨兵配置需要使用真实ip
否则 Java 客户端 通过哨兵会连到 127.0.0.1 上

主从切换过程
选主 ,slave leader升级为master 
其他slave修改为新master的slave 
客户端修改连接 
老的master如果重启成功,变为新master的slave

集群

16384 个 slot , 每个redis分配 一些slot,
hash_slot = crc16(key) mod 16384 

集群 至少 3主3从,每个实例使用不同的配置文件,主从不用配置,集群会自己选。


开启集群
cluster-enabled yes
cluster-config-file nodes-6382.conf

用集群工具部署集群

./redis-trib.rb create --replicas 1 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 127.0.0.1:6385


登录任一台redis,执行 info cluster,提示cluster_enabled:1

集群过程
redis-trib.rb 以客户端的身份尝试连接所有的节点,并发送PING命令以确定节点能够正常服务。
如果有任何节点无法连接,则创建失败。
发送 INFO 命令获取每个节点的运行ID以及是否开启了集群功能(即cluster_enabled为1)。 
准备就绪后集群会向每个节点发送 CLUSTER MEET命令,格式为 CLUSTER MEET ip port,
集群节点之间互相通讯 ,发现集群节点

redis-trib.rb 分配主从节点,尽量保证master运行在不同机器上, 
master和 slave 运行在 不同的机器上,保证高可用 和 容灾能力

3主3从,当1个主故障,把从选为主,若没有slave 可以恢复  。。。

Redis aerospike elasticsearch 集群机制对比

上一篇     下一篇
Jedis客户端分片机制

一致性hash与treemap

MapReduce和Tez比较

CDH组件版本查看

华宝油气基金

投行三百年简史