我们目前正在使用Redis 2.8.4和StackExchange.Redis(并且喜欢它),但目前还没有针对硬件故障等的任何形式的保护.我正在尝试使解决方案正常工作,我们有主/从和监控但不能完全到达那里,我在搜索后找不到任何真正的指针.
所以目前我们已经做到了这一点:
我们在每个节点上有3个redis服务器和sentinel(由Linux人员设置):devredis01:6383(master)devredis02:6383(slave)devredis03:6383(slave)devredis01:26379(sentinel)devredis02:26379(sentinel)devredis03: 26379(哨兵)
我能够将StackExchange客户端连接到redis服务器并进行写入/读取,并使用Redis Desktop Manager验证是否正在跨所有redis实例复制数据.
我也可以使用不同的ConnectionMultiplexer连接到sentinel服务,查询配置,请求主redis节点,请求奴隶等.
我们还可以终止主redis节点并验证其中一个从服务器是否已升级为主服务器,并且复制到另一个从服务器继续工作.我们可以观察redis连接尝试重新连接到主设备,如果我重新创建ConnectionMultiplexer,我可以再次写入/读取新升级的主设备并从从设备读取.
到现在为止还挺好!
我缺少的是你如何在生产系统中将它们整合在一起?
我应该从sentinel获取redis端点并使用2个ConnectionMultiplexers吗?我究竟需要做些什么来检测节点是否已经关闭?StackExchange可以自动为我执行此操作还是通过事件,以便重新连接我的redis ConnectionMultiplexer?我应该处理ConnectionFailed事件然后重新连接,以便ConnectionMuliplexer找出新主设备是什么?据推测,当我重新连接任何写入的尝试都会丢失?
我希望我不会错过一些非常明显的东西,我只是在努力将它们放在一起.
提前致谢!