• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Redis Sentinel实现哨兵模式搭建小结

    Redis哨兵模式,用现在流行的话可以说就是一个“哨兵机器人”,给“哨兵机器人”进行相应的配置之后,这个"机器人"可以7*24小时工作,它能能够自动帮助你做一些事情,如监控,提醒,自动处理故障等。

    Redis-sentinel简介

    Redis-sentinel是Redis的作者antirez,因为Redis集群的被各大公司使用,每个公司要写自己的集群管理工具,于是antirez花了几个星期写出了Redis-sentinel。

    Redis 的 Sentinel 系统用于管理多个 Redis 服务器(instance),Redis 的 Sentinel 为Redis提供了高可用性。使用哨兵模式创建一个可以不用人为干预而应对各种故障的Redis部署。

    该系统执行以下三个任务:

    sentinel的分布式特性

    Redis Sentinel 是一个分布式系统, 你可以在一个架构中运行多个 Sentinel 进程(progress), 这些进程使用流言协议(gossip protocols)来接收关于主服务器是否下线的信息, 并使用投票协议(agreement protocols)来决定是否执行自动故障迁移, 以及选择哪个从服务器作为新的主服务器。

    单个sentinel进程来监控redis集群是不可靠的,当sentinel进程宕掉后(sentinel本身也有单点问题,single-point-of-failure)整个集群系统将无法按照预期的方式运行。所以有必要将sentinel集群,这样有几个好处:

    一个健壮的部署至少需要三个哨兵实例。

    三个哨兵实例应该放置在客户使用独立方式确认故障的计算机或虚拟机中。例如不同的物理机或不同可用区域的虚拟机。【本次讲解是一个机器上进行搭建,和多级是一个道理

    背景

    最近项目需求,接触到了Redis的搭建,简单记录下搭建过程中遇到的坑

    总体配置

    192.168.1.100:6379 -> master
    192.168.1.101:6379 -> slave
    192.168.1.102:6379 -> slave
    192.168.1.100:26379 -> sentinel
    192.168.1.101:26379 -> sentinel
    192.168.1.102:26379 -> sentinel

    搭建步骤

    1.安装redis

    # 解压
    tar -xvf /usr/local/redis-3.2.11.tar.gz
    
    mkdir -p /usr/local/redis/bin
    
    cp /usr/local/redis/src/{redis-benchmark,redis-check-aof,redis-check-rdb,redis-cli,redis-sentinel,redis-server,redis-trib.rb} /usr/local/redis/bin
    
    mkdir -p /u01/redis/{6379/{log,data,pid,conf},26379/{log,data,pid,conf}
    
    # 添加环境变量
    echo "export PATH=/usr/local/redis/bin:$PATH" >> /etc/profile
    source /etc/profile
    

    2.redis-6379配置

    redis节点配置基本如下,把如下配置分别cp到三台虚拟机的/u01/redis/6379/conf/redis_6379.conf

    bind 0.0.0.0
    protected-mode no
    daemonize yes
    pidfile "/u01/redis/6379/pid/redis_6379.pid"
    port 6379
    tcp-backlog 511
    timeout 0
    tcp-keepalive 0
    loglevel notice
    logfile "/u01/redis/6379/log/redis_6379.log"
    databases 16
    stop-writes-on-bgsave-error yes
    rdbcompression yes
    rdbchecksum yes
    dbfilename "dump.rdb"
    dir "/u01/redis/6379/data"
    slave-serve-stale-data yes
    slave-read-only yes
    repl-diskless-sync no
    repl-diskless-sync-delay 5
    repl-disable-tcp-nodelay no
    slave-priority 100
    min-slaves-to-write 1
    min-slaves-max-lag 10
    appendonly no
    appendfilename "appendonly.aof"
    appendfsync everysec
    no-appendfsync-on-rewrite no
    auto-aof-rewrite-percentage 100
    auto-aof-rewrite-min-size 64mb
    aof-load-truncated yes
    lua-time-limit 5000
    slowlog-log-slower-than 10000
    slowlog-max-len 128
    latency-monitor-threshold 0
    notify-keyspace-events ""
    hash-max-ziplist-entries 512
    hash-max-ziplist-value 64
    list-max-ziplist-entries 512

    启动服务

    # 在三台虚拟机上分别执行
    redis-server /u01/redis/6379/conf/redis_6379.conf

    建立主从关系

    # 在192.168.1.101
    redis-cli -p 6379 SLAVEOF 192.168.1.100 6379
    
    # 在192.168.1.102
    redis-cli -p 6379 SLAVEOF 192.168.1.100 6379
    

    查看Replication

    192.168.1.101:6379> info replication
    # Replication
    role:master
    connected_slaves:2
    min_slaves_good_slaves:2
    slave0:ip=192.168.1.102,port=6379,state=online,offset=9577826,lag=1
    slave1:ip=192.168.1.103,port=6379,state=online,offset=9577965,lag=0
    master_repl_offset:9577965
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:8529390
    repl_backlog_histlen:1048576
    
    192.168.1.102:6379> info replication
    # Replication
    role:slave
    master_host:192.168.1.101
    master_port:6379
    master_link_status:up
    master_last_io_seconds_ago:0
    master_sync_in_progress:0
    slave_repl_offset:9600220
    slave_priority:100
    slave_read_only:1
    connected_slaves:0
    min_slaves_good_slaves:0
    master_repl_offset:0
    repl_backlog_active:0
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:0
    repl_backlog_histlen:0
    
    192.168.1.103:6379> info replication
    # Replication
    role:slave
    master_host:192.168.1.101
    master_port:6379
    master_link_status:up
    master_last_io_seconds_ago:0
    master_sync_in_progress:0
    slave_repl_offset:9612675
    slave_priority:100
    slave_read_only:1
    connected_slaves:0
    min_slaves_good_slaves:0
    master_repl_offset:0
    repl_backlog_active:0
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:0
    repl_backlog_histlen:0

    3.sentinel-6379配置

    sentinel节点配置基本如下,把如下配置分别cp到三台虚拟机的/u01/redis/26379/conf/sentinel_26379.conf

    sentinel monitor mymaster 后监控的是redis中的master节点,也就是192.168.1.100,所以这个文件在三台机器上是相同的

    port 26379
    bind 0.0.0.0
    daemonize yes
    protected-mode no
    dir "/u01/redis/26379/tmp"
    logfile "/u01/redis/26379/log/sentinel_26379.log"
    sentinel monitor mymaster 192.168.1.100 6379 1

    等待启动完毕后观察/u01/redis/26379/conf/sentinel_26379.conf文件变化

    查看sentinel状态用info sentinel

    redis-cli -h 192.168.1.100 -p 26379 info sentinel
    
    # Sentinel
    sentinel_masters:1
    sentinel_tilt:0
    sentinel_running_scripts:0
    sentinel_scripts_queue_length:0
    sentinel_simulate_failure_flags:0
    master0:name=zhuanche01,status=ok,address=192.168.1.100:6379,slaves=2,sentinels=3
    
    

    总结

    我搭建的时候遇到了192.168.1.101、192.168.1.102上的sentinel启动后一段时间出错的问题,后来发现是没有监控master
    再就是出问题了多看log

    来年要多写笔记,年纪大了,记忆力越来越差!

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    您可能感兴趣的文章:
    • SpringBoot结合Redis哨兵模式的实现示例
    • 基于Docker搭建Redis一主两从三哨兵的实现
    • Redis安装配置与常用命令
    • redis命令行查看中文不乱码的方法(十六进制字符串处理)
    • 详解使用Redis SETNX 命令实现分布式锁
    • redis哨兵常用命令和监控示例详解
    上一篇:基于Redis无序集合如何实现禁止多端登录功能
    下一篇:关于redigo中PubSub的一点小坑分析
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Redis Sentinel实现哨兵模式搭建小结 Redis,Sentinel,实现,哨兵,模式,