redis高可用二:哨兵sentinel

根据一配置主从: https://blog.csdn.net/faicm/article/details/81698959

建立sentinel.conf文件

==注意,这里只需要配置master的ip,不需要salve的ip配置,哨兵会自己去找==

# 这个是Redis6379配置内容,其他文件同理新增然后改一下端口即可,26380,和 26381。
#当前Sentinel服务运行的端口
port 26379  
# 哨兵监听的主服务器,这里的ip是针对客户端而言的ip
sentinel monitor mymaster 127.0.0.1 6379 2
# 3s内mymaster无响应,则认为mymaster宕机了
sentinel down-after-milliseconds mymaster 3000
#如果10秒后,mysater仍没启动过来,则启动failover  
sentinel failover-timeout mymaster 10000  
# 执行故障转移时, 最多有1个从服务器同时对新的主服务器进行同步
sentinel parallel-syncs mymaster 1
protected-mode no

运行

./redis-sentinel sentinel.conf

jedis访问

public class MasterAndSlaveTest {
    public static void main(String[] args) throws InterruptedException {
        Set sentinels = new HashSet();
        sentinels.add(new HostAndPort("118.25.5.23", 63790).toString());
        JedisSentinelPool sentinelPool = new JedisSentinelPool("mymaster", sentinels);

        System.out.println("Current master: " + sentinelPool.getCurrentHostMaster().toString());

        Jedis master = sentinelPool.getResource();

        while (true) {
            Thread.sleep(2000);
            try {
                //主节点挂了,get会异常,然后重新拉取。
                System.out.println(master.get("aaa"));
            } catch (Exception e) {
                try {
                    master = sentinelPool.getResource();
                } catch (Exception e2) {
                    e2.printStackTrace();
                }
                e.printStackTrace();
            }
        }
    }
}

你可能感兴趣的:(redis)