Redis Sentinel配置使用过程中的一个坑(DENIED Redis is running in protected mode)

        根据官网示例配置完sentinel.conf,大致添加如下配置项:

    port 26379
    sentinel monitor mymaster 172.17.16.7 6379 2
    sentinel auth-pass mymaster 123456
    sentinel down-after-milliseconds mymaster 30000
    sentinel failover-timeout mymaster 900000
    sentinel parallel-syncs mymaster 1

        随后启动sentinel

       # ./redis-sentinel sentinel.conf

       java程序中使用JedisSentinelPool建立redis连接池

   Set sentinels = new HashSet();
   sentinels.add("172.17.16.7:26379");
   sentinels.add("172.17.16.8:26379");
   sentinels.add("172.17.16.9:26379");
   JedisSentinelPool sentinelPool = new JedisSentinelPool("mymaster", sentinels, "123456");
      报错:

   DENIED Redis is running in protected mode because protected mode is enabled, no bind address was specified, no authentication password is requested to    clients.......

      使用redis-cli -h 127.0.0.1 -p 26379连接sentinel可以执行命令,而使用redis-cli -h 172.17.16.7 -p 26379连接sentinel执行命令则会报同上的错误。

      查遍了网上没有找到相关的问题分析和解决的案例,所以只能自己猜测和排查,初步怀疑是通过172.17.16.7访问sentinel时受限。

      由于此错误和redis server的protect-mode为yes的访问错误颇为相似,官方在redis.conf的注释说明中有protected-mode这一配置项,但sentinel.conf的注释中完全没有提到过该配置项,我很疑惑,但还是尝试在sentinel.conf中加入

   protected-mode no
      之后保存并重新启动sentinel,之后用Java程序建立连接池,没有报错,且可以对redis server进行数据处理,问题解决。

      本文原创,转载请注明出处!

      

 
  


 

      


       


你可能感兴趣的:(Redis)