我们有一个设置:
2个PHP服务器
2台redis服务器作为主/从运行
1 日志服务器,存储elastcisearch中的各种日志
我们想为redis服务器实现自动故障转移,现在在php服务器中硬编码redis master地址。
并且在日志服务器中,它有一个 logstash 实例,从主服务器输入 redis 也在 logstash 配置中进行了硬编码。
我们在两台 redis 服务器上都安装了 redis sentinel,它运行良好。
但问题是如何掌握 php 和 logstash,否则这不是正确的方法。
对于 php,我找到了这个客户端包装器 https://github.com/Sparkcentral/PSRedis
但是还没有找到 logstash 的任何东西,我怀疑我只是在错误的方向上搜索
所以问题是这是否是正确的方向,如果没有人能指出我的话。
最佳答案
为了使用 Sentinel,请记住您需要三个实例,因此在您的设置中确保在日志服务器中安装一个 Sentinel 实例,并在每个 Redis 服务器实例中也安装一个。 Sentinel 的三个副本应该在被认为以彼此独立的方式失败的计算机/VM 上运行(因此同一物理主机中的多个 VM 不是一个好主意)。
也就是说,为了为 Sentinel 工作,您的客户需要按照此处指定的方式实现 Sentinel 协议(protocol):http://redis.io/topics/sentinel-clients .
在https://github.com/Sparkcentral/PSRedis页面 我找不到关于他们究竟实现了什么的任何提示,他们是否按照我上面的消息中指定的那样实现了最新的 Sentinel 协议(protocol)?我会提出一个问题并询问他们是否实现了文档化的 Sentinel 协议(protocol):如果没有,他们应该,如果是,他们应该在 README 中记录它们。
显然 Predis 本身还没有实现对 Sentinel 的支持:https://github.com/nrk/predis/issues/131
如果你有时间,我建议:
- 询问 PSRedis 他们究竟实现了什么。
- 熟悉 Sentinel 文档中描述的协议(protocol),它是非常基础的东西。
- 检查自己是否 PSRedis 以正确的方式实现它,如果没有,请提供拉取请求。
祝你黑客愉快。
关于php - Redis哨兵实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30083277/