精华内容
下载资源
问答
  • 主要介绍了SpringBoot结合Redis哨兵模式的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • 哨兵模式三台一主一从一哨兵
  • 无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣...哨兵集群搭建 节点分布 集群机器如下: 172.28.72.104 master 8379 slave 8380 sentinel 28379 172.28.72.124
  • ssm-redis-哨兵模式

    2017-09-16 15:54:15
    目前市场上常用SSM框架整合的Redis的哨兵模式,redis在这个例子中作为一个二级缓存,以及一个spring-session-data的例子,可以做session共享里面也包含了单点模式,
  • redis的学习,原来上传过一次,但是没有redis实例命令和启动哨兵的命令,已补充,请看下载中的文件
  • PAGE / NUMPAGES Redis主从集群搭建及容灾部署哨兵 Redis主从集群搭建及容灾部署 哨兵sentinel 目录 1. Redis安装 2. Redis主从结构搭建 3. Redis容灾部署哨兵sentinel 4. Redis常见问题 5. 参考 redis安装 1.1. ...
  • 自己学习springmvc + redis的实例,感兴趣的可以下载看看!
  • 本文是我花了一周时间整理出来的Redis哨兵模式(sentinel)学习总结,包括部署过程,主从复制、读写分离、主从切换等都已验证通过,可以作为完整手册使用.有需要的朋友,请拿走不谢.
  • Redis 哨兵模式,哨兵模式优缺点,哨兵模式配置文件的配置信息 废话不多说,直接上代码(总结) Redis 哨兵模式 1.当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成一段...

    哈喽,欢迎来到小朱课堂,下面开始你的学习吧!

    Redis 哨兵模式,哨兵模式优缺点,哨兵模式配置文件的配置信息
    废话不多说,直接上代码(总结)

    Redis 哨兵模式

    1.当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成一段时间内服务不可用。这不是一种推荐的方式。
    2.这时,我们考虑哨兵模式。哨兵模式是一种特殊的模式,是一个独立的进程,它会向redis服务器发送命令,等待redis服务器响应,从而监控多个redis服务器的运行状态,如果监控到主服务器宕机,则会通过选举算法将一台从机选举为新得主机,然后通过发布订阅模式通知其他服务器并修改他们的配置文件,设置新的主机信息。
    3.多哨兵模式:当然一个哨兵也不满足高可用的需求,所以需要有时需多个哨兵同时监控,各个哨兵之间也会相互监控,例如有3个哨兵3个redis服务器,这样就会开启15条监控线。如果哨兵1监控到主服务器下线【主观下线】,不会立即选举新的主机,而是等后面的哨兵检测,当一定数量的哨兵都检测到主服务器下线,则进行投票选举新主机,再过发布订阅模式,让各个哨兵把自己监控的从服务器实现切换主机【客观下线】。
    4.使用命令:redis-sentinel sentinel.conf来开启哨兵。

    哨兵模式优缺点

    优点:
    1、哨兵集群,基于主从复制模式,所有的主从配置优点,它都有
    2、主从可以切换,故障可以转移,高可用性的系统
    3、哨兵模式就是主从模式的升级,手动到自动,更加健壮
    缺点:
    1、Redis不好在线扩容的,集群容量一旦到达上限,在线扩容就十分麻烦
    2、哨兵模式的配置繁琐

    哨兵模式配置文件的配置信息

    #Example sentinel.conf
    
    #哨兵sentinel实例运行的端口 默认26379
    port 26379
    
    #哨兵sentinel的工作目录
    dir /tmp
    
    #哨兵sentinel监控的redis主节点的 ip port
    #master-name可以自己命名的主节点名字,只能由字母A-z、数字0-9、这三个字符".-_"组成。
    #quorum 配置多少个sentinel哨兵统一认为master主节点失联 那么这时客观上认为主节点失联了
    #sentinel monitor <master-name> <ip> <redis-port> <quorum>
    sentinel monitor mymaster 127.0.0.1 6379 2
     
    #当在Redis实例中开启了requirepass foobared授权密码,这样所有连接Redis实例的客户端都要提供密码 
    #设置哨兵sentinel连接主从的密码,注意必须为主从设置一样的验证密码
    # sentinel auth-pass <master-name> <password>
    sentinel auth-pass mymaster XXX
    #指定多少毫秒之后主节点没有应答哨兵,此时哨兵主观上认为主节点下线,默认30秒
    # sentinel down-after-milliseconds <master-name> <milliseconds>
    sentinel down-after-milliseconds mymaster 30000
    
    # 这个配置项指定了在发生failover主备切换(选举)时多可以有多少个slave同时对新的master进行同步,数字越小,完成failover所需的时间就越长,但是如果这个数字越大,就意味着越多的slave因为replication而不可用。可以通过将这个值设为1来保证每次只有一个slave处于不能处理命令请求的状态。
    # sentinel parallel-syncs <master-name> <numslaves>
    sentinel parallel-syncs mymaster 1
    
    #故障转移的超时时间failover-timeout可以用在以下这些方面:
    #1. 同一个sentinel对同一个master两次failover之间的间隔时间。
    #2. 当一个slave从一个错误的master那里同步数据开始计算时间。直到slave被纠正为向正确的master那里同步数据时。
    #3.当想要取消一个正在进行的failover所需要的时间。
    #4.当进行failover时,配置所有slaves指向新的master所需的大时间。不过,即使过了这个超时,slaves依然会被正确配置为指向master,但是就不按parallel-syncs所配置的规则来了#默认三分钟
    # sentinel failover-timeout <master-name> <milliseconds>
    sentinel failover-timeout mymaster 180000
    
    #SCRIPTS EXECUTION
    
    #配置当某一事件发生时所需要执行的脚本,可以通过脚本来通知管理员,例如当系统运行不正常时发邮件通知相关人员。
    #对于脚本的运行结果有以下规则:
    #若脚本执行后返回1,那么该脚本稍后将会被再次执行,重复次数目前默认为10
    #若脚本执行后返回2,或者比2更高的一个返回值,脚本将不会重复执行。
    #如果脚本在执行过程中由于收到系统中断信号被终止了,则同返回值为1时的行为相同。#一个脚本的大执行时间为60s,如果超过这个时间,脚本将会被一个SIGKILL信号终止,之后重新执行。
    
    #通知型脚本:当sentinel有任何警告级别的事件发生时(比如说redis实例的主观失效和客观失效等等),将会去调用这个脚本,这时这个脚本应该通过邮件,SMS等方式去通知系统管理员关于系统不正常运行的信息。调用该脚本时,将传给脚本两个参数,一个是事件的类型,一个是事件的描述。如果sentinel.conf配 置文件中配置了这个脚本路径,那么必须保证这个脚本存在于这个路径,并且是可执行的,否则sentinel无 法正常启动成功。
    #通知脚本
    # sentinel notification-script <master-name> <script-path>
    sentinel notification-script mymaster /var/redis/notify.sh
    
    #客户端重新配置主节点参数脚本
    # 当一个master由于failover而发生改变时,这个脚本将会被调用,通知相关的客户端关于master地址已经发生改变的信息。
    #以下参数将会在调用脚本时传给脚本:
    # <master-name> <role> <state> <from-ip> <from-port> <to-ip> <to-port>
    # 目前<state>总是“failover”, # <role>是“leader”或者“observer”中的一个。
    #参数 from-ip, from-port, to-ip, to-port是用来和旧的master和新的master(即旧的slave)通信的
    # 这个脚本应该是通用的,能被多次调用,不是针对性的。
    # sentinel client-reconfig-script <master-name> <script-path>
    sentinel client-reconfig-script mymaster /var/redis/reconfig.sh
    

    搬砖路上,希望对你有帮助!可以关注一下哟,持续更新哟! 有问题可以私聊博主,快发表一下你的看法吧!

    展开全文
  • 搭建Redis高可用集群的哨兵模式(Redis-Sentinel)的实例配置,可以为 Redis 容灾+高可用 应用场景提供解决方案Demo
  • 主从复制和哨兵模式的搭建,请参考其他文章,很简单,而且别人写的很详细,这里主要解决哨兵模式无法切换的问题。 目前我这边的配置为: 一主二从三哨兵 出现的问题主要有: 问题1:没有看到切换master节点的信息: ...

    主从复制和哨兵模式的搭建,请参考其他文章,很简单,而且别人写的很详细,这里主要解决哨兵模式无法切换的问题。
    目前我这边的配置为:
    一主二从三哨兵
    出现的问题主要有:

    问题1:没有看到切换master节点的信息:

    在这里插入图片描述
    解决方法:修改redis-sentinel.conf 配置文件,将最少投票数改为1,(大于3个哨兵的,建议投票数为:哨兵数/2 -1 不为别的,我只怕redis抽风!! ) 注:官方文档并没有说需要【(哨兵数/2)-1 】,是我自己设置并解决我当前的问题的,官方文档只说如果哨兵数过少,则故障转移是不会产生的,也就是说,一两个哨兵,并不是高可用配置,当master挂掉后,不一定会给你进行故障转移。:
    详见:https://redis.io/topics/sentinel
    在这里插入图片描述

    问题二:哨兵选举后,无法真正地切换。

    在这里插入图片描述

    无法切换,有几种情况:
    1-redis保护模式开启了
    2-端口没有放开;
    3-master密码和从密码不一致。
    4-master节点的redis.conf没有添加masterauth

    建议处理方法如下:
    每一台机子下的:redis.conf配置文件,还有哨兵的redis-sentinel.conf 配置文件修改成:

    bind 0.0.0.0
    protected-mode no
    

    2-各个哨兵,端口要能相互telnet 对应的ip 端口
    查看想开的端口是否已开:firewall-cmd --query-port=26379/tcp
    添加指定需要开放的端口:firewall-cmd --add-port=26379/tcp --permanent
    重载入添加的端口:firewall-cmd --reload
    查询指定端口是否开启成功:firewall-cmd --query-port=26379/tcp
    返回yes即可

    3–master密码和从密码不一致
    由于哨兵配置的时候没有配置从密码,只配置了master的密码,那么问题来了,如果master挂掉了,哨兵sentinel切换master的时候,怎么去修改其他节点的配置信息呢。实际上,哨兵是拿master的密码去认证的,所以,我们在配置redis的时候,建议redis的账号密码一致(至少主账号的master-auth密码和从节点的一致)

    4-master节点也要设置masterauth,避免当master重启后无法变成新master节点的从节点

    各位参考以上的配置进行操作即可。如果还有其他的配置需要注意的,欢迎留言

    展开全文
  • 目录1、Redis主从模式概述1.1、同步方式2、哨兵模式3、Redis一主两从模式案例3.1、同步会话模式,关闭防护墙,放入安装包3.2、取消会话模式,进入主模式配置文件,进行修改3.3、进入Slave1节点配置文件进行修改3.4、...

    1、Redis主从模式概述

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

    1.1、同步方式

    ■ 全量同步
    Redis全量复制一般发生在Slave初始化阶段,这时Slave需要将Master上的所有数据都复制一份

    ● 从服务器连接主服务器,发送SYNC命令
    ● 主服务器接收到SYNC命名后,开始执行BGSAVE命令生成RDB文件并使用缓冲区记录此后执行的所有写命令
    ● 主服务器BGSAVE执行完后,向所有从服务器发送快照文件,并在发送期间继续记录被执行的写命令
    ● 从服务器收到快照文件后丢弃所有旧数据,载入收到的快照
    ● 主服务器快照发送完毕后开始向从服务器发送缓冲区中的写命令
    ● 从服务器完成对快照的载入,开始接收命令请求,并执行来自主服务器缓冲区的写命令

    ■ 增量同步
    Redis增量同步是指Slave初始化后开始正常工作时主服务器发生的写操作同步到从服务器的过程
    增量复制的过程主要是主服务器每执行一个写命令就会向从服务器发送相同的写命令,从服务器接收并执行收到的写命令

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

    2、哨兵模式

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

    ■ 哨兵模式的作用
    ● 监控
    不断的检查master和slave是否正常运行。
    master存活检测、master与slave运行情况检测

    ● 通知(提醒)
    当被监控的服务器出现问题时,向其他(哨兵间,客户端)发送通知。

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

    3、Redis一主两从模式案例

    ■ 案例拓扑图
    在这里插入图片描述

    3.1、同步会话模式,关闭防护墙,放入安装包

    [root@master ~]# systemctl stop firewalld
    [root@master ~]# setenforce 0
    [root@master ~]# tar zxvf redis-5.0.4.tar.gz   #安装包解压缩
    [root@master ~]# cd redis-5.0.4/    #进入目录
    [root@master redis-5.0.4]# make   #进行安装
    [root@master redis-5.0.4]#  make PREFIX=/usr/local/redis install  #安装路径设置
    [root@master redis-5.0.4]# cd           
    [root@master ~]# ln -s /usr/local/redis/bin/* /usr/local/bin       #进行命令链接
    [root@master ~]# cd redis-5.0.4/utils/
    [root@master utils]# ./install_server.sh             #运行脚本
    [root@master utils]# netstat -anpt | grep redis     #查看服务状态
    

    在这里插入图片描述

    3.2、取消会话模式,进入主模式配置文件,进行修改

    [root@master utils]# cd
    [root@master ~]# vi /etc/redis/6379.conf     #进入主模式配置文件
    

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

    3.3、进入Slave1节点配置文件进行修改

    [root@slaver1 utils]# cd
    [root@slaver1 ~]# vi /etc/redis/6379.conf
    

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

    3.4、进入Slave2节点配置文件进行修改

    [root@slave2 utils]# cd
    [root@slave2 ~]# vi /etc/redis/6379.conf 
    

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

    3.5、重启所有主机redis服务

    [root@master ~]# /etc/init.d/redis_6379 restart   重启服务
    Stopping ...
    Waiting for Redis to shutdown ...
    Redis stopped
    Starting Redis server...
    [root@slave1 ~]# /etc/init.d/redis_6379 restart
    [root@slave2 ~]# /etc/init.d/redis_6379 restart
    

    3.6、进入Master查看日志,验证主从效果

    [root@master ~]# tail -f /var/log/redis_6379.log    #查看日志
    

    在这里插入图片描述

    [root@master ~]# tail -f /var/log/redis_6379.log 
    59040:M 18 Dec 2020 14:27:20.101 * Synchronization with replica 192.168.74.30:6379 succeeded  #同步给Slave2成功
    59040:M 18 Dec 2020 14:27:27.445 # Connection with replica 192.168.74.20:6379 lost.
    59040:M 18 Dec 2020 14:27:27.453 * Replica 192.168.74.20:6379 asks for synchronization
    59040:M 18 Dec 2020 14:27:27.453 * Full resync requested by replica 192.168.74.20:6379  #全量同步,请求来自于Slave1
    59040:M 18 Dec 2020 14:27:27.453 * Starting BGSAVE for SYNC with target: disk
    59040:M 18 Dec 2020 14:27:27.454 * Background saving started by pid 59104
    59104:C 18 Dec 2020 14:27:27.456 * DB saved on disk
    59104:C 18 Dec 2020 14:27:27.456 * RDB: 4 MB of memory used by copy-on-write
    59040:M 18 Dec 2020 14:27:27.463 * Background saving terminated with success   #后台保存命令成功
    59040:M 18 Dec 2020 14:27:27.463 * Synchronization with replica 192.168.74.20:6379 succeeded
    [root@master ~]# redis-cli
    127.0.0.1:6379> info replication
    # Replication
    role:master
    connected_slaves:2
    slave0:ip=192.168.74.30,port=6379,state=online,offset=2030,lag=0
    slave1:ip=192.168.74.20,port=6379,state=online,offset=2030,lag=1
    master_replid:f4956bad4bf3b233f6f703a38e7a86d8202bfe51
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:2030
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:1
    repl_backlog_histlen:2030
    127.0.0.1:6379> 
    

    在这里插入图片描述

    3.61、进入slave1,查看日志

    [root@slave1 ~]# tail -f /var/log/redis_6379.log 
    58186:S 18 Dec 2020 14:27:27.463 * MASTER <-> REPLICA sync: Finished with success  #主从建立成功
    58186:S 18 Dec 2020 14:27:27.463 * Background append only file rewriting started by pid 58190
    58186:S 18 Dec 2020 14:27:27.499 * AOF rewrite child asks to stop sending diffs.
    58190:C 18 Dec 2020 14:27:27.499 * Parent agreed to stop sending diffs. Finalizing AOF...
    58190:C 18 Dec 2020 14:27:27.499 * Concatenating 0.00 MB of AOF diff received from parent.
    58190:C 18 Dec 2020 14:27:27.499 * SYNC append only file rewrite performed
    58190:C 18 Dec 2020 14:27:27.499 * AOF rewrite: 4 MB of memory used by copy-on-write
    58186:S 18 Dec 2020 14:27:27.552 * Background AOF rewrite terminated with success
    58186:S 18 Dec 2020 14:27:27.552 * Residual parent diff successfully flushed to the rewritten AOF (0.00 MB)
    58186:S 18 Dec 2020 14:27:27.552 * Background AOF rewrite finished successfully
    
    

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

    3.62、进入slave2,查看日志

    [root@slave2 ~]# tail -f /var/log/redis_6379.log 
    

    在这里插入图片描述

    3.63、验证效果

    127.0.0.1:6379> set a 1
    OK
    127.0.0.1:6379> get a
    "1"
    127.0.0.1:6379> 
    

    在这里插入图片描述

    4、哨兵模式案例

    4.1、进入master模式,配置文件进行修改

    [root@master ~]# vi redis-5.0.4/sentinel.conf
    17/protected-mode no  #关闭保护模式
    26/daemonize yes #指定sentinel为后台启动
    36/logfile "/var/log/sentinel.log" #指定日志存放路径
    65/dir "/var/lib/redis/6379" #指定数据库存放路径
    84/sentinel monitor mymaster 192.168.74.10 6379 2  #至少几个哨兵检测到主服务器故障了,才会进行故障迁移
    113/sentinel down-after-milliseconds mymaster 3000 #判定服务器down掉的时间周期,默认30000毫秒(30秒)
    146/sentinel failover-timeout mymaster 100000 #故障节的的最大超时时间为180000180秒)
    

    4.2、将修改好的配置文件复制给从主机

    [root@master ~]# vi redis-5.0.4/sentinel.conf
    [root@master ~]# scp redis-5.0.4/sentinel.conf root@192.168.74.20:/root/redis-5.0.4
    The authenticity of host '192.168.74.20 (192.168.74.20)' can't be established.
    ECDSA key fingerprint is SHA256:VEizcsuU+V0LOIvHezPhrm6kTgydj3Fxy2nXMAcD8K0.
    ECDSA key fingerprint is MD5:b1:a7:ad:69:d2:f0:87:b8:ab:53:f5:6b:53:a3:16:be.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added '192.168.74.20' (ECDSA) to the list of known hosts.
    root@192.168.74.20's password: 
    sentinel.conf                                                 100% 9748     7.4MB/s   00:00    
    [root@master ~]# scp redis-5.0.4/sentinel.conf root@192.168.74.30:/root/redis-5.0.4
    The authenticity of host '192.168.74.30 (192.168.74.30)' can't be established.
    ECDSA key fingerprint is SHA256:17g6YnNbxEc/en5d72P8B1iRo1U/borhDBfy8NyBsDU.
    ECDSA key fingerprint is MD5:a8:5c:c9:d1:2f:5d:97:5a:8f:3d:31:d2:72:a6:bb:19.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added '192.168.74.30' (ECDSA) to the list of known hosts.
    root@192.168.74.30's password: 
    sentinel.conf                                                 100% 9748     8.9MB/s   00:00    
    

    4.3、启动哨兵模式

    [root@master ~]# redis-sentinel redis-5.0.4/sentinel.conf &
    [root@slave1 ~]# redis-sentinel redis-5.0.4/sentinel.conf &
    [root@slave2 ~]# redis-sentinel redis-5.0.4/sentinel.conf &
    

    4.4、查看效果

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

    在这里插入图片描述

    [root@master ~]# ps aux | grep sentinel    #查看端口信息
    

    在这里插入图片描述

    4.45、在数据库里查看哨兵信息

    [root@slave1 ~]# redis-cli -h 192.168.74.10 -p 26379 info sentinel
    

    在这里插入图片描述

    4.46、测试主失效后,进入日志查看哨兵模式效果

    [root@master ~]# /etc/init.d/redis_6379 stop   #停止服务
    Stopping ...
    Redis stopped
    [root@slave1 ~]# ps aux | grep redis
    

    在这里插入图片描述

    [root@slave1 ~]# tail -f /var/log/sentinel.log   进入slave1 查看日志
    

    在这里插入图片描述

    4.47、测试曾经的主重新开启服务,会不会夺回主位

    [root@master ~]# /etc/init.d/redis_6379 start
    

    在这里插入图片描述

    在Slave2上查看状态
    [root@slave2 ~]# redis-cli -h 192.168.74.30 -p 26379 info sentinel
    

    在这里插入图片描述

    展开全文
  • Redis哨兵模式

    2021-01-12 18:26:05
    哨兵模式 主从切换技术的方法是:当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成一段时间内服务不可用。这不是一种推荐的方式,更多时候,我们优先考虑哨兵模式 ...

    哨兵模式

    主从切换技术的方法是:当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成一段时间内服务不可用。这不是一种推荐的方式,更多时候,我们优先考虑哨兵模式

    哨兵模式概述

    哨兵模式是一种特殊的模式,首先Redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独立运行。其原理是哨兵通过发送命令等待Redis服务器响应从而监控运行的多个Redis实例

    在这里插入图片描述

    这里的哨兵有两个作用

    • 通过发送命令,让Redis服务器返回监控其运行状态,包括主服务器和从服务器。
    • 当哨兵监测到master宕机,会自动将slave切换成master,然后通过发布订阅模式通知其他的从服务器,修改配置文件,让它们切换主机。

    然而一个哨兵进程对Redis服务器进行监控,可能会出现问题,为此,我们可以使用多个哨兵进行监控。各个哨兵之间还会进行监控,这样就形成了多哨兵模式。

    用文字描述一下故障切换(failover)的过程。假设主服务器宕机,哨兵1先检测到这个结果,系统并不会马上进行failover过程,仅仅是哨兵1主观的认为主服务器不可用,这个现象成为主观下线。当后面的哨兵也检测到主服务器不可用,并且数量达到一定值时,那么哨兵之间就会进行一次投票,投票的结果由一个哨兵发起,进行failover操作。切换成功后,就会通过发布订阅模式,让各个哨兵把自己监控的从服务器实现切换主机,这个过程称为客观下线。这样对于客户端而言,一切都是透明的。

    Redis配置哨兵模式

    配置1个哨兵和1主2从的Redis服务器来演示这个过程。

    服务器类型是否是主服务器IP地址端口
    Redis127.0.0.16379
    Redis127.0.0.16380
    Redis127.0.0.16381

    在这里插入图片描述

    测试

    测试环境:一主二从、一个哨兵

    • 哨兵配置文件 sentinel.config
    # sentinel monitor myredis 被监控主机名称 host 1        数字 1 代表主机挂了, slave 投票看谁接替成为主机, 就会成为主机
    sentinel monitor myredis 127.0.0.1 6379 1
    
    • 启动哨兵
    redis-sentinel myconfig/sentinel.conf
    
    [root@ecs-t6-medium-2-linux-20190910000110 redis-5.0.7]# redis-sentinel myconfig/sentinel.conf
    10933:X 12 Jan 2021 15:55:07.961 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
    10933:X 12 Jan 2021 15:55:07.961 # Redis version=5.0.7, bits=64, commit=00000000, modified=0, pid=10933, just started
    10933:X 12 Jan 2021 15:55:07.961 # Configuration loaded
                    _._                                                  
               _.-``__ ''-._                                             
          _.-``    `.  `_.  ''-._           Redis 5.0.7 (00000000/0) 64 bit
      .-`` .-```.  ```\/    _.,_ ''-._                                   
     (    '      ,       .-`  | `,    )     Running in sentinel mode
     |`-._`-...-` __...-.``-._|'` _.-'|     Port: 26379
     |    `-._   `._    /     _.-'    |     PID: 10933
      `-._    `-._  `-./  _.-'    _.-'                                   
     |`-._`-._    `-.__.-'    _.-'_.-'|                                  
     |    `-._`-._        _.-'_.-'    |           http://redis.io        
      `-._    `-._`-.__.-'_.-'    _.-'                                   
     |`-._`-._    `-.__.-'    _.-'_.-'|                                  
     |    `-._`-._        _.-'_.-'    |                                  
      `-._    `-._`-.__.-'_.-'    _.-'                                   
          `-._    `-.__.-'    _.-'                                       
              `-._        _.-'                                           
                  `-.__.-'                                               
    
    10933:X 12 Jan 2021 15:55:07.962 # Sentinel ID is af64af6020684a2fe79f1cc4e1727c39778263bc
    10933:X 12 Jan 2021 15:55:07.962 # +monitor master myredis 127.0.0.1 6379 quorum 1
    10933:X 12 Jan 2021 16:04:10.045 * +slave slave 127.0.0.1:6381 127.0.0.1 6381 @ myredis 127.0.0.1 6379
    10933:X 12 Jan 2021 16:04:30.090 * +slave slave 127.0.0.1:6380 127.0.0.1 6380 @ myredis 127.0.0.1 6379
    

    当6379宕机或者关闭后

    哨兵日志

    11726:X 12 Jan 2021 16:05:35.830 # Configuration loaded
                    _._                                                  
               _.-``__ ''-._                                             
          _.-``    `.  `_.  ''-._           Redis 5.0.7 (00000000/0) 64 bit
      .-`` .-```.  ```\/    _.,_ ''-._                                   
     (    '      ,       .-`  | `,    )     Running in sentinel mode
     |`-._`-...-` __...-.``-._|'` _.-'|     Port: 26379
     |    `-._   `._    /     _.-'    |     PID: 11726
      `-._    `-._  `-./  _.-'    _.-'                                   
     |`-._`-._    `-.__.-'    _.-'_.-'|                                  
     |    `-._`-._        _.-'_.-'    |           http://redis.io        
      `-._    `-._`-.__.-'_.-'    _.-'                                   
     |`-._`-._    `-.__.-'    _.-'_.-'|                                  
     |    `-._`-._        _.-'_.-'    |                                  
      `-._    `-._`-.__.-'_.-'    _.-'                                   
          `-._    `-.__.-'    _.-'                                       
              `-._        _.-'                                           
                  `-.__.-'                                               
    
    11726:X 12 Jan 2021 16:05:35.831 # Sentinel ID is af64af6020684a2fe79f1cc4e1727c39778263bc
    11726:X 12 Jan 2021 16:05:35.831 # +monitor master myredis 127.0.0.1 6379 quorum 1
    11726:X 12 Jan 2021 16:07:34.811 # +sdown master myredis 127.0.0.1 6379
    11726:X 12 Jan 2021 16:07:34.811 # +odown master myredis 127.0.0.1 6379 #quorum 1/1
    11726:X 12 Jan 2021 16:07:34.811 # +new-epoch 1
    11726:X 12 Jan 2021 16:07:34.811 # +try-failover master myredis 127.0.0.1 6379
    11726:X 12 Jan 2021 16:07:34.814 # +vote-for-leader af64af6020684a2fe79f1cc4e1727c39778263bc 1
    11726:X 12 Jan 2021 16:07:34.814 # +elected-leader master myredis 127.0.0.1 6379
    # failove 故障转移
    11726:X 12 Jan 2021 16:07:34.814 # +failover-state-select-slave master myredis 127.0.0.1 6379
    11726:X 12 Jan 2021 16:07:34.866 # +selected-slave slave 127.0.0.1:6381 127.0.0.1 6381 @ myredis 127.0.0.1 6379
    11726:X 12 Jan 2021 16:07:34.866 * +failover-state-send-slaveof-noone slave 127.0.0.1:6381 127.0.0.1 6381 @ myredis 127.0.0.1 6379
    11726:X 12 Jan 2021 16:07:34.925 * +failover-state-wait-promotion slave 127.0.0.1:6381 127.0.0.1 6381 @ myredis 127.0.0.1 6379
    11726:X 12 Jan 2021 16:07:35.087 # +promoted-slave slave 127.0.0.1:6381 127.0.0.1 6381 @ myredis 127.0.0.1 6379
    11726:X 12 Jan 2021 16:07:35.087 # +failover-state-reconf-slaves master myredis 127.0.0.1 6379
    11726:X 12 Jan 2021 16:07:35.147 * +slave-reconf-sent slave 127.0.0.1:6380 127.0.0.1 6380 @ myredis 127.0.0.1 6379
    11726:X 12 Jan 2021 16:07:36.094 * +slave-reconf-inprog slave 127.0.0.1:6380 127.0.0.1 6380 @ myredis 127.0.0.1 6379
    11726:X 12 Jan 2021 16:07:36.094 * +slave-reconf-done slave 127.0.0.1:6380 127.0.0.1 6380 @ myredis 127.0.0.1 6379
    
    11726:X 12 Jan 2021 16:07:36.171 # +failover-end master myredis 127.0.0.1 6379
    # 6381
    11726:X 12 Jan 2021 16:07:36.171 # +switch-master myredis 127.0.0.1 6379 127.0.0.1 6381
    11726:X 12 Jan 2021 16:07:36.171 * +slave slave 127.0.0.1:6380 127.0.0.1 6380 @ myredis 127.0.0.1 6381
    11726:X 12 Jan 2021 16:07:36.171 * +slave slave 127.0.0.1:6379 127.0.0.1 6379 @ myredis 127.0.0.1 6381
    

    此时6381为老大

    127.0.0.1:6381> info replication
    # Replication
    role:master
    connected_slaves:1
    slave0:ip=127.0.0.1,port=6380,state=online,offset=17768,lag=0
    master_replid:25c55d651308dd9fcd2f9c84867ed1a58f2f4286
    master_replid2:9d786450a338f30155c623f99d1bd58129712aab
    master_repl_offset:17768
    second_repl_offset:11402
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:1
    repl_backlog_histlen:17768
    127.0.0.1:6381> 
    

    如果主机此时回来了, 只能归并到新的主机下, 当作从机, 这就是哨兵模式的规则

    11726:X 12 Jan 2021 16:07:36.171 * +slave slave 127.0.0.1:6379 127.0.0.1 6379 @ myredis 127.0.0.1 6381
    11726:X 12 Jan 2021 16:08:06.192 # +sdown slave 127.0.0.1:6379 127.0.0.1 6379 @ myredis 127.0.0.1 6381
    11726:X 12 Jan 2021 16:22:59.961 # -sdown slave 127.0.0.1:6379 127.0.0.1 6379 @ myredis 127.0.0.1 6381
    11726:X 12 Jan 2021 16:23:34.353 # +sdown slave 127.0.0.1:6379 127.0.0.1 6379 @ myredis 127.0.0.1 6381
    11726:X 12 Jan 2021 16:23:37.565 * +reboot slave 127.0.0.1:6379 127.0.0.1 6379 @ myredis 127.0.0.1 6381
    11726:X 12 Jan 2021 16:23:37.648 # -sdown slave 127.0.0.1:6379 127.0.0.1 6379 @ myredis 127.0.0.1 6381
    11726:X 12 Jan 2021 16:23:47.568 * +convert-to-slave slave 127.0.0.1:6379 127.0.0.1 6379 @ myredis 127.0.0.1 6381
    

    哨兵模式

    优点

    • 哨兵集群, 基于主从复制模式, 所有主从配置优点, 它全有
    • 主从可以切换, 故障可以转移, 系统可用性就会很好
    • 哨兵模式就是主从模式的升级, 手动到自动, 更加健壮

    缺点

    • redis 不好在线扩容, 集群容量一旦到达上限, 在线扩容就十分的麻烦
    • 实现哨兵模式的配置其实是很麻烦的, 里面有很多选择

    哨兵模式全部配置

    # Example sentinel.conf
    
    # *** IMPORTANT ***
    #
    # By default Sentinel will not be reachable from interfaces different than
    # localhost, either use the 'bind' directive to bind to a list of network
    # interfaces, or disable protected mode with "protected-mode no" by
    # adding it to this configuration file.
    #
    # Before doing that MAKE SURE the instance is protected from the outside
    # world via firewalling or other means.
    #
    # For example you may use one of the following:
    #
    # bind 127.0.0.1 192.168.1.1
    #
    # protected-mode no
    
    # port <sentinel-port>
    # The port that this sentinel instance will run on
    port 26379          # 如果有哨兵集群, 我们还需要配置每个哨兵端口
    
    # By default Redis Sentinel does not run as a daemon. Use 'yes' if you need it.
    # Note that Redis will write a pid file in /var/run/redis-sentinel.pid when
    # daemonized.
    daemonize no
    
    # When running daemonized, Redis Sentinel writes a pid file in
    # /var/run/redis-sentinel.pid by default. You can specify a custom pid file
    # location here.
    pidfile /var/run/redis-sentinel.pid
    
    # Specify the log file name. Also the empty string can be used to force
    # Sentinel to log on the standard output. Note that if you use standard
    # output for logging but daemonize, logs will be sent to /dev/null
    logfile ""
    
    # sentinel announce-ip <ip>
    # sentinel announce-port <port>
    #
    # The above two configuration directives are useful in environments where,
    # because of NAT, Sentinel is reachable from outside via a non-local address.
    #
    # When announce-ip is provided, the Sentinel will claim the specified IP address
    # in HELLO messages used to gossip its presence, instead of auto-detecting the
    # local address as it usually does.
    #
    # Similarly when announce-port is provided and is valid and non-zero, Sentinel
    # will announce the specified TCP port.
    #
    # The two options don't need to be used together, if only announce-ip is
    # provided, the Sentinel will announce the specified IP and the server port
    # as specified by the "port" option. If only announce-port is provided, the
    # Sentinel will announce the auto-detected local IP and the specified port.
    #
    # Example:
    #
    # sentinel announce-ip 1.2.3.4
    
    # dir <working-directory>
    # Every long running process should have a well-defined working directory.
    # For Redis Sentinel to chdir to /tmp at startup is the simplest thing
    # for the process to don't interfere with administrative tasks such as
    # unmounting filesystems.
    # 哨兵的 sentinel的工作目录
    dir /tmp            
    
    # 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.
    #
    # Note that whatever is the ODOWN quorum, a Sentinel will require to
    # be elected by the majority of the known Sentinels in order to
    # start a failover, so no failover can be performed in minority.
    #
    # Replicas are auto-discovered, so you don't need to specify replicas in
    # any way. Sentinel itself will rewrite this configuration file adding
    # the replicas using additional configuration options.
    # Also note that the configuration file is rewritten when a
    # replica is promoted to master.
    #
    # Note: master name should not include special characters or spaces.
    # The valid charset is A-z 0-9 and the three characters ".-_".
    # 哨兵 sentinel 监控的 redis 主节点 ip port
    # master-name 可以自己命名的主节点名字  只能由字母 A-Z  数字0-9 这三个字符".-_" 组成
    # quorum 配置多少个 sentinel 哨兵统一认为 master主节点失联, 那么这时候客观上认为主节点失联了
    # sentinel monitor <master-name> <ip> <redis-port> <quorum>
    sentinel monitor mymaster 127.0.0.1 6379 2
    
    # sentinel auth-pass <master-name> <password>
    #
    # Set the password to use to authenticate with the master and replicas.
    # Useful if there is a password set in the Redis instances to monitor.
    #
    # Note that the master password is also used for replicas, so it is not
    # possible to set a different password in masters and replicas instances
    # if you want to be able to monitor these instances with Sentinel.
    #
    # However you can have Redis instances without the authentication enabled
    # mixed with Redis instances requiring the authentication (as long as the
    # password set is the same for all the instances requiring the password) as
    # the AUTH command will have no effect in Redis instances with authentication
    # switched off.
    #
    # Example:
    #
    # 当Redia实例中开启了 requirepass foobared 授权密码 这样所有的连接Redis 实例的客户端都要提供密码
    # 设置哨兵 sentinel 连接主从密码, 注意必须为主从设置一样的验证密码
    # sentinel auth-pass mymaster MySUPER--secret-0123passw0rd
    
    # sentinel down-after-milliseconds <master-name> <milliseconds>
    #
    # Number of milliseconds the master (or any attached replica or sentinel) should
    # be unreachable (as in, not acceptable reply to PING, continuously, for the
    # specified period) in order to consider it in S_DOWN state (Subjectively
    # Down).
    #
    # Default is 30 seconds.
    # 指定多少毫秒之后, 主节点没有应答哨兵 sentinel 此时 哨兵主管上认为节点下线 默认 30s
    # sentinel down-after-milliseconds <master-name> <milliseconds>
    sentinel down-after-milliseconds mymaster 30000
    
    # sentinel parallel-syncs <master-name> <numreplicas>
    #
    # How many replicas we can reconfigure to point to the new replica simultaneously
    # during the failover. Use a low number if you use the replicas to serve query
    # to avoid that all the replicas will be unreachable at about the same
    # time while performing the synchronization with the master.
    # 这个配置项指定了发生 failover 主备切换时最多有多少个slave同时对新的master 进行同步
    # 这个数字越小 完成 failover 所需时间就越长
    # 但是如果这个数字越大, 就意味着越多的 slave 因为 replication而不可用
    # 可以通过这个值设置为1 来保证每次只有一个 slave 处于不能处理命令的请求状态
    # sentinel parallel-syncs <master-name> <numreplicas>
    sentinel parallel-syncs mymaster 1
    
    # sentinel failover-timeout <master-name> <milliseconds>
    #
    # Specifies the failover timeout in milliseconds. It is used in many ways:
    #
    # - The time needed to re-start a failover after a previous failover was
    #   already tried against the same master by a given Sentinel, is two
    #   times the failover timeout.
    #
    # - The time needed for a replica replicating to a wrong master according
    #   to a Sentinel current configuration, to be forced to replicate
    #   with the right master, is exactly the failover timeout (counting since
    #   the moment a Sentinel detected the misconfiguration).
    #
    # - The time needed to cancel a failover that is already in progress but
    #   did not produced any configuration change (SLAVEOF NO ONE yet not
    #   acknowledged by the promoted replica).
    #
    # - The maximum time a failover in progress waits for all the replicas to be
    #   reconfigured as replicas of the new master. However even after this time
    #   the replicas will be reconfigured by the Sentinels anyway, but not with
    #   the exact parallel-syncs progression as specified.
    #
    # Default is 3 minutes.
    #
    # 故障转移超时时间 failover-timeout 可以用在以下这些方面
    # 1 同一个 sentinel 对同一个master两次 failover 之间的间隔时间
    # 2 一个 slave 从一个错误的 master 那里同步数据开始计算时间, 直到 slave 被纠正为正确的 master 那里同步数据时
    # 3 当想要取消一个正在进行的 failover 所需要的时间
    # 4 当进行 failover 时, 配置所有 slaves 指定新的 master 所需要的最大时间. 不过, 即使过了这个超时, slave 依然会被正确的配置为指向 master 但是就不按 paralle1- syncs 所配置规来了
    sentinel failover-timeout mymaster 180000
    
    # SCRIPTS EXECUTION
    #
    # sentinel notification-script and sentinel reconfig-script are used in order
    # to configure scripts that are called to notify the system administrator
    # or to reconfigure clients after a failover. The scripts are executed
    # with the following rules for error handling:
    #
    # If script exits with "1" the execution is retried later (up to a maximum
    # number of times currently set to 10).
    #
    # If script exits with "2" (or an higher value) the script execution is
    # not retried.
    #
    # If script terminates because it receives a signal the behavior is the same
    # as exit code 1.
    #
    # A script has a maximum running time of 60 seconds. After this limit is
    # reached the script is terminated with a SIGKILL and the execution retried.
    
    # 配置当某一件事情发生时, 所需要执行的脚本, 可以通过脚本通知来通知管理员, 例如当系统不能正常发邮件通知相关人员
    # 对于脚本的运行结果有以下规则
    # 若脚本执行后返回1, 那么该脚本稍后将会被再次执行, 重复次数默认为 10
    # 若脚本执行后返回2, 或者比2更高的一个返回值, 脚本将不会重复执行
    # 如果脚本在执行过程中由于收到系统中断信号被终止了, 则同返回值1时的行为相同
    # 一个脚本的最大执行时间为60s, 如果超过了这个时间, 脚本将会被一个SIGKILL信号终止, 之后重新执行 
    
    # NOTIFICATION SCRIPT
    #
    # sentinel notification-script <master-name> <script-path>
    # 
    # Call the specified notification script for any sentinel event that is
    # generated in the WARNING level (for instance -sdown, -odown, and so forth).
    # This script should notify the system administrator via email, SMS, or any
    # other messaging system, that there is something wrong with the monitored
    # Redis systems.
    #
    # The script is called with just two arguments: the first is the event type
    # and the second the event description.
    #
    # The script must exist and be executable in order for sentinel to start if
    # this option is provided.
    #
    # Example:
    #
    # sentinel notification-script mymaster /var/redis/notify.sh
    
    # CLIENTS RECONFIGURATION SCRIPT
    #
    # sentinel client-reconfig-script <master-name> <script-path>
    #
    # When the master changed because of a failover a script can be called in
    # order to perform application-specific tasks to notify the clients that the
    # configuration has changed and the master is at a different address.
    # 
    # The following arguments are passed to the script:
    #
    # <master-name> <role> <state> <from-ip> <from-port> <to-ip> <to-port>
    #
    # <state> is currently always "failover"
    # <role> is either "leader" or "observer"
    # 
    # The arguments from-ip, from-port, to-ip, to-port are used to communicate
    # the old address of the master and the new address of the elected replica
    # (now a master).
    #
    # This script should be resistant to multiple invocations.
    #
    # Example:
    #
    # sentinel client-reconfig-script mymaster /var/redis/reconfig.sh
    
    # SECURITY
    #
    # By default SENTINEL SET will not be able to change the notification-script
    # and client-reconfig-script at runtime. This avoids a trivial security issue
    # where clients can set the script to anything and trigger a failover in order
    # to get the program executed.
    
    sentinel deny-scripts-reconfig yes
    
    # REDIS COMMANDS RENAMING
    #
    # Sometimes the Redis server has certain commands, that are needed for Sentinel
    # to work correctly, renamed to unguessable strings. This is often the case
    # of CONFIG and SLAVEOF in the context of providers that provide Redis as
    # a service, and don't want the customers to reconfigure the instances outside
    # of the administration console.
    #
    # In such case it is possible to tell Sentinel to use different command names
    # instead of the normal ones. For example if the master "mymaster", and the
    # associated replicas, have "CONFIG" all renamed to "GUESSME", I could use:
    #
    # SENTINEL rename-command mymaster CONFIG GUESSME
    #
    # After such configuration is set, every time Sentinel would use CONFIG it will
    # use GUESSME instead. Note that there is no actual need to respect the command
    # case, so writing "config guessme" is the same in the example above.
    #
    # SENTINEL SET can also be used in order to perform this configuration at runtime.
    #
    # In order to set a command back to its original name (undo the renaming), it
    # is possible to just rename a command to itsef:
    #
    # SENTINEL rename-command mymaster CONFIG CONFIG
    

    文章已上传gitee https://gitee.com/codingce/hexo-blog
    项目地址: https://github.com/xzMhehe/codingce-java

    展开全文
  • 哨兵模式详解

    千次阅读 2021-02-06 19:51:32
    1、配置哨兵模式文件rentinel.conf #sentinel monitor 被监控的名称 host port 1 sentinel monitor myredis 127.0.0.1 6379 1 后面的这个数字1,代表主机挂了,slave投票看让水接替成为主机,票数最多的,就会成为...
  • 文章目录系列文章目录前言一、Sentinel模式概述二、配置哨兵模式1.启动哨兵总结 前言 在Redis中主从复制解决高可用的方案是:当主节点服务器宕机后,需要手动把一台从节点服务器切换为主节点服务器,手动实现老大...
  • Redis 哨兵模式原理

    2021-03-21 09:20:58
    Redis 哨兵模式原理
  • redis哨兵模式配置

    2021-11-04 12:16:38
    哨兵是特殊的redis服务,不提供读写服务,主要用来监听redis节点,哨兵模式下,客户端第一次通过哨兵代理访问redis主节点,后续继续访问主节点; 不会每次都通过sentinel代理访问主节点,当redis主节点发生变化,...
  • 哨兵模式

    2021-03-25 23:27:22
    3.哨兵模式 3.1 哨兵简介 3.1.1 哨兵概念 首先我们来看一个业务场景:如果redis的master宕机了,此时应该怎么办? [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BM6hSAKa-1616686033486)...
  • 哨兵模式 2.1 哨兵简介 2.2 哨兵工作原理 2.2.1 阶段一: 监控阶段 2.2.2 阶段二: 通知阶段 2.2.3 阶段三: 故障转移阶段 前言 - 单机Redis的风险与问题 如果Redis设计成单节点, 会有如下风险: 问题1: 机器故障 现象:...
  • Redis中的哨兵模式

    2021-03-19 20:01:50
    配置哨兵模式的配置文件sentinel.conf启动哨兵模式测试在哨兵模式下如果主机崩了的话会不会从从机中自动选出一个老大哨兵模式自动选举一个主机这个过程是怎样实现自动化的?换老大之后记得修改各个从机的配置文件中...
  • redis集群之哨兵模式

    2020-12-21 17:56:27
    第二,哨兵模式的配置详解 1.copy一个配置文件sentinel到对应的目录,我把所有的配置文件都放在了myredis文件夹下面了 2.去掉配置文件的注释和空行,生成新的配置文件 3.修改配置文件sentinel-26379.conf 第三,...
  • docker搭建redis哨兵模式集群 一、搭建redis一主两从集群 1.创建docker网络,为了容器间相互通信 docker network create redis 2.运行redis容器 docker run -it -d --network redis --restart=always --name redis...
  • 主从复制和哨兵模式主从复制简介作用简单结构环境配置连接测试复制原理哨兵模式概述作用配置哨兵配置文件sentimel.conf启动哨兵模式哨兵模式的规则优点缺点 主从复制 简介 主从复制,是指将一台Redis服务器的数据,...
  • Redis哨兵模式缺点

    2020-12-06 17:36:47
    哨兵模式的搭建过程见:...1. 启动哨兵模式: [root@localhost redis-5.0.10]# ps -ef | grep redis root 2916 1 0 03:19 ? 00:00:03 src/redis-server *:6380 root 3011 1 0
  • Redis 哨兵模式配置

    2021-03-20 15:30:13
    Redis 哨兵模式配置
  • 哨兵模式(自动选举主机的模式)什么是哨兵模式?哨兵的作用1.创建哨兵sentinel.conf配置文件2.启动哨兵3.主机挂掉,进行投票4.当6379重写连接,6391还是主机,而6379变成了从机。优点缺点哨兵模式全部配置 配置文件 ...
  • Redis哨兵模式 什么是Redis哨兵模式 Redis Sentinel 是一个分布式系统, 你可以在一个架构中运行多个 Sentinel 进程(progress), 这些进程使用流言协议(gossip protocols)来接收关于主服务器是否下线的信息,并...
  • 在线扩容十分麻烦 实现哨兵模式的配置其实是很麻烦的,里面有很多选择 哨兵模式的配置文件 # Example sentinel.conf # 哨兵sentinel实例运行的端口 默认26379 port 26379 # 哨兵sentinel的工作目录 dir /tmp # 哨兵...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 31,271
精华内容 12,508
关键字:

哨兵模式