首页  

redis 主从 哨兵 集群机制     所属分类 redis 浏览量 1339
复制 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组件版本查看

华宝油气基金

投行三百年简史