我们有一个设置:
2 php服务器
2台redis服务器作为主/从服务器运行
1个日志服务器,在Elastcisearch中存储所有类型的日志
我们想实现redis服务器的自动故障转移,现在在php服务器redis主地址ir硬编码。
而在日志服务器中,有一个logstash实例,其中包含来自master的redis输入,也在logstash config中进行了共享编码。
我们在两台redis服务器上都安装了redis sentinel,运行良好。
但问题是如何在php和logstash中获得硕士学位,或者这不是正确的方法。
对于php,我找到了这个客户端包装器https://github.com/Sparkcentral/PSRedis
但我没有找到任何东西,我想我只是在寻找错误的方向
所以问题是如果没有人能指点我,这是否是正确的方向。

最佳答案

要使用sentinel,请记住您需要三个实例,因此在您的设置中,请确保在日志服务器中安装sentinel实例,并在每个redis服务器实例中安装一个。sentinel的三个副本应该运行在被认为以相互独立的方式失败的计算机/vm上(因此,在同一物理主机上运行多个vm不是一个好主意)。
也就是说,为了为sentinel工作,您的客户需要实现这里指定的sentinel协议:http://redis.io/topics/sentinel-clients
https://github.com/Sparkcentral/PSRedis页面中,我找不到关于它们具体实现什么的任何提示,它们是否实现了上面消息中指定的最新sentinel协议?我将打开一个问题,询问他们是否实现了文档化的sentinel协议:如果没有,他们应该,如果是,他们应该在自述文件中记录它们。
显然predis本身还没有实现对sentinel的支持:https://github.com/nrk/predis/issues/131
如果你有时间,我建议:
问问psredis他们到底实现了什么。
熟悉sentinel文档中描述的协议,它是非常基本的东西。
请检查psredis是否以正确的方式实现了它,如果没有,请提供一个pull请求。
快乐黑客。

关于php - Redis哨兵实现,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30083277/

10-13 02:04