redis-哨兵和集群

哨兵:

一、哨兵简介:
主机宕机时,需要找一个slave升级为master,并通知其它slave连接至该新的master。
问题来了,谁来确认master宕机了?怎么找一个新的主机成为master?修改配置后,,原始的主机恢复了怎么办?
哨兵是一个分布式系统,用于对主从结构中的每台服务器进行监控,当出现故障时通过投票机制选择新的master并将所有slave连接到新的master。

1、哨兵的作用:
1)监控:

不断地检测master和slave是否横穿运行。master存货检测、master与slave运行情况检测。
2)通知:
当被监控的服务器出现问题时,向其他哨兵间或客户端发送通知。
3)自动故障转移:
断开master与slave连接,选取一个slave作为master,将其他slave连接到新的master,并告知客户端新的服务器地址。

2、注意事项:
1)哨兵也是一台redis服务器,只是不提供数据服务
2)通常烧饼配置数量为单数

二、启动哨兵模式:
哨兵配置文件在redis-4.0.0/sentinel.conf
port 26379 #哨兵服务器端口号,通常是服务器端口前面加2
dir /tmp #哨兵工作信息存储目录
sentinel monitor mymaster 127.0.0.1 6379 2 #前面为任意名,后面依次为监控服务器的IP、端口,最后一位数字为有多少个哨兵监控到服务器挂了,则判定为服务器宕机。通常设置为哨兵个数一半的值+1
sentinel down-after-milliseconds mymaster 30000 #连接主机多久未响应判断为宕机,单位毫秒
sentinel parallel-syncs mymaster 1 #新master上任时,一次多少个服务器进行数据同步。值越大同步越快,同时cpu压力越大
sentinel failover-timeout mymaster 180000 #同步数据时的超时时间,若同步时间超过设定值则认为同步超时。单位为毫秒
启动哨兵:
redis-sentinel sentinel-端口号.conf (使用配置文件命令启动哨兵)
启动顺序为,master->slave->哨兵

三、哨兵的工作原理:
1、监控:

sentinel给master发送info指令查询信息,然后拿到其它sentinel的信息,再给其它sentinel发送info拿到其它哨兵的信息。所有sentinel相互连接,只要有一个sentinel拿到新的信息,就会发给其他sentinel,快速实现信息共享。
2、通知阶段:
每个sentinel给监控master和slave发hallo进行监控。并将消息发到sentinel内网,同步sentinel间的消息。
3、故障转移:
1)一个sentinel监控到一个master宕机,会将master标记为sdown,并将消息发给到sentinel内网,其他seninel会去确认master是否断联。当半数的sentinel(在配置文件中配置)认为master宕机,则内部标记该master为宕机状态odown。
2)sentinel内部投票确定一个sentinel处理故障,开始选择备选的master,备选master有4个必要条件:
①选择在线的服务器
②向每个slave发hello,选择响应速度快的,慢的pass掉
③pass掉与原来master断开时间久的
④比较slave的优先级,及数据同步偏移量offset。如果偏移量相同就比较runid,选择runid小的


集群:

一、集群简介:
集群是使用网络将若干台计算机联通起来,并提供统一的管理方式,使其对外呈现单机的服务效果。当多个master连在一起分散服务器访问压力、存储压力,降低单台服务器宕机带来的业务灾难。

二、Redis集群结构设计:
1、数据存储设计

通过算法设计,计算出key应该保存的位置
将所有的存储空间计划切割成16384份,每台主机保存一部分;每份代表的是一个存储空间,不是一个key的保存空间
将key按照计算出的结果放到对应的存储空间。
2、内部通讯设计
各个数据相互通信,保存各个库中槽的编号数据
一次命中,直接返回
一次未命中,存储空间直接告知数据具体位置,保证最多2次命中

三、cluster集群结构搭建:
配置文件:

cluster-enable yes|no (设置加入cluster,成为其中的节点)
cluster-config-file (cluster配置文件名,该文件自动生成,仅用于快速查询文件内容)
cluster-node-timeout (节点服务响应超时时间,用于判定该节点是否下线或切换为从节点)
cluster-migration-barrier (master连接的slave最小数量)
操作指令:
redis-cli -c -p 端口号 (连接服务器,当操作数据时,服务器会根据key值重定向将cli连接至合适的master)
cluster nodes (查看集群节点信息)
cluster replicate (进入一个从节点redis,切换其主节点)
cluster meet ip:port (发现一个新节点,新增主节点)
cluster forget (忽略一个没有solt的节点)
cluster failover (手动转移故障)
注意事项:
master掉线后,其它slave会升级为master。当掉线的master再次上线时,会变为slave。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值