Big*_*323 8 database redis hiredis
我有两个节点,我想在主动 - 主动模式下作为服务器运行,并且还具有HA功能,即如果一个停机,另一个应该开始接收所有请求,但两者都启动,两者都应该接受所有请求.现在因为Redis不允许同一个哈希集的主动 - 主动模式,并且我没有运行Sentinel的选项,因为我没有第三个节点,我的想法是在复制中运行两个节点,我自己决定是否主节点关闭并将从属设备提升为主节点.这有什么问题吗?当原始主机重新启动时,有没有办法将其配置为从机?
这听起来像个好主意吗?我对Redis以外的建议持开放态度.
通常运行两个节点从来都不是一个好主意,因为它必然会出现脑裂问题:当两个节点之间的网络出现一两分钟宕机时,两个节点不可避免地会认为对方离线并会促进/保持自己成为主人并开始接受来自其他服务的请求。然后裂脑发生了。
如果您对这种可能的情况感到满意,那么您可以考虑在脚本文件和起搏器或 keepalived 等 HA 服务的帮助下设置主从。
通常,您必须通过预定义的规则告诉集群管理器,当两台机器在裂脑情况下重新加入时,哪一台是您的首选主机。
When a master is elected, execute the script and basically it execute slaveof no oneon itself and execute slaveof <new-master-ip> <port>on the other node.
您可以在脚本文件中更进一步,尝试将两个数据集合并在一起,但这是否可以实现完全取决于您在 Redis 中组织数据的方式以及您准备等待多长时间才能拥有所有数据数据同步。
我以前通过起搏器+corosync 这样做过。
好的,使用SLAVEOF的部分解决方案:
您可以通过运行以下命令手动将从站升级为主站:
SLAVEOF NO ONE
Run Code Online (Sandbox Code Playgroud)
您可以通过运行以下命令手动将主机转换为从机:
SLAVEOF <HOST> <port>
Run Code Online (Sandbox Code Playgroud)
应禁用集群。