简体   繁体   English

当哨兵需要密码时,Jedis 找不到使用哨兵的大师

[英]Jedis cannot find master using sentinel when sentinel required password

Recently i work with redis and using jedis.最近我使用 redis 并使用绝地武士。 In redis version 6, we can set required password mode for sentinels.在 redis 版本 6 中,我们可以为哨兵设置所需的密码模式。 I have 3 working sentinels, can connect and authen throught redis-cli.我有 3 个工作哨兵,可以通过 redis-cli 连接和验证。 But using jedis, i can't connect to the sentinel with this warning:但使用绝地武士,我无法连接到哨兵这个警告:

Cannot get master address from sentinel running @ 127.0.0.1:26379.无法从运行 @ 127.0.0.1:26379 的哨兵获取主地址。 Reason: redis.clients.jedis.exceptions.JedisDataException: NOAUTH Authentication required.. Trying next one.原因:redis.clients.jedis.exceptions.JedisDataException: NOAUTH Authentication required.. 尝试下一个。

Cannot get master address from sentinel running @ 127.0.0.1:36379.无法从运行 @ 127.0.0.1:36379 的哨兵获取主地址。 Reason: redis.clients.jedis.exceptions.JedisDataException: NOAUTH Authentication required.. Trying next one.原因:redis.clients.jedis.exceptions.JedisDataException: NOAUTH Authentication required.. 尝试下一个。

Cannot get master address from sentinel running @ 127.0.0.1:16379.无法从运行 @ 127.0.0.1:16379 的哨兵获取主地址。 Reason: redis.clients.jedis.exceptions.JedisDataException: NOAUTH Authentication required.. Trying next one.原因:redis.clients.jedis.exceptions.JedisDataException: NOAUTH Authentication required.. 尝试下一个。

And this error:而这个错误:

All sentinels down, cannot determine where is mymaster master is running...所有哨兵倒下,无法确定 mymaster 主控在哪里运行...

Here is my code:这是我的代码:

        GenericObjectPoolConfig pc = new GenericObjectPoolConfig();
        pc.setMinIdle(2);
        pc.setMaxIdle(5);
        pc.setMaxTotal(5);
        JedisSentinelPool pool = new JedisSentinelPool(MASTER_NAME, sentinels, pc, 1000*10, PASSWORD);
        Jedis jedis = null;
        try {
            printer("Fetching connection from pool");
            jedis = pool.getResource();
            printer("Authenticating...");
            jedis.auth(PASSWORD);
            printer("auth complete...");
            Socket socket = jedis.getClient().getSocket();
            printer("Connected to " + socket.getRemoteSocketAddress());
            printer("Writing...");
            jedis.set("java-key-999", "java-value-999");
            printer("Reading...");
            printer(jedis.get("java-key-999"));
        } catch (JedisException e) {
            printer("Connection error of some sort!");
            printer(e.getMessage());
            Thread.sleep(2 * 1000);
        } finally {
            if (jedis != null) {
                jedis.close();
            }
        }

Please help, thank you for your reading support <3请帮忙,感谢您的阅读支持<3

Your sentinel nodes are password protected.您的哨兵节点受密码保护。 You would have to provide AUTH parameters to connect to sentinel nodes.您必须提供 AUTH 参数才能连接到哨兵节点。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM