i am running redis with sentinel in docker and I am not able to connect to my redis using the sentinel. This is my docker-compose file:
version: '3'networks: app-tier: driver: bridgeservices: redis: image: 'bitnami/redis:latest' environment: - REDIS_REPLICATION_MODE=master - REDIS_PASSWORD=str0ng_passw0rd networks: - app-tier ports: - '6379' redis-slave: image: 'bitnami/redis:latest' environment: - REDIS_REPLICATION_MODE=slave - REDIS_MASTER_HOST=redis - REDIS_MASTER_PASSWORD=str0ng_passw0rd - REDIS_PASSWORD=str0ng_passw0rd ports: - '6379' depends_on: - redis networks: - app-tier redis-sentinel: image: 'bitnami/redis-sentinel:latest' environment: - REDIS_MASTER_HOST=redis - REDIS_MASTER_PASSWORD=str0ng_passw0rd depends_on: - redis - redis-slave ports: - '26379:26379' networks: - app-tier
I can see that my sentinetl is up and running and have access to master and slave:
docker exec redis-image_redis-sentinel_1 redis-cli -p 26379 info sentinel# Sentinelsentinel_masters:1sentinel_tilt:0sentinel_running_scripts:0sentinel_scripts_queue_length:0sentinel_simulate_failure_flags:0master0:name=mymaster,status=ok,address=172.23.0.2:6379,slaves=1,sentinels=1
But when I am accessing to redis from my local PC outside the docker network from java I am getting this output:
redis.clients.jedis.JedisSentinelPool initSentinelsINFO: Trying to find master from available Sentinels... redis.clients.jedis.JedisSentinelPool initSentinelsINFO: Redis master running at 172.23.0.2:6379, starting Sentinel listeners... redis.clients.jedis.JedisSentinelPool initPoolINFO: Created JedisPool to master at 172.23.0.2:6379from masterredis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool at redis.clients.util.Pool.getResource(Pool.java:53) at redis.clients.jedis.JedisSentinelPool.getResource(JedisSentinelPool.java:209) at Main.main(Main.java:22)Caused by: redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketTimeoutException: connect timed out at redis.clients.jedis.Connection.connect(Connection.java:164) at redis.clients.jedis.BinaryClient.connect(BinaryClient.java:80) at redis.clients.jedis.BinaryJedis.connect(BinaryJedis.java:1677) at redis.clients.jedis.JedisFactory.makeObject(JedisFactory.java:87) at org.apache.commons.pool2.impl.GenericObjectPool.create(GenericObjectPool.java:868) at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:435) at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:363) at redis.clients.util.Pool.getResource(Pool.java:49) ... 2 moreCaused by: java.net.SocketTimeoutException: connect timed out at java.base/java.net.PlainSocketImpl.socketConnect(Native Method) at java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:399) at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:242) at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:224) at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) at java.base/java.net.Socket.connect(Socket.java:608) at redis.clients.jedis.Connection.connect(Connection.java:158) ... 9 more
Looks like I am getting internal docker network IP (172.23.0.2:6379) and I am not able to connect to the instance.
I am not able to find solution how to connect to redis with sentinals outside docker.
Thanks