我们当前的Redis设置是一个使用Jedis的Web应用程序客户端,它使用一个JedisPool直接连接到一个Redis主服务器进行写操作,使用另一个JedisPool直接从单个Redis从属服务器进行读取。从站设置为复制主站。
我们正在逐步在客户端上使用JedisSentinelPool,并引入Sentinel以更清晰地处理故障转移。 As far as I know, it seems that the JedisSentinelPool only communicates with the currently elected master, so now all writes/reads go to the master.与之前相比,可以将读取内容分发给从属设备。
是否可以使用JedisSentinelPool将读取的数据分发给从服务器以达到负载平衡的目的?还是有必要使用JedisPool手动实现此操作(如前所述),在这种情况下,如果主服务器发生故障,JedisSentinelPool现在将指向旧的从服务器(新的主服务器),而JedisPool仍将哑巴地指向旧的从服务器旧的从属服务器(新的主服务器)现在将处理读写操作?
Redis Sentinel(或其他方式)是否具有任何负载平衡(与故障转移相反)功能?我们目前只有一个从站,可以添加更多的从站来进行负载平衡吗?如果是的话,推荐的配置是什么?
任何建议,在这里的现实世界的经验将不胜感激。
最佳答案
我编写了一个新的JedisSentinelPool,可以通过负载平衡从slave读取,可以从master写入,它使用redis订阅slaves,在我的Web应用程序中使用它,请参见代码github sentinel-slave-jedis-pool