2节点Redis HA
我有两个节点,我希望在主动 - 主动模式下作为服务器运行,并且还具有高可用性功能,即如果一个服务器出现故障,另一个应该开始接收所有请求,但两者都启动后,两者都应该接受所有请求。 现在,由于Redis不允许主动 - 主动模式用于相同的散列集,并且我没有选择运行Sentinel,因为我无法拥有第三个节点,我的想法是在复制中运行这两个节点,并且我自己决定是否主节点关闭并将从设备升级为主设备。 这有什么问题吗? 当原来的主人回来时,是否有办法将其配置为奴隶?
这听起来像个好主意吗? 除了Redis之外,我愿意接受其他建议。
好的,SLAVEOF的部分解决方案:
您可以通过运行以下命令手动将slave设置为master:
SLAVEOF NO ONE
您可以通过运行以下命令手动将主机转换为从机
SLAVEOF <HOST> <port>
集群应该被禁用。
一般来说,运行两个节点并不是一个好主意,因为它必然会产生裂脑问题:当两个节点之间的网络关闭一两次时,两个节点将不可避免地认为彼此处于脱机状态,并且会促进/保持自身成为主人并开始接受来自其他服务的请求。 然后发生裂脑。
如果您对这种可能的情况没有问题,那么您可以借助脚本文件和起搏器或保活的高可用性服务来查看安装主从。
通常,您必须通过预定义规则告诉集群管理员,当两台机器在裂脑情况下重新合并时,哪一个是您的首选主设备。
当选slaveof no one
一个主设备时,执行该脚本,基本上它自己执行slaveof no one
slaveof <new-master-ip> <port>
并在另一个节点上执行slaveof <new-master-ip> <port>
。
您可以在脚本文件中更进一步,尝试将两个数据集合并在一起,但是否可以实现完全取决于您如何在Redis中组织数据,以及您准备等待多久数据同步。
我之前通过pacemaker + corosync完成了这个工作。
我建议至少有3个节点使用Sentinel安装程序,以便在当前主节点发生故障时启用八卦/仲裁来将从站自动升级为主节点。
链接地址: http://www.djcxy.com/p/37595.html上一篇: 2 Node Redis HA