我试图设置一个典型的redis sentinel配置,三台机器将运行三个redis服务器和三个redis sentinel。redis服务器的主/从部分工作正常,但哨兵不工作。当我启动两个哨兵时,与主人一起的哨兵检测奴隶,但在指定的时间后将他们标记为down。我在debian jessie机器上运行Redis 3.0.5 64位。
8319:X 22 Dec 14:06:17.855 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
8319:X 22 Dec 14:06:17.855 # Sentinel runid is cdd5bbd5b84c876982dbca9d45ecc4bf8500e7a2
8319:X 22 Dec 14:06:17.855 # +monitor master mymaster xxxxxxxx0 6379 quorum 2
8319:X 22 Dec 14:06:18.857 * +slave slave xxxxxxxx2:6379 xxxxxxx2 6379 @ mymaster xxxxxxx0 6379
8319:X 22 Dec 14:06:18.858 * +slave slave xxxxxx1:6380 xxxxxxx1 6380 @ mymaster xxxxxxx0 6379
8319:X 22 Dec 14:07:18.862 # +sdown slave xxxxxxxx1:6380 xxxxxxx1 6380 @ mymaster xxxxxx0 6379
8319:X 22 Dec 14:07:18.862 # +sdown slave xxxxxx2:6379 xxxxxxx2 6379 @ mymaster xxxxxx0 6379
哨兵配置文件:
daemonize yes
pidfile "/var/run/redis/redis-sentinel.pid"
logfile "/var/log/redis/redis-sentinel.log"
bind 127.0.0.1 xxxxxxx0
port 26379
sentinel monitor mymaster xxxxxxx0 6379 2
sentinel down-after-milliseconds mymaster 60000
sentinel config-epoch mymaster 0
sentinel leader-epoch mymaster 0
dir "/var/lib/redis"
当然,这些机器之间存在连通性,因为从机工作正常:
7553:S 22 Dec 13:46:33.285 * Connecting to MASTER xxxxxxxx0:6379 <br/>
7553:S 22 Dec 13:46:33.286 * MASTER <-> SLAVE sync started
7553:S 22 Dec 13:46:33.286 * Non blocking connect for SYNC fired the event.
7553:S 22 Dec 13:46:33.287 * Master replied to PING, replication can continue...
7553:S 22 Dec 13:46:33.288 * Partial resynchronization not possible (no cached master)
7553:S 22 Dec 13:46:33.291 * Full resync from master: f637ca8fe003acd09c6d021aed3f89a0d9994c9b:98290
7553:S 22 Dec 13:46:33.350 * MASTER <-> SLAVE sync: receiving 18 bytes from master
7553:S 22 Dec 13:46:33.350 * MASTER <-> SLAVE sync: Flushing old data
7553:S 22 Dec 13:46:33.350 * MASTER <-> SLAVE sync: Loading DB in memory
7553:S 22 Dec 13:46:33.350 * MASTER <-> SLAVE sync: Finished with success
7553:S 22 Dec 14:01:33.072 * 1 changes in 900 seconds. Saving...
我可以自己回答。问题是sentinel conf中出现的第一个IP是本地主机IP。它需要是绑定IP。以防万一它为任何人服务。
当主人倒下的时候,它不应该被降级为奴隶吗?有了这一点,当它再次升起时,它将立即成为奴隶。我知道(自从Redis2.8?)配置重写功能使得Redis实例关闭时不能修改配置。 在一段时间内有两个主服务器对我来说是一个问题,因为在这么短的时间内,HaProxy不是向一个主服务器Redis发送请求,而是在这两个主服务器之间进行负载平衡。 有没有办法把失败的主人立即降级为奴隶?
Redis 哨兵(Sentinel)是 Redis 的高可用性(Hight Availability)解决方案:由一个或多个 Sentinel 实例组成的 Sentinel 系统可以监视任意多个主服务器,以及这些主服务器的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器的某个从服务器升级为新的主服务器,然后由新的主服务器代替已下线的主服务器继续处理命令请求。 Sentinel
主要内容:哨兵模式原理,哨兵模式应用,sentinel.conf配置项在 Redis 主从复制模式中,因为系统不具备自动恢复的功能,所以当主服务器(master)宕机后,需要手动把一台从服务器(slave)切换为主服务器。在这个过程中,不仅需要人为干预,而且还会造成一段时间内服务器处于不可用状态,同时数据安全性也得不到保障,因此主从模式的可用性较低,不适用于线上生产环境。 Redis 官方推荐一种高可用方案,也就是 Redis Sentinel 哨兵模式,它弥补了主
我试图在哨兵模式下将Nifi与Redis集成,如本教程所述: https://bryanbende.com/development/2017/10/09/apache-nifi-redis-integration 我的Redis集群有2个节点,运行在端口6391上,还有2个sentinel,运行在端口6392上。它似乎工作正常: PutDistributedMapCache[ID=08E39B65
Redis4.x是否兼容使用Sentinels运行TLS?我发现一些线程提到对TLS的支持将被添加到3.2中,但没有任何证实。
我们有一个redis集群,其中一个主服务器和一个从服务器由三个前哨进程管理,另外还有一个远程从服务器,托管在不同的数据中心中,以便在主服务器和从服务器发生不良情况时进行透明的故障转移和数据保存。 可能发生的情况是,一个短暂的错误只会关闭主redis进程,在这种情况下,我们希望看到从进程被提升为主进程,而远程从进程被重新分配给它。然而,似乎哨兵也可以很容易地将远程奴隶提升为主人,我们还没有找到任何方