• redis基础篇~哨兵


    一 redis 2,8+版本 多线程模式
    二 哨兵模式通信
      1 sentinel中各个sentinel也有互相通信,保持健康状态
      2 sentinel中各个sentinel 不断地检查你的主服务器和从服务器是否运作正常(默认1Sping一次) 如果一个服务器没有在 master-down-after-milliseconds 选项所指定的时间内, 对向它发送 PING 命令的 Sentinel 返回一个有效回复(valid reply), 那么 Sentinel 就会将这个服务器标记为主观下线。
      3 每10秒会对每个master、slave执行info。这样可以:发现slave节点、确认主从关系,确保最新的服务被发现
        每1秒,每个sentinel会对其他sentinel、和master、slave执行ping操作。
          每2秒,每个sentinel通过master节点的channel交换信息(发布/订阅)
    三 主观下线和客观下线
        1 主观下线  假设主服务器宕机,单个哨兵进程先检测到这个结果,系统并不会马上进行failover过程,仅仅是哨兵1主观的认为主服务器不可用 这个过程称之为主观下线 sdown
        2 客观下线  当剩余的哨兵成员也检测到主服务器不可用,并且数量达到QUNUM时,那么哨兵之间就会进行一次投票,投票的结果由一个哨兵发起,进行failover操作。切换成功后,就会通过发布订阅模式,让各个哨兵把自己监控的从服务器实现切换主机,这个过程称为客观下线 odown
    四 哨兵模式高可用
       1 通过多数哨兵成员判定master已死,投票产生新的master
       2 单个哨兵进行故障转移并将其他slave指向new master
       3 同时会向所有其他哨兵成员发布订阅最新消息,用以提供健康检测和客户端连接服务
       4 当哨兵模式进行切换时会自动修改哨兵和redis的配置文件,自动维护
       5  两种判定方式

         每次一个哨兵要做主备切换,首先需要quorum数量的哨兵认为odown,然后选举出一个哨兵来做切换,这个哨兵还得得到majority哨兵的授权,才能正式执行切换

         2  如果quorum < majority,比如5个哨兵,majority就是3,quorum设置为2,那么就3个哨兵授权就可以执行切换

         3  但是如果quorum >= majority,那么必须quorum数量的哨兵都授权,比如5个哨兵,quorum是5,那么必须5个哨兵都同意授权,才能执行切换

    五 哨兵模式重要
      1 哨兵监控的master,主从配置一样
         sentinel monitor master_name(用来在哨兵内控志) master_ip master_port available_member
       2 master或slave多长时间(默认30秒)不能使用后标记为s_down状态。
         sentinel down-after-milliseconds mymaster 5000(默认单位毫秒)
      3 设置master和slaves验证密码
         sentinel auth-pass mymaster 123456
      4  配置当故障发生时需要执行的脚本
         sentinel client-reconfig-script mymaster /var/lib/redis/failover.sh
      <master-name> <role> <state> <from-ip> <from-port> <to-ip> <to-port> 可以传递到脚本里的参数
     5 redis哨兵在启动后会自动添加一些配置信息重写到配置文件,属于自动生成
    六 主动切换主从
      1 slaveof old_master 新主加入集群,作为从进行数据同步 (new_master)
      2  config set slave-priority N 调整新主的SLAVE权重,这样切换时会优先成为new_master(new_master)
      3  config rewrite 将当前修改写入redis.conf配置文件中 (new_master)
      4  sentinel failover old_master  手动触发哨兵进行切换 (sentinel)
      5  进行检测集群是否正常提供服务
      6 每个哨兵节点执行 sentinel reset new_master 清除掉历史遗留信息 重新进行获取最新配置 (sentinel)
    七 哨兵配置文件发生异动
        1.新的从服务被侦测到,2.当异常发生,有从服务被提升为主服务时,3.新的哨兵被侦测到时。4 哨兵集群采用的是raft协议
     八 命令汇总
         sentinel failover master01 执行切换,如果架构正常,再执行可以切换过来(常用)
         sentinel reset  master01  清理历史信息 (常用)
         sentinel remove master01 移除监控 (常用)
         shutdown 关闭哨兵服务 (常用)
         sentinel  masters  获取所有主从信息
         sentinel slaves master01 获取指定集群
         sentinel get-master-addr-by-name maste01 获取指定主库的连接信息 
         info sentinel   查看具体的哨兵和监控redis实例信息
     
    九 client list详解
      一 cmd
         1 sentinel 哨兵过滤的话普通IP创建连接会执行这个
         2 role
         3 ping 哨兵健康检测
         4 subscribe 订阅
         5 常规客户端命令
      二 name
        客户端的名字,如果为空一般为程序发起的连接,非哨兵连接
      三 1 age和idle分别代表当前客户端已经连接的时间和最近一次的空闲时间
           2 age和idle的数字一样就表示空闲连
      四  哨兵和redis-server都能执行client list
      五 补充 哨兵可以看成一个订阅的redis,所以适用大部分redis命令
    十  获取信息
      1 info 查看最后一块   2 查看哨兵的相关log日志 注意+monitor +slave +sentinel  +sdown(代表出问题,这个需要注意) -sdown代表恢复
      当原来的主挂掉后可以重新加入作为集群.只要启动即可 日志中会有-sdown标记
     2  程序访问哨兵直接添加哨兵所有集群即可 不用配置VIP
    十一 健康检测 与 元信息重置
    1 通过info|grep status 判断哨兵是否正常 正常状态是OK
    2 redis哨兵每个节点都拥有各自的信息,他们之间的交换会产生并集而并非消极,当迁移哨兵服务器时会发现新的哨兵服务器里出现+sdown slave,这是因为老的配置文件存在历史的slave 变更,属于正常现象 通过
    3  将所有的哨兵服务器放置在独立的服务器,节点为三个
    4 如果不清除历史文件的信息 通过info统计的哨兵包含所有历史信息,比如原来有3个 迁移过后 就会变成6个
    十二 迁移相关
      1 当进行哨兵迁移时,DNS指向新的哨兵部署集群,发现原有哨兵集群还有链接,这是正常现象,链接会一直保持ES状态.关闭相关服务即可,不会主动进行释放
    十三 切换通知邮件
      配置文件  sentinel client-reconfig-script mymaster /usr/local/bin/reconfig.sh
      脚本参数  args=(<master-name> <role> <state> <from-ip> <from-port> <to-ip> <to-port>) 然后根$1-$7 进行自定义脚本实现
      脚本部署 每个哨兵服务器都进行部署

  • 相关阅读:
    645. 错误的集合『简单』
    1078. Bigram 分词『简单』
    1018. 可被 5 整除的二进制前缀『简单』
    1010. 总持续时间可被 60 整除的歌曲『简单』
    1417. 重新格式化字符串『简单』
    1413. 逐步求和得到正数的最小值『简单』
    1394. 找出数组中的幸运数『简单』
    1374. 生成每种字符都是奇数个的字符串『简单』
    1365. 有多少小于当前数字的数字『简单』
    1360. 日期之间隔几天『简单』
  • 原文地址:https://www.cnblogs.com/danhuangpai/p/13744725.html
Copyright © 2020-2023  润新知