Redis哨兵实施

Kri*_*psv 0 php redis logstash redis-sentinel predis

我们有一个设置:
2个php服务器
2个redis服务器作为主/从
1 运行1个日志服务器,它存储所有类型的日志在elastcisearch

我们想为redis服务器实现自动故障转移,现在在php服务器redis主地址ir硬编码.

并且在日志服务器中,其具有来自master的redis输入的logstash实例也在logstash配置中被编码.

我们已在两台redis服务器上安装了redis sentinel,但它运行正常.

但问题是如何在php和logstash中获取master或者这不是正确的方法.

对于PHP我发现这个客户端包装器https://github.com/Sparkcentral/PSRedis

但是没有为logstash找到任何东西,我认为我只是在错误的方向搜索

所以问题是,如果没有人能指出我,这是否是正确的方向.

ant*_*rez 5

为了使用Sentinel,请记住您需要三个实例,因此在您的设置中,请确保在日志服务器中安装Sentinel实例,并在每个redis服务器实例中安装一个实例.Sentinel的三个副本应该在被认为以彼此独立的方式失败的计算机/ VM上运行(因此同一物理主机中的多个VM不是一个好主意).

也就是说,为了为Sentinel工作,您的客户需要实现此处指定的Sentinel协议:http://redis.io/topics/sentinel-clients.

https://github.com/Sparkcentral/PSRedis页面中,我找不到任何关于它们确切实现的提示,是否正在实现上面我的消息中指定的最新Sentinel协议?我会打开一个问题并询问他们是否实现了记录的Sentinel协议:如果不是,他们应该,如果是,他们应该在README中记录它们.

显然,Predis本身尚未实施对Sentinel的支持:https://github.com/nrk/predis/issues/131

如果您有时间花钱,我建议:

  1. 问PSRedis他们究竟实现了什么.
  2. 熟悉Sentinel文档中描述的协议,这是非常基本的东西.
  3. 检查自己PSRedis是否以正确的方式实现它,如果没有,请提供拉取请求.

快乐的黑客.