当前位置: 首页 > 面试题库 >

使用C#从StackExchange / Sentinel进行Redis故障转移

步弘和
2023-03-14
问题内容

我们目前正在使用Redis
2.8.4和StackExchange.Redis(并喜欢它),但目前没有针对硬件故障等的任何保护措施。我正在尝试使解决方案起作用,从而使我们具有主/从属和哨兵监视功能,但无法完全到达目标位置,并且在搜索后无法找到任何实际的指针。

因此,目前我们已经做到了:

每个节点上都有3个Redis服务器和哨兵(由Linux专家设置):devredis01:6383(主服务器)devredis02:6383(从属服务器)devredis03:6383(从属服务器)devredis01:26379(哨兵)devredis02:26379(哨兵)devredis03:
26379(前哨)

我能够将StackExchange客户端连接到Redis服务器,并使用Redis Desktop
Manager进行读写操作,并验证是否正在所有Redis实例之间复制数据

我还可以使用其他ConnectionMultiplexer连接到哨兵服务,查询配置,询问主redis节点,询问slave等。

我们还可以杀死主Redis节点,并验证其中一个从属服务器已升级为主服务器,并复制到另一个从属服务器继续工作。我们可以观察到redis连接试图重新连接到主服务器,而且如果我重新创建ConnectionMultiplexer,我可以再次写入/读取到新升级的主服务器并从从服务器读取。

到目前为止,一切都很好!

我缺少的一点是如何将它们整合到生产系统中?

我应该从哨兵那里获取redis端点并使用2个ConnectionMultiplexers吗?我究竟该怎么做才能检测到某个节点发生故障?StackExchange可以自动为我执行此操作,还是可以通过一个事件,以便我可以重新连接Redis
ConnectionMultiplexer?我是否应该处理ConnectionFailed事件,然后重新连接以便ConnectionMuliplexer找出新的主服务器是什么?大概在我重新连接时,任何写尝试都将丢失吗?

我希望我不会在这里遗漏一些非常明显的东西,我只是在努力将它们放在一起。

提前致谢!


问题答案:

我只是问了这个问题,然后发现了一个与您和我的问题类似的问题,我相信这可以回答我们的代码(客户端)现在如何知道当前主服务器宕机时哪个是新的主服务器?

显然,您只需要订阅并收听Sentinels的活动即可。很有道理..我只是觉得有一种更简化的方法。

我读了一些有关Twemproxy for
Linux的信息,它充当代理,可能对您有用吗?但是我在Windows上使用Redis,并试图找到Windows选项。如果那是应该被批准的方式,那么我们可能只是迁移到Linux。



 类似资料:
  • 我们在每个节点上都有3个redis服务器和sentinel(由Linux人员设置):devredis01:6383(主)devredis02:6383(从)devredis03:6383(从)devredis01:26379(sentinel)devredis02:26379(sentinel)devredis03:26379(sentinel) 我能够将StackExchange客户机连接到re

  • 我在端口7000、7001和7002上设置了三个服务器(一个主服务器和两个从服务器),在端口26379、26380和26381上设置了三个哨兵,它们都在同一台机器(ubuntu VM)上。 当我启动它们时,根据日志,一切看起来都很好,当我对哨兵运行信息命令时,看起来也很健康。但是当我放下主程序(通过Ctrl+C或redis-cli SLEEP命令使其停止工作)时,没有一个从程序实例被引入为新的主程

  • 我试图设置一个简单的,并将其配置为将主服务器故障转移到从服务器。 我设置了4个VM(使用),每个VM上都安装了redis。我有一个主机器和两个奴隶。最后一台机器是哨兵。 主服务器和从服务器都有默认配置,只是我将绑定地址更改为,而从服务器有行。 在哨兵中,我遵循了基本教程,并放入了以下设置: 我做错了什么?

  • Redis Sentinel手动故障转移命令超时 [8]01 7月01:36:57.317#哨兵runid为c337f6f0dfa1d41357338591cd0181c07cb026d0 [8]01 7月01:38:13.135#+监视器主redis-holt-overflow 10.19.8.2 6380法定人数1 [8]01 7月01:38:13.135#+设置主redis-holt-ove

  • 我有3个redis Sentinel的盒子设置: 在我的主人死后,哨兵进行了故障转移到R2。我将M1重新联机(清除了一些磁盘空间),现在M1还活着,但是是R2的奴隶。是否有一种自动的(或半自动的)方法,使M1再次成为主,R2再次成为M1和我的流量的从属,使用M1作为主redis实例?