我有一个Redis集群,其中包含1个主服务器(ip:192.168.56.101)和2个从服务器(ip:192.168.56.102,192.168.56.103),我使用jedis连接到主服务器读写数据。
JedisPool pool = new JedisPool(new JedisPoolConfig(), "192.168.56.101");
有一天,我的主节点死了,所以jedis无法连接到群集。 你可以帮助我,如果主机连接死了怎么连接群集? 谢谢
答案 0 :(得分:0)
需要为群集上的每个节点安装Sentinels。 Sentinels负责故障转移。有关哨兵的更多信息,http://redis.io/topics/sentinel
基本思想是,当其中一个redis节点发生故障时,redis哨兵会相互协调并将任何一个从站升级为master。 以下示例代码应该可行。
JedisSentinelPool运行后台轮询线程以获取将由pool.getResource()返回的主节点;
JedisSentinelPool pool = new JedisSentinelPool(String masterName, Set<String> sentinels);
Jedis jedis = null;
try{
jedis = pool.getResource();
} catch(Exception e){
//log exception
} finally {
pool.returnResource(jedis);
}