我可以使用负载平衡器的Redis吗?

我正在使用redis的1个主&1奴隶。

我也想同时使用负载均衡器。所以我可以同时使用两个redis服务器。

另外我想添加奴隶作为主人的故障。 那我能做到吗?

我从来没有尝试过,但主要的问题是,与复制,甚至同步复制,redis只允许主从关系,而不是主/主关系。

这样做的后果是,如果你写入从机,这些写入将不会在主机上可用。

我不会推荐它。 Redis目前是一种主从复制机制,您需要对写入和读取进行分区。 一个负载均衡器不会为你做这些工作。 您将需要在应用程序中对读取和写入进行分区,或者编写中间层。 完成此操作后,可以在负载平衡器后面放置多个从站,并将其写入单个主站。

Redis速度足够快,很less会在复制中看到明显的延迟。 特别是如果运行configuration为不在本地写入的主节点,并运行一个或多个不在负载均衡器后面的用于处理持久性的从节点。

至于处理一个down master,你可以在一个或多个slave上写/使用一个heartbeat style监视器来监视一个dead master并接pipe。 你仍然可以使用一些负载平衡器。 例如,在LB上使用虚拟IP,并将指定的次级设置为较低的权重或任何您select的LB的任期)。 然后将此服务器configuration为主服务器的从服务器,但不能在读池中。 让它听一个LB不能路由到的非标准端口。 当它检测到主设备出现故障时,使用相应的端口并发出SLAVE OF NOONE命令。

我还希望看到监视进程告诉负载均衡器根本不使用主机。 这样,如果在准备就绪之前恢复在线状态,则可以将其从服务器转移到当前主服务器,然后在与备用主服务器同步后再迁移回服务器。

最终,工作的价值取决于你真正的要求有多严格。 无论哪种方式,如果你真的需要不丢失一个单一的写,你会想编写你的作家,如果它无法连接它排队这些写入磁盘和日志或提醒某人。

而不是使用内置的redis同步,在你的定制状态服务的代码中处理这个问题呢?

因此,在两台或多台服务器进行负载平衡的情况下,每台服务器都会有一个其他服务器的列表,在写入其本地Redis实例之后,它们只会向其他服务器写入相同的条目?

假设这样做,那么当服务器重新联机时,它应该只是一个处理同步实例的问题。 当你的服务重新启动时你能强制这个吗? 使本地版本同步到另一个实例? 或只是得到所有的date比当地最新的date?