我正在尝试设置高可用性设置,如果服务器出现故障,托管我的主Redis缓存,它将选择不同的主服务器,但在阅读有关Sentinels的所有文档后我有点困惑。
例如,如果我有一个我将Redis客户端指向http://my.RedisServer.com:6379的网址,那么帮助故障转移到另一台服务器的标记如何在http://mybackup.RedisServer.com:6379说?
我正在使用.Net的ServiceStack.Redis客户端并在Windows服务器上安装我的Redis,但我想为了获得高可用性我必须切换到Linux并使用Twemproxy设置或其他东西?我猜我不能将http://my.RedisServer.com:6379存储在我的web.config中并让它以某种方式正常工作?我想在某个地方必须有一个映射到2+ IP的DNS,并像任何H.A.一样负载均衡。网络应用......
我想我看到了一些可能是我的答案的PooledRedisClientManager?
感谢您的澄清。
答案 0 :(得分:1)
我只是在Windows上设置Redis,一个主设备和一个从设备,每个服务器一个标记,服务器在ms网络负载平衡器的集群环境中。
基本上我所做的是:
服务器A :(本地IP:1.10.10.1,群集IP:1.10.11.1)
服务器B :(本地IP:1.10.10.2,群集IP:1.10.11.1)
现在我遇到的第一个问题是当我连接到群集地址时,我不知道哪个服务器正在响应,我需要连接到主服务器,因为从服务器是只读的(仅用于故障转移)所以当然HAProxy和Twemproxy就是这样,但是没有Windows的实现,所以我决定为此目的创建一个代理:
https://bitbucket.org/israelito3000/redis
所以基本上我在两台服务器上安装了redis-proxy,现在当我从客户端库连接时,代理总是将包传输给主服务器,所以它就像一个隧道。当主redis失败时,sentinel会自动将slave的角色更改为master,代理会将流量重定向到新的master,所以基本上从客户端我不需要做任何事情。
重要的是要说我无法直接访问服务器(只能通过集群ip)
答案 1 :(得分:0)
我相信我找到了答案。
How to tell a Client where the new Redis master is using Sentinel
显然,您只需订阅并收听Sentinels的活动。有道理......我只是觉得有一种更精简的方式。
我读过一些关于Linux的Twemproxy作为代理,可能会为你做这件事吗?但我正在使用redis for Windows并试图找到Windows选项。如果这是批准的方式,我们可能会转移到Linux。