标签: redis-sentinel

Sentinel和Cluster的Redis优势

我打算创建一个高可用的 Redis 集群。在阅读了许多关于构建 Redis 集群的文章后,我很困惑。那么究竟是什么

  • Redis Sentinel Master1 Slave1 Slave2 集群的优势?作为 Redis 多节点分片集群是否更可靠?
  • Redis 多节点分片集群的优势?作为Redis Sentinel Master1 Slave1 Slave2集群是否更可靠?

Redis Sentinel Master1 Slave1 Slave2 集群的进一步问题:

  • 当我有 1 个 Master 和两个 Slave 并且流量越来越高时,这个集群会变小,我怎样才能使集群变大?

关于 Redis 多节点分片集群的更多问题:

  • 为什么有这么多在单个实例上但在不同端口上运行集群的演示?这对我来说毫无意义。
  • 当我有一个包含 4 个主节点和 4 个副本的集群时,应用程序或客户端如何确保写入集群?当 Master1 和 Slave1 都快死了但我的应用程序总是写入 Master1 的 IP 时,它将不再工作。有哪些解决方案可以很好地实现分片集群,使其可供应用程序使用单个 IP 和端口找到它?保活?代理?
  • 当我使用例如 Keepalived 进行 4 主设置时 - 这不会取消不同的主吗?
  • 此外,我需要了解为什么多节点集群仅适用于在内存可用时需要写入更多数据的解决方案。为什么?对我来说,多主设置听起来不错,可以扩展。
  • 当集群未处于缓存模式时,分片集群设置不支持多键操作是否正确?

我不确定这两个解决方案是否是唯一的解决方案。希望你们能帮助我理解Redis的架构。抱歉问了这么多问题。

redis redis-sentinel redis-cluster

3
推荐指数
1
解决办法
2684
查看次数

使用 Sentinel 升级 Redis 的最佳实践?

我有 3 个哨兵正在监视三个 redis 节点。我四处搜索,文档似乎不清楚如何最好地升级这种类型的配置。我目前使用的是 3.0.6 版,我想升级到最新的 5.0.5。我对围绕此的程序有几个问题。

  1. 升级两个大版本可以吗?我在我们的临时环境中这样做了,它似乎很好。我们使用非常基本的 redis 功能,并且版本之间没有重大变化。

  2. 顺序重要吗?我应该先升级所有的哨兵然后说redis节点,还是应该在验证redis平面后最后说哨兵平面?我应该一次做一个哨兵/redis 节点吗?

对此的任何建议或经验将不胜感激。

redis redis-sentinel

3
推荐指数
1
解决办法
814
查看次数

我们可以通过redis-sentinel将奴隶标记为无法升级吗?

我们有一个redis集群,其中有一个由三个哨兵进程管理的主服务器和一个从服务器,还有一个附加的远程从服务器,托管在不同的数据中心中,以便在主服务器和从计算机发生故障时进行透明的故障转移和数据保存。

可能会发生暂时性错误,仅使主Redis进程崩溃,在这种情况下,我们希望看到从属进程被提升为主控,而远程从属被重新控制为主控。但是,哨兵似乎也可以很容易地将远程从属升级为主机,并且我们还没有找到防止这种情况的方法。

有什么方法可以将特定的从属计算机标记为不可升级,以便在发生故障转移时,哨兵将不会尝试使其成为主机?

redis redis-sentinel

2
推荐指数
1
解决办法
228
查看次数

如何使用 Sentinel 禁用 redis 主从复制

我们有一个使用 Redis Sentinel(3 哨兵 1 主 1 从)的应用程序。我们根本不需要复制。如何关闭复制?

redis node-redis redis-sentinel

2
推荐指数
1
解决办法
2633
查看次数

Redis Sentinel身份验证

我有3台运行Redis和Sentinel的服务器。所有实例都在配置中

requirepass XXX
masterauth XXX
Run Code Online (Sandbox Code Playgroud)

我可以使用redis-cli连接到redis服务器,但是如果尝试连接到哨兵,则无法进行身份验证。

root@ip-:/usr/lib/nagios/plugins# redis-cli -p 26379
127.0.0.1:26379> AUTH xxx
(error) ERR unknown command 'AUTH'
127.0.0.1:26379> 
Run Code Online (Sandbox Code Playgroud)

如果我使用相同的命令,但带有redis端口,则可以使用。

最好的谢谢

redis sentinel redis-sentinel

2
推荐指数
1
解决办法
2775
查看次数

Stackexchange Redis Sentinel 客户端

我正在使用 Redis 分布式缓存,其故障转移模式与哈希数据分布合并。我的配置是:

          Sentinel1                   Sentinel4
Master1                     Master2
          Sentinel2                   Sentinel5
Slave1                      Slave2
          Sentinel3                   Sentinel6
Run Code Online (Sandbox Code Playgroud)

在我的代码中,我需要使用哨兵访问主缓存。

我要指出哪一点?

我想我必须在 ConnectionMultiplexer 的配置中注册所有哨兵点。

我可以使用以下代码将我的客户端连接到哨兵:

  var options = new ConfigurationOptions()
    {
        CommandMap = CommandMap.Sentinel,
        EndPoints = { { IP, Port } },
        AllowAdmin = true,
        TieBreaker = "",
        ServiceName = ServiceName,
        SyncTimeout = 5000,
        AbortOnConnectFail = true,
        Ssl = false
    };
    var connection = ConnectionMultiplexer.Connect(options, Console.Out);
    return connection;
