在LB后面放置一对独立的redis节点可能不是您想要的。将会发生的事情是ELB将尝试平衡每个实例的连接,将一半拆分为一个,将一半拆分为另一个。这意味着一个连接发出的命令可能不会被另一连接看到。这也意味着没有数据共享。因此,客户端a可以发布一条消息,而订阅另一台服务器的客户端b将看不到该消息。
对于ELB后面的PUBSUB,您有另一个问题。ELB将关闭空闲连接。因此,如果您订阅的频道不忙,则ELB将关闭您的连接。我记得您最多可以将其设置为60秒,这意味着如果您不每隔一分钟发布一条消息,您的客户端就会断开连接。
至于有多少问题取决于您的客户端库,并且坦率地说,根据我的经验,大多数问题并不能很好地解决,因为他们不知道需要在重新建立连接时重新订阅,这意味着您将自己编写代码。
也就是说,如果您的c没有适当的哨兵支持,则哨兵+
Redis解决方案将是非常理想的。在这种情况下。您的客户要求哨兵与主机对话,如果连接失败,它将重复此过程。这将处理您描述的设置,而不会出现在ELB后面的问题。



