精华内容
下载资源
问答
  • 引言: centos 7.5 版本 ; docker 20.10.8 1.拉取redis镜像 #根据docker hub 官网上进行版本选择 docker pull redis #查看镜像 docker images 2.服务器中创建文件夹 ...3.1搭建redis集群-编写docke

    引言: centos 7.5 版本 ; docker 20.10.8

    1.拉取redis镜像

    #根据docker hub 官网上进行版本选择  
    docker pull redis 
    #查看镜像
    docker images
    

    2.服务器中创建文件夹
    在这里插入图片描述
    这里我的路径是 /usr/local/docker/redis-sentinel
    redis 文件夹用于搭建 redis集群 3台
    sentinel 文件夹用于搭建 redis的哨兵服务 3台

    3.搭建redis集群

    3.1搭建redis集群-编写docker-compose.yml

    #这里我们使用docker-compose 进行批量搭建
    #将文件复制到相应目录  下面内容根据自身情况自定义
    ##这里一定一定要注意,yml文件对于格式要求非常严格!一个空格都不能错!!
    #强烈建议用idea进行编写。。。  别问我怎么知道的,都是眼泪!!!!
    

    yml文件对于格式要求非常严格!!
    上传服务器之前,一定要把带#的注释删除,切记切记!!

    version: '3.1'  #版本号必须要输入(自定义 例如:1.1 2.2.) 不然无法运行  
    services:
      master:
        image: redis  #镜像名称
        container_name: redis-master  #自定义docker容器
        #command和volumes下面细说
        command: redis-server /usr/local/etc/redis/redis.conf --replica-announce-ip 192.168.10.7 --replica-announce-port 6379
        ports:
          - 6379:6379    #docker容器对外映射端口:容器内部端口
        environment:
          # 设置时区为上海,否则时间会有问题
          - TZ=Asia/Shanghai
        volumes:
          - ./data/master_datadir:/data
          - ./conf/master_conf/redis.conf:/usr/local/etc/redis/redis.conf
          - ./logs/master_logs:/logs
      slave1:
        image: redis
        container_name: redis-slave-1
        command: redis-server /usr/local/etc/redis/redis.conf   --slaveof redis-master 6379 --replica-announce-ip 192.168.10.7 --replica-announce-port 6380
        ports:
          - 6380:6379
        environment:
          # 设置时区为上海,否则时间会有问题
          - TZ=Asia/Shanghai
        volumes:
          - ./data/slave1_datadir:/data
          - ./conf/slave1_conf/redis.conf:/usr/local/etc/redis/redis.conf
          - ./logs/slave1_logs:/logs
      slave2:
        image: redis
        container_name: redis-slave-2
        command: redis-server /usr/local/etc/redis/redis.conf  --slaveof redis-master 6379 --replica-announce-ip 192.168.10.7 --replica-announce-port 6381
        ports:
          - 6381:6379
        environment:
          # 设置时区为上海,否则时间会有问题
          - TZ=Asia/Shanghai
        volumes:
          - ./data/slave2_datadir:/data
          - ./conf/slave2_conf/redis.conf:/usr/local/etc/redis/redis.conf
          - ./logs/slave2_logs:/logs
    
    #command 容器启动指令
     command: 
     #将redis.conf 作为启动项
       redis-server /usr/local/etc/redis/redis.conf   
     #从机确定主机端口 主机名  主机端口
     --slaveof redis-master 6379 
     #设置当前服务的ip  这里必须用实际ip地址 不要用127.0.0.1
     --replica-announce-ip 192.168.10.7 
     #设置当前服务的端口号
     --replica-announce-port 6380
    
    #挂载卷  不会的同学,请自学docker
     volumes:
         #服务器路径 : docker内部路径 (默认,无需修改)
          - ./data/master_datadir:/data
          - ./conf/master_conf/redis.conf:/usr/local/etc/redis/redis.conf
          - ./logs/master_logs:/logs
    

    3.2搭建redis集群-编写redis.conf

    ##一定从官网下载reids安装包,获取该文件。并且和docker中镜像的版本尽量保持一致,不然会有坑!!

    #这里只展示需要注意和需要改动的地方,基本上没有太多改动
    
    port 6379  #无需修改 docker容器有很好的隔离性
    
    protected-mode no  #如果redis中设置了yes 则这里也必须相同
    
    #如果需要设置reids密码  必须开启 从机密码一定与主机相同
      requirepass 密码
      
    #从机必须再加上
      masterauth 密码(最好与上相同)
      
    #打开aof,默认是关闭的
      appendonly yes
      
    #默认64m 修改为 5g 
      auto-aof-rewrite-min-size 5g
      
    #注意 和cluster有关的配置最好不要开放 容易出各种奇怪的bug 
    

    3.3搭建redis集群-启动

    #一定要在当前的docker-compose.yml文件夹中
      docker-compose up -d 
    #查看运行状态 一定要看日志,有的时候docker容器启动了,但是内部服务是失败的
      docker-compose logs -f 
    #查看docker容器
      docker ps 
    #进入redis-master 
      docker exec -it 容器名|容器ID /bin/bash 
    #进入redis 
      #默认进入指令 
        redis-cli
      #如果端口改了或者增加密码了 需要这样写
        redis-cli -p 端口号 -a 密码  
    #添加 并查看
      set key value  #添加数据 只有主机有这个功能 从机只能读
      keys *     #查看所有数据
    

    主机添加数据后,用同样的方法登录从机,如果看到了相应的数据,说明集群搭建完毕。如果数据不同意,请查看相关日志。其中一定会有问题!!

    docker logs  容器名|容器ID
    

    4.sentinel哨兵模式搭建

    4.1配置文件

    version: '3.1'
    services:
      sentinel1:
        image: redis
        container_name: redis-sentinel-1
        ports:
          - 26379:26379
        command: redis-sentinel /usr/local/etc/redis/sentinel.conf
        volumes:
          - ./sentinel1.conf:/usr/local/etc/redis/sentinel.conf
        environment:
          # 设置时区为上海,否则时间会有问题
          - TZ=Asia/Shanghai
    
      sentinel2:
        image: redis
        container_name: redis-sentinel-2
        ports:
          - 26380:26379
        command: redis-sentinel /usr/local/etc/redis/sentinel.conf
        volumes:
          - ./sentinel2.conf:/usr/local/etc/redis/sentinel.conf
        environment:
          # 设置时区为上海,否则时间会有问题
          - TZ=Asia/Shanghai
    
      sentinel3:
        image: redis
        container_name: redis-sentinel-3
        ports:
          - 26381:26379
        command: redis-sentinel /usr/local/etc/redis/sentinel.conf
        volumes:
          - ./sentinel3.conf:/usr/local/etc/redis/sentinel.conf
        environment:
          # 设置时区为上海,否则时间会有问题
          - TZ=Asia/Shanghai
         #这里是个坑,之前没有设置,会导致docker时间不同步,哨兵模式无限失败的问题
    
    

    conf文件

    #第一台
    port 26379
    sentinel announce-ip 192.168.10.7
    sentinel announce-port 26379  #需要修改
    #所有xxx的地方均为  自定义名称 例如:myredis 
    sentinel monitor xxx 192.168.10.7 6379 2
    sentinel down-after-milliseconds xxx 30000
    sentinel parallel-syncs xxx 1
    sentinel failover-timeout xxx 180000
    sentinel deny-scripts-reconfig yes
    sentinel auth-pass xxx 密码
    
    #第二台
    port 26379
    sentinel announce-ip 192.168.10.7
    sentinel announce-port 26380
    
    sentinel monitor xxx 192.168.10.7 2
    sentinel down-after-milliseconds xxx 30000
    sentinel parallel-syncs xxx 1
    sentinel failover-timeout xxx 180000
    sentinel deny-scripts-reconfig yes
    sentinel auth-pass xxx 密码
    

    其余不做具体展示,同上,需要修改相应信息即可

    4.2启动

    #创建容器
    docker-compose up -d 
    #进入 容器 
    docker exec -it 容器名|容器ID /bin/bash 
    #进入redis 因为端口不是默认的,所以要设置
    redis-cli -p 26379
    #测试 查看哨兵信息
    > info   
    
    #sentinel 容器内的常用api
    1、sentinel masters
    展示所有被监控的主节点状态以及相关的统计信息
    2、sentinel master master-name
    展示指定master-name的主节点状态以及相关的统计信息
    3、sentinel slaves master-name
    展示指定master-name的从节点状态以及相关统计信息
    4、sentinel sentinels master-name
    展示指定master-name的sentinel节点集合,不包含当前sentinel节点。
    5、sentinel get-master-addr-by-name master-name
    返回指定master-name的主节点的ip和端口
    

    以上都完成,即可进行试验。比如 主从复制 leader选举 监控等等

    docker相关

    #如果docker-compose 成功 但是服务开启失败 需要删除容器 重新进行
     docker ps  #查看所有运行的容器
      docker restart 容器名称|容器id  #重启容器
      docker stop 容器名称|容器id     #停止容器
      docker ps -a 查看所有容器(运行中和关闭中的都有)
      docker rm -f 容器名称|容器id   #删除容器
    
    展开全文
  • redis集群哨兵模式

    2020-12-21 17:56:27
    此章节建立在上一章的基础上(主从复制),这一章省去了...第三,启动哨兵模式,查看哨兵的监测日志 第四,关闭主机,查看哨兵是否起作用 1.关闭主机6379,30秒后哨兵的日志发生变化,如下面的截图: 2.哨兵监测到.

     此章节建立在上一章的基础上(主从复制),这一章省去了主从复制的配置,如需要可以看上一章节

    目录

    第一,什么是Redis sentinel哨兵模式?

    第二,哨兵模式的配置详解

    第三,启动哨兵模式,查看哨兵的监测日志

    第四,关闭主机,查看哨兵是否起作用

    第五,参考文档说明,解释的比较详细


    第一,什么是Redis sentinel哨兵模式?

    Sentinel(哨兵)是用于监控redis集群中Master状态的工具,是Redis 的高可用性解决方案。sentinel哨兵模式已经被集成在redis2.4之后的版本中。sentinel是redis高可用的解决方案,sentinel系统可以监视一个或者多个redis master服务,以及这些master服务的所有从服务;当某个master服务下线时,自动将该master下的某个从服务升级为master服务替代已下线的master服务继续处理请求。sentinel可以让redis实现主从复制,当一个集群中的master失效之后,sentinel可以选举出一个新的master用于自动接替master的工作,集群中的其他redis服务器自动指向新的master同步数据。

    一般建议sentinel采取奇数台,防止某一台sentinel无法连接到master导致误切换。其结构如下:

    2.实现原理
            一个哨兵进程启动时会读取配置文件的内容,通过如下的配置找出需要监控的主数据库:

    sentinel monitor master name ip redis-port quorum

    其中master-name是一个由大小写字母、数字和“.-”组成的主数据库的名字,因为考虑到故障恢复后当前监控的系统的主数据库的地址和端口会产生变化,所以哨兵提供了命令可以通过主数据库的名字获取当前系统的主数据库的地址和端口号。ip表示当前系统中主数据库的地址,而redis-port则表示端口号。quorum用来表示执行故障恢复操作前至少需要几个哨兵节点同意,后文会详细介绍。一个哨兵节点可以同时监控多个Redis主从系统,只需要提供多个sentinelmonitor配置即可,例如:

    sentinel monitor mymaster 127.0.0.1 6379 2
    sentinel monitor othermaster 192.168.1.3 6380 4

    同时多个哨兵节点也可以同时监控同一个Redis 主从系统,从而形成网状结构。

    第二,哨兵模式的配置详解

    这里只是为了测试一下哨兵模式,故简单处理,只设置一个哨兵模式,让其对redis集群进行监控。

    1.copy一个配置文件sentinel到对应的目录,我把所有的配置文件都放在了myredis文件夹下面了

    2.去掉配置文件的注释和空行,生成新的配置文件

    #copy一个配置文件sentinel到对应的目录,我把所有的配置文件都放在了myredis文件夹下面了
    cp redis/redis-6.0.8/src/sentinel.conf  /myredis/
    #切换到myredis目录下
    cd /myredis/
    #去掉配置文件的注释和空行,生成新的配置文件
    cat sentinel.conf | grep -v "#" | grep -v "^$" > sentinel-26379.conf
    
    

    生成的新的配置文件如下所示:

    port 26379
    daemonize no
    pidfile /var/run/redis-sentinel.pid
    logfile ""
    dir /tmp
    sentinel monitor mymaster 127.0.0.1 6379 2
    sentinel down-after-milliseconds mymaster 30000
    sentinel parallel-syncs mymaster 1
    sentinel failover-timeout mymaster 180000
    sentinel deny-scripts-reconfig yes

    3.修改配置文件sentinel-26379.conf

    port 26379
    daemonize yes
    pidfile "/myredis/run/redis-sentinel.pid"
    logfile "redis-sentinel-26379.log"
    dir "/myredis/sentineldata"
    #端口如果是默认的,不需要修改,后面那个1表示1个redis-sentinel检查到master出问题后进入换master的方案。
    sentinel monitor mymaster 127.0.0.1 6379 1
    #这个配置项指定了需要多少失效时间,一个master才会被这个sentinel主观地认为是不可用的。 单位是毫秒,默认为30秒
    sentinel down-after-milliseconds mymaster 30000
    #这个配置项指定了在发生failover主备切换时最多可以有多少个slave同时对新的master进行同步,这个数字越小,完成failover所需的时间就越长,但是如果这个数字越大就意味着越多的slave因为replication而不可用。可以通过将这个值设为1来保证每次只有一个slave 处于不能处理命令请求的状态。
    sentinel parallel-syncs mymaster 1
    #设置连接master和slave时的密码,注意的是sentinel不能分别为master和slave设置不同的密码,因此master和slave的密码应该设置相同。
    sentinel auth-pass mymaster 123456
    #failover-timeout 可以用在以下这些方面:     
    #1. 同一个sentinel对同一个master两次failover之间的间隔时间。   
    #2. 当一个slave从一个错误的master那里同步数据开始计算时间。直到slave被纠正为向正确的master那里同步数据时。    
    #3.当想要取消一个正在进行的failover所需要的时间。    
    #4.当进行failover时,配置所有slaves指向新的master所需的最大时间。不过,即使过了这个超时,slaves依然会被正确配置为指向master,但是就不按parallel-syncs所配置的规则来了。
    sentinel failover-timeout mymaster 15000

    第三,启动哨兵模式,查看哨兵的监测日志

    #启动哨兵
    /redis/redis-6.0.8/src/redis-sentinel /myredis/sentinel-26379.conf --sentinel
    #切换到日志目录下
    tail -f redis-sentinel-26379.log

    启动后可以看到一个集群(6379主 6380和6381从)处于哨兵的监测中,日志如下:

    第四,关闭主机,查看哨兵是否起作用

    1.关闭主机6379,30秒后哨兵的日志发生变化,如下面的截图:

    #关闭
    shutdown
    #退出
    exit

    2.哨兵监测到主机6379挂了以后,从日志可得到自动切换6381为主机了,这时候再去重新启动6379,查看info replication,6379已经变为从机了!

    info replication

               

    第五,参考文档说明,解释的比较详细

    展开全文
  • redis集群和哨兵模式

    2021-12-15 15:32:55
    Sentinel(哨兵)是用于监控Redis集群中Master状态的工具,是 Redis 高可用解决方案,哨兵可以监视一个或者多个redis master服务,以及这些master服务的所有从服务;当某个master服务宕机后,会把这个master下的某个从...

    什么是哨兵

    Sentinel(哨兵)是用于监控Redis集群中Master状态的工具,是 Redis 高可用解决方案,哨兵可以监视一个或者多个redis master服务,以及这些master服务的所有从服务;当某个master服务宕机后,会把这个master下的某个从服务升级为master来替代已宕机的master继续工作

    配置哨兵监控master

    创建并且配置sentinel.conf:

    • 普通配置
    port 26379
    pidfile "/usr/local/redis/sentinel/redis-sentinel.pid"
    dir "/usr/local/redis/sentinel"
    daemonize yes
    protected-mode no
    logfile "/usr/local/redis/sentinel/redis-sentinel.log"
    
    
    • 核心配置
    # 配置哨兵
    sentinel monitor mymaster 127.0.0.1 6379 2
    # 密码
    sentinel auth-pass <master-name> <password>
    # master被sentinel认定为失效的间隔时间
    sentinel down-after-milliseconds mymaster 30000
    # 剩余的slaves重新和新的master做同步的并行个数
    sentinel parallel-syncs mymaster 1
    # 主备切换的超时时间,哨兵要去做故障转移,这个时候哨兵也是一个进程,如果他没有去执行,超过这个时间后,会由其他的哨兵来处理
    sentinel failover-timeout mymaster 180000
    
    
    • 结论
      master挂了以后,由于哨兵监控,剩余slave会进行选举,选举后其中一个成为master,当原来的master恢复后,他会成为slave。

    redis构建集群 - cluster

    • redis.conf 配置
    # 开启集群模式
    cluster-enabled yes
    # 每一个节点需要有一个配置文件,需要6份。每个节点处于集群的角色都需要告知其他所有节点,彼此知道,这个文件用于存储集群模式下的集群状态等信息,这个文件是由redis自己维护,我们不用管。如果你要重新创建集群,那么把这个文件删了就行
    cluster-config-file nodes-201.conf
    # 超时时间,超时则认为master宕机,随后主备切换
    cluster-node-timeout 5000
    # 开启AOF
    appendonly yes
    

    如果启动过程出错,把rdb,aof等文件删除清空

    • 创建集群
    #####
    # 注意1:如果你使用的是redis3.x版本,需要使用redis-trib.rb来构建集群,最新版使用C语言来构建了,这个要注意
    # 注意2:以下为新版的redis构建方式
    #####
    
    # 创建集群,主节点和从节点比例为1,1-3为主,4-6为从,1和4,2和5,3和6分别对应为主从关系,这也是最经典用的最多的集群模式
    redis-cli --cluster create ip1:port1 ip2:port2 ip3:port3 ip4:port4 ip5:port5 ip6:port6 --cluster-replicas 1
    

    slots:槽,用于装数据,主节点有,从节点没有

    展开全文
  • Redis的主从集群哨兵模式Redis的主从模式全量同步增量同步Redis主从同步策略流程redis主从部署环境哨兵模式原理哨兵模式概述哨兵模式的作用哨兵模式项目部署 Redis的主从模式 1、Redis虽然读取写入的速度都特别快,...

    Redis的主从模式

    1、Redis虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况。
    2、为了分担读压力,Redis支持主从复制,保证主数据库的数据内容和从数据库的内容完全一致。
    3、Redis的主从结构可以采用一主多从或者级联结构,Redis主从复制可以根据是否是全量分为全量同步和增量同步。

    全量同步

    Redis全量复制一般发生在Slave初始化阶段,这时Slave需要将Master上的所有数据都复制一份。
    1.从服务器连接主服务器,发送SYNC命令;
    2.主服务器接收到SYNC命令后,开始执行BGSAVE命令生成RDB文件并使用缓冲区记录此后执行的所有写命令;
    3.主服务器BGSAVE执行完后,向所有从服务器发送快照文件,并在发送期间继续记录被执行的写命令;
    4.从服务器收到快照文件后丢弃所有旧数据,载入收到的快照;
    5.主服务器快照发送完毕后开始向从服务器发送缓冲区中的写命令;
    6.从服务器完成对快照的载入,开始接收命令请求,并执行来自主服务器缓冲区的写命令;

    增量同步

    Redis增量复制是指Slave初始化后开始正常工作时主服务器发生的写操作同步到从服务器的过程。

    增量复制的过程主要是主服务器每执行一个写命令就会向从服务器发送相同的写命令,从服务器接收并执行收到的写命令。

    Redis主从同步策略流程

    1、主从刚刚连接的时候,进行全量同步;
    2、全同步结束后,进行增量同步。当然,如果有需要,slave在任何时候都可以发起全量同步。
    3、redis策略是,无论如何,首先会尝试进行增量同步,如不成功,要求从机进行全量同步

    redis主从部署

    环境

    主1 192.168.188.10
    从1 192.168.188.20
    从2 192.168.188.30
    注:一定要关闭防火墙和放心防护

    三台一起

    [root@server1 ~]# systemctl stop firewalld
    [root@server1 ~]# setenforce 0
    [root@server1 ~]# tar zxvf redis-5.0.4.tar.gz 
    [root@server1 ~]# cd
    [root@server1 ~]# cd redis-5.0.4/
    [root@server1 redis-5.0.4]# make
    [root@server1 redis-5.0.4]# make PREFIX=/usr/local/redis install
    [root@server1 redis-5.0.4]# cd
    [root@server1 ~]# ln -s /usr/local/redis/bin/ * /usr/local/bin
    [root@server1 ~]# cd redis-5.0.4/utils/
    [root@server1 utils]# ls -lh 
    总用量 52K
    -rw-rw-r--. 1 root root  593 319 2019 build-static-symbols.tcl
    -rw-rw-r--. 1 root root 1.3K 319 2019 cluster_fail_time.tcl
    -rw-rw-r--. 1 root root 1.1K 319 2019 corrupt_rdb.c
    drwxrwxr-x. 2 root root   60 319 2019 create-cluster
    -rwxrwxr-x. 1 root root 2.1K 319 2019 generate-command-help.rb
    drwxrwxr-x. 3 root root   31 319 2019 graphs
    drwxrwxr-x. 2 root root   39 319 2019 hashtable
    drwxrwxr-x. 2 root root   70 319 2019 hyperloglog
    -rwxrwxr-x. 1 root root 9.4K 319 2019 install_server.sh
    drwxrwxr-x. 2 root root   63 319 2019 lru
    -rw-rw-r--. 1 root root 1.3K 319 2019 redis-copy.rb
    -rwxrwxr-x. 1 root root 1.4K 319 2019 redis_init_script
    -rwxrwxr-x. 1 root root 1.1K 319 2019 redis_init_script.tpl
    -rw-rw-r--. 1 root root 1.8K 319 2019 redis-sha1.rb
    drwxrwxr-x. 2 root root  135 319 2019 releasetools
    -rwxrwxr-x. 1 root root 3.7K 319 2019 speed-regression.tcl
    -rwxrwxr-x. 1 root root  693 319 2019 whatisdoing.sh
    [root@server1 utils]# ./install_server.sh 
    Welcome to the redis service installer
    This script will help you easily set up a running redis server
    
    Please select the redis port for this instance: [6379] 
    Selecting default: 6379
    Please select the redis config file name [/etc/redis/6379.conf] 
    Selected default - /etc/redis/6379.conf
    Please select the redis log file name [/var/log/redis_6379.log] 
    Selected default - /var/log/redis_6379.log
    Please select the data directory for this instance [/var/lib/redis/6379] 
    Selected default - /var/lib/redis/6379
    Please select the redis executable path [/usr/local/bin/redis-server] 
    Selected config:
    Port           : 6379
    Config file    : /etc/redis/6379.conf
    Log file       : /var/log/redis_6379.log
    Data dir       : /var/lib/redis/6379
    Executable     : /usr/local/bin/redis-server
    Cli Executable : /usr/local/bin/redis-cli
    Is this ok? Then press ENTER to go on or Ctrl-C to abort.
    Copied /tmp/6379.conf => /etc/init.d/redis_6379
    Installing service...
    Successfully added to chkconfig!
    Successfully added to runlevels 345!
    Starting Redis server...
    Installation successful!
    [root@server1 utils]# netstat -anpt | grep redis  
    tcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN      60166/redis-server  
    [root@server1 utils]# 
    

    主服务器修改

    [root@server1 utils]# vi /etc/redis/6379.conf
    检索Protected  上面bind 192.168.188.10  # 改成本机地址
    检索daemonize yes  不修改 开启守护进程
    检索logfile /var/log/redis_6379.log   #修改日志文件目录
    检索dir /var/lib/redis/6379  # 修改工作目录
    检索appendonly no  把no修改成yes  #开启AOF持久化功能
    

    从服务器

    [root@server2 utils]# vi /etc/redis/6379.conf 
    检索replicaof  去掉#号 修改replicaof 192.168.188.10 6379
    检索Protected  上面修改bind 0.0.0.0
    检索appendonly  不修改appendonly yes
    检索daemonize yes  不修改
    检索logfile /var/log/redis_6379.log  不修改
    检索dir /var/lib/redis/6379  不修改
    

    重启服务

    [root@server1 utils]#  /etc/init.d/redis_6379 restart
    Stopping ...
    Waiting for Redis to shutdown ...
    Redis stopped
    Starting Redis server...
    

    查看日志

    [root@server1 utils]# tail -f /var/log/redis_6379.log 
    
    

    在这里插入图片描述

    测试主从数据复制功能
    在主服务器上

    [root@server1 utils]# redis-cli -h 192.168.188.10 -p 6379 
    192.168.188.10:6379> info replication   #信息复制,状态信息
    # Replication
    role:master    #状态:主服务器
    connected_slaves:2    #连接节点2个
    slave0:ip=192.168.188.30,port=6379,state=online,offset=546,lag=0
    slave1:ip=192.168.188.20,port=6379,state=online,offset=546,lag=0
    master_replid:19e2cc45688b300737a3ecb4f22d88a69c9cf082
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:546
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:1
    repl_backlog_histlen:546
    192.168.188.10:6379> 
    

    哨兵模式原理

    哨兵模式概述

    哨兵(sentinel) 是一个分布式系统,用于对主从结构中的每台服务器进行监控,当出现故障时通过投票机制选择新的master并将所有slave连接到新的master。所以整个运行哨兵的集群的数量不得少于3个节点。

    哨兵模式的作用

    1、监控
    不断的检查master和slave是否正常运行。
    master存活检测、master与slave运行情况检测
    2、通知(提醒)
    当被监控的服务器出现问题时,向其他(哨兵间,客户端)发送通知。
    3、自动故障转移
    断开master与slave连接,选取一个slave作为master,将其他slave连接到新的master,并告知客户端新的服务器地址
    PS:
    (1)哨兵也是一台redis服务器,只是不提供数据服务
    (2)哨兵的启动依赖于主从模式,所以须把主从模式安装好的情况下再去做哨兵模式,所有节点上都需要部署哨兵模式,哨兵模式会监控所有的redis工作节点是否正常,当master出现问题的时候,因为其他节点与主节点失去联系,因此会投票,投票过半就认为这个master的确出现问题,然后会通知哨兵间,然后从slaves中选取一个作为新的master。

    哨兵模式项目部署

    1、配置哨兵模式

    [root@server1 ~]# vim redis-5.0.4/sentinel.conf 
    检索protected-mode no  去掉#号  关闭保护模式
    检索daemonize no   把no修改yes     指定sentine1为后台启动,开启守护进程
    检索logfile  修改成logfile "/var/log/sentinel.log"   #指定日志存放路径
    检索dir  修改成dir /var/lib/redis/6379  指定数据库存放路径
    检索sentinel monitor mymaster  修改成sentinel monitor mymaster 192.168.188.10 6379 2
    指定几个哨兵(slave)检测主服务器故障,才会进行故障迁移(主服务器ip地址,端口号,slave数)
    检索sntinel down-after-milliseconds  修改成sentinel down-after-milliseconds mymaster 3000 
    去掉#号判定服务器down掉的时间周期,默认30000毫秒(30秒)
    
    检索sentinel failover-timeout   修改成sentinel failover-timeout mymaster 100000
    故障节点的最大超时时间为100000毫秒(100秒)
    

    2、启动哨兵模式 (主从都启动)
    先启master服务器,后启slave服务器

    [root@server1 ~]# redis-sentinel redis-5.0.4/sentinel.conf &
    [1] 60966
    

    3、查看日志(主)

    [root@server1 ~]# tail -f /var/log/sentinel.log 
    

    在这里插入图片描述

    查看进程状态

    [root@server1 ~]# ps aux | grep redis
    root      60349  0.1  0.3 165612 11736 ?        Ssl  20:23   0:06 /usr/local/bin/redis-server 192.168.188.10:6379
    root      60946  0.3  0.1 153836  7488 ?        Ssl  21:16   0:01 redis-sentinel *:26379 [sentinel]
    root      61015  0.0  0.0 112676   984 pts/1    S+   21:22   0:00 grep --color=auto redis
    [root@server1 ~]# ps aux | grep sentinel
    root      60946  0.3  0.1 153836  7488 ?        Ssl  21:16   0:01 redis-sentinel *:26379 [sentinel]
    root      61025  0.0  0.0 112676   980 pts/1    S+   21:23   0:00 grep --color=auto sentinel
    [root@server1 ~]# 
    

    在这里插入图片描述

    登录数据库查看哨兵状态

    [root@server1 ~]# redis-cli -h 192.168.188.10 -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=mymaster,status=ok,address=192.168.188.10:6379,slaves=2,sentinels=3
    [root@server1 ~]# redis-cli -h 192.168.188.10 -p 6379 info replication
    # Replication
    role:master
    connected_slaves:2
    slave0:ip=192.168.188.30,port=6379,state=online,offset=121462,lag=0
    slave1:ip=192.168.188.20,port=6379,state=online,offset=121462,lag=0
    master_replid:19e2cc45688b300737a3ecb4f22d88a69c9cf082
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:121462
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:1
    repl_backlog_histlen:121462
    [root@server1 ~]# 
    

    在这里插入图片描述
    在这里插入图片描述

    [root@server1 ~]# ps -ef | grep redis
    root      60349      1  0 20:23 ?        00:00:08 /usr/local/bin/redis-server 192.168.188.10:6379
    root      60946      1  0 21:16 ?        00:00:03 redis-sentinel *:26379 [sentinel]
    root      61104  55732  0 21:30 pts/1    00:00:00 grep --color=auto redis
    [root@server1 ~]# kill -9 60349
    [root@server1 ~]# tail -f /var/log/sentinel.log
    
    

    在这里插入图片描述

    [root@server1 ~]# redis-cli -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=mymaster,status=ok,address=192.168.188.20:6379,slaves=2,sentinels=3
    
    展开全文
  • 哨兵模式Redis的高可用性解决方案:由一个或多个Sentinel实例组成的Sentinel系统可以同时监控任意多个主服务器,以及每个主服务器下的所有从服务器。在监视到主服务器进入下线状态时,自动将下线主服务器属下的...
  • 前言 - 单机Redis的风险与问题 如果Redis设计成单节点, 会有如下风险: 问题1: 机器故障 现象: 硬盘故障, 系统崩溃, 造成数据丢失, 很可能对业务造成灾难性打击 结论: 用户基本上会放弃使用Redis. 问题2: 容量...
  • Redis集群哨兵模式

    2021-01-29 15:11:22
    查看Redis集群中的角色 info replication:命令可以查看当前Redis集群中的角色。默认是主节点,即都能读写操作。 配置集群注意事项 在主节点上: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存...
  • 是一种特殊的模式Redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独立运行。 其原理是:哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis实例。 哨兵的作用 通过
  • 整理出来哨兵模式部署方式步骤,包括redis服务、哨兵服务配置文件参数修改、服务启动、主从关系验证、高可用测试,实验机器部署 ip 为 10.7.29.140 、10.7.29.142、10.7.29.145, 其中 10.7.29.140 为ma...
  • docker-compose 搭建redis集群和sentinel集群。(一主一从,一台哨兵) 部署环境 容器服务器的ip是:172.20.0.2(master_redis_6379),172.20.0.3(slave_redis_6380) 使用redis的镜像是:redis:5.0.4 ...
  • 1.哨兵模式是基于主从模式(搭建主从模式的过程就不写了,参考下面) Redis主从模式搭建 2.哨兵配置 在主从模式搭建成功之后 哨兵配置 每一个redis节点目录中都创建一个文sentinel.conf文件 master6379的...
  • 标签:应该完成初始化列表总结原创地址文章声明前段时间项目里正好用到了redis集群哨兵部署,因为此前并无了解过,所以一脸懵逼啊,查阅了几篇资料,特此综合总结一下,作为记录。写在前沿:随着项目的扩张,对...
  • springboot 整合 redis 集群哨兵模式) #拉取镜像 docker pull redis:5.0.4 创建本地挂载文件 修改本地挂载文件redis.conf 1,/6379/conf vi redis.conf,内容如下: daemonize no protected-...
  • Redis sentinel哨兵模式
  • 每1秒每个Sentinel对其他Sentienl和Redis节点执行 PING 操作(监控) 每2秒每个Sentinel通过Master节点的channel交换信息(Publish/Subscribe) 每10秒每个Sentinel会对MasterSlave执行 INFO 命令 3. 主观下线 所谓...
  • Redis集群哨兵模式

    2021-08-24 18:45:58
    本文来说下Redis集群哨兵模式 文章目录概述 概述
  • redis集群哨兵模式

    2021-05-07 09:26:51
    1、 redis本身只支持纵向扩容,也就是备份,不支持多机器海量数据。即只能有一个主机,主机可以有多个slave(备份丛机),主机不需要特殊配置,只需要配置slave的master,让丛机找主机即可。...4、哨兵
  • Docker 部署redis集群心得 最近工作是撰写部署redis的相关文档,为了验证文档有效性,使用了docker来进行安装验证 具体安装步骤与linux环境下安装差异不大,请看他的博文 最爱喝酸奶 这里只介绍docker下的一些心得...
  • redis集群中的哨兵模式有什么作用发布时间:2020-06-25 11:20:41来源:亿速云阅读:445作者:Leah这期内容当中的小编将会给大家带来有关redis集群哨兵模式的作用,以专业的角度为大家分析叙述,阅读完这篇文章...
  • redis集群哨兵模式

    2021-04-21 10:45:52
    1. redis集群的其他模式 哨兵模式: 去中心化集群 2.Java连接redis. 3.springboot整合redis 4.redis的应用场景: 缓存。 2. 哨兵模式: 修改sentinel.conf的配置 # 127.0.0.1表示redis主节点的ip # 6379 ...
  • redis集群和redis哨兵模式 RedisCluster相关知识 (1)RedisCluster概念 RedisCluster是redis的分布式解决方案,在3.0版本后推出的方案,有效地解决了Redis分布式的需求,当一个服务挂了可以快速的切换到另外一个服务...
  • redis 集群方案的介绍(主从模式哨兵模式Redis Cluster模式Redis Cluster 的部署使用 本次演示使用的Redis版本为 redis-5.0.3 一、主从模式 将数据完全存储在单个redis中主要存在两个问题:数据备份数据...
  • docker搭建redis哨兵模式集群 一、搭建redis一主两从集群 1.创建docker网络,为了容器间相互通信 docker network create redis 2.运行redis容器 docker run -it -d --network redis --restart=always --name redis...
  • 普遍用于目前主流的分布式架构系统中,关于redis的详细介绍,见另一篇文章:redis的安装与介绍​blog.csdn.netredis的多机数据库实现,主要分为以下三种:Redis哨兵(Sentinel)Redis复制(主从)Redis集群一、Redis的.....
  • Redis主从复制首先准备机器,我用的是三台linux虚拟机,版本4.0.10.进入三台机器后先关闭防火墙,我...主机128配置只需要放开保护模式让其他机器能连接redis,修改redis.conf:bind 0.0.0.0 -修改为如下表示允许别的ip连...
  • 哨兵模式集群的一种,目前比较流行的方式。 哨兵模式的机制就是,一个redis服务(master或者slaver)启动时,随之启动一个哨兵(sentinel)。这个哨兵就用来监测这个服务的。 集群中所有的数据服务(master或者...
  • 前段时间项目里正好用到了redis集群哨兵部署,因为此前并无了解过,所以一脸懵逼啊,查阅了几篇资料,特此综合总结一下,作为记录。写在前沿:随着项目的扩张,对redis的依赖也越来越大,为了增强redis的性能,...
  • redis主从复制 主从复制,是指将一台redis服务器的数据,复制到其他的redis服务器。前者称为主节点 (master),后者称为从节点(slave);数据复制是单向的,只能由主节点到从节点。 默认情况下,每台redis...
  • Redis 集群部署(主从+哨兵模式)(Centos7) redis 集群部署 使用 1主2从+哨兵模式 服务器 节点类型 IP地址 端口 Node1 Redis服务1(主节点Master) 192.168.1.131 6379 Node2 Redis服务2(从节点Slave1...
  • Redis集群&哨兵机制

    2020-12-29 09:34:26
    Redis主从复制什么是主从复制​ 持久化保证了即使 Redis 服务重启也不会丢失数据,因为 ...实现原理Redis 的主从同步,分为全量同步增量同步。只要从机第一次连接上主机是全量同步。断线重连有可能触发全量同步也...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 29,711
精华内容 11,884
关键字:

redis集群和哨兵模式

redis 订阅