Run Code Online (Sandbox Code Playgroud)

一旦获得连接,我需要使用标准 Redis 方法(如 SetString 和 getString)访问缓存数据库...所以

db = conn.getDatabase();
db.getString(key);
db.setString(key, value);
Run Code Online (Sandbox Code Playgroud)

此时我收到一条错误消息,指出“此操作已在命令映射中禁用,无法使用:SETEX”或 GET。

我想应该有一种方法可以询问哨兵与当前主机的连接,但我没有找到很多有用的代码示例。有人可以帮我吗?

c# caching redis redis-sentinel stackexchange.redis

2
推荐指数
1
解决办法
4446
查看次数

无法使用jedis连接redis哨兵

我正在尝试使用 JedisSentinelPool 连接到 Redis Sentinel

private static final JedisSentinelPool pool = new JedisSentinelPool("mymaster", getSentinels());

private static Set<String> getSentinels(){

    Set<String> mysentinels = new HashSet<>();
    mysentinels.add(new HostAndPort("localhost", 26379).toString());
    return mysentinels;
}
Run Code Online (Sandbox Code Playgroud)

这给了我以下错误:

导致:redis.clients.jedis.exceptions.JedisConnectionException:所有哨兵都已关闭,无法确定 mymaster master 正在哪里运行...

但是,我可以看到我的哨兵正在运行。所以参考这篇文章: https: //github.com/luin/ioredis/issues/64 我在我的redis主服务器上尝试了以下命令

./redis-cli -h redis-1 -p 26379
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

无法连接到位于 redis-1:26379 的 Redis:提供了节点名或服务名,或未知

这里有什么问题呢?

redis redis-sentinel

2
推荐指数
1
解决办法
1万
查看次数

尝试使用 ioredis Nodejs 模块使用密码连接到 Sentinel 时出错

我正在尝试使用 ioredis 连接到 docker 下的哨兵服务,该服务需要在我的配置中输入密码。这是我的代码:

sentinels: [
{ host: "192.168.0.35", port: 26379 }
],
name: "redismaster",
sentinelPassword: "sentinelPassword",
sentinelRetryStrategy: function(times) {
// reconnect after
return Math.max(times * 100, 3000);
}
});
Run Code Online (Sandbox Code Playgroud)

但它没有成功。这是激活 DEBUG=ioredis 时的日志:

2020-02-07T18:06:10.091Z ioredis:redis status[192.168.0.35:26379]: [empty] -> connecting
2020-02-07T18:06:10.093Z ioredis:redis queue command[192.168.0.35:26379]: 0 -> sentinel([ 'get-master-addr-by-name', 'redismaster' ])
2020-02-07T18:06:10.096Z ioredis:redis status[192.168.0.35:26379]: connecting -> connect
2020-02-07T18:06:10.097Z ioredis:redis write command[192.168.0.35:26379]: 0 -> auth([ 'thisis1SentinElP@sSwOrd' ])
2020-02-07T18:06:10.097Z ioredis:redis status[192.168.0.35:26379]: connect -> ready
2020-02-07T18:06:10.097Z ioredis:connection send 1 commands in offline queue
2020-02-07T18:06:10.098Z …
Run Code Online (Sandbox Code Playgroud)

redis node.js redis-sentinel docker ioredis

2
推荐指数
1
解决办法
6039
查看次数

通过 Sentinel 将 Celery 连接到 Redis

我如何告诉 celery 我在 redis 上寻找的服务名称?我正在尝试使用 Celery 4 中的内置 Sentinel 支持。我正在传递一个按文档所述配置的代理 URL :sentinel://0.0.0.0:26379

但是 redis 似乎抱怨没有通过 service_name:

File "/usr/local/lib/python2.7/dist-packages/redis/sentinel.py", line 222, in discover_master
    raise MasterNotFoundError("No master found for %r" % (service_name,))
OperationalError: No master found for None
Run Code Online (Sandbox Code Playgroud)

是否可以使用此 URL 格式传递 service_name ?我试过了

sentinel://0.0.0.0:26379/my_service
sentinel://0.0.0.0:26379/0/my_service
Run Code Online (Sandbox Code Playgroud)

我找不到任何关于连接 URL 的文档——我找到了redis-sentinel-URL,但我没有看到它包含在 redis 包中,所以我什至不确定它是否被 redis 使用。

redis celery redis-sentinel

1
推荐指数
1
解决办法
3037
查看次数

如何在sentinel配置中切换redis master

我有一个 redis 哨兵配置,其中有一个主服务器、两个从服务器和 3 个正在运行的哨兵。我注意到,在某些时候,哨兵可能会切换主站,选举其中一个从站作为主站。这会给作为独立客户端连接到主节点的应用程序带来问题(我正在努力更改代码以使用哨兵)。我想知道是否可以通过连接到哨兵客户端(即通过“ ”)来切换主redis-cli服务器

有人可以告诉我是否有可以用来切换主IP的命令吗?

redis redis-sentinel

0
推荐指数
1
解决办法
8377
查看次数