zoukankan      html  css  js  c++  java
  • 那些年踩过的坑之Redis报错:All sentinels down, cannot determine where is mymaster master is running...

    1. 异常信息: All sentinels down, cannot determine where is mymaster master is running...

    通过测试:

       @Test
        public void testSentinel(){
            HashSet<String> sentinels = new HashSet<>();
            sentinels.add("192.168.72.129:26379");
            JedisSentinelPool pool = new JedisSentinelPool("mymaster", sentinels);
            Jedis jedis = pool.getResource();
            jedis.set("hello", "world");
            System.out.println(jedis.get("hello"));
        }

    报出错误:

    警告: Cannot get master address from sentinel running @ 192.168.72.129:26379. 
    Reason: redis.clients.jedis.exceptions.JedisConnectionException:
    Failed connecting to host 192.168.72.129:26379. Trying next one. redis.clients.jedis.exceptions.JedisConnectionException:
    All sentinels down, cannot determine where is mymaster master is running...
    (哨兵宕机, 不能确定主机位置)

    还原报错现场:

      学习搭配redis过程中, 在linux虚拟机上配置完redis-sentinel( 即启用redis哨兵配置搭建1主2从的redis服务器 )

      开启了redis-sentinel服务, ip和port号为: 192.168.72.129:26379

      首先, 能确定的是, linux防火墙已然关闭, sentinel.conf 的配置中, (注释掉bind)开放了不同主机的访问, 同时, redis的保护模式也已经关闭!!!

    但是jedis连接还是出现了问题, 那么既然不是redis服务器方配置或者防护的问题, 那么问题只能出在了我的操作系统win7中!!!

      在此基础上猜测, 是否是ip 连接 或者 是端口未开放呢?

      于是通过以下操作:

      cmd ->

      telnet 192.168.72.129:26379 

      显示错误: 正在连接192.168.72.129:26379...无法打开到主机的连接。 在端口 23: 连接失败

     ------- 附win7中开启telnet的方法: 站内他人博文链接:https://www.cnblogs.com/ylcms/p/7250129.html, 博主:云龙笔记

      看样子应该是linux的端口未开放导致无法连接.

      继续, 查看linux服务端:

      通过 netstat 查看与26379相关的端口信息, 查询到:

      怎么回事? 端口好好地, 已经被redis服务监听了!!!

      哎, 这时脑袋升起一丝不详的感觉, 难道是我的主从redis都没有启动, 而我直接加载了哨兵的配置吗?

     

      哇的一声哭了出来, 忙活了这么久, 居然是我并没有启动主从机. 导致了这一系列bug!!!!

      开启, 然后跑一下测试类, 再看看结果, 如下

      

      连接正常...

      虽然导致bug的问题如此"脑残", 不过从这过程之中, 我也对redis的分片, 乃至哨兵有了一个全面的认识, 算是祸福相依啦. 如果你也有连接redis的错误, 不妨跟我的思路来思考, 相信不难解决!

    ---记录2019年7月29日12:31:11 

  • 相关阅读:
    gc buffer busy/gcs log flush sync与log file sync
    给Oracle年轻的初学者的几点建议
    Android 编程下帧动画在 Activity 启动时自动运行的几种方式
    Android 编程下 Touch 事件的分发和消费机制
    Java 编程下 static 关键字
    Java 编程下 final 关键字
    Android 编程下模拟 HOME 键效果
    Why Are Thread.stop, Thread.suspend, Thread.resume and Runtime.runFinalizersOnExit Deprecated ?
    Extjs4 大型项目目录结构重构
    [转]SQLServer 2008 允许远程连接的配置方法
  • 原文地址:https://www.cnblogs.com/sansheng93/p/11264024.html
Copyright © 2011-2022 走看看