I am attempting to create a redis-sentinel cluster using docker-compose on my system and have it visible to the host machine (this is to try and replicate an application that is going to use redis-sentinel locally).
I have created the following
docker-compose.yaml file to set up both the sentinel and redis itself
version: '2' networks: app-tier: driver: bridge services: redis-sentinel: image: s7anley/redis-sentinel-docker environment: - ANNOUNCE_IP=127.0.0.1 - ANNOUNCE_PORT=26379 - MASTER_NAME=mymaster - MASTER=redis networks: - app-tier ports: - '26379:26379' redis: image: bitnami/redis:latest environment: - ALLOW_EMPTY_PASSWORD=yes networks: - app-tier ports: - '6379:6379' volumes: redis_data: driver: local
The sentinel manages to startup and finds the redis master correctly however it doesn't seem to respect the
announce-ip option, in fact it appears to completely ignore it.
i.e. when I startup
redis-cli on my host machine and ask for the address of master I get this
redis-cli -p 26379 127.0.0.1:26379> SENTINEL get-master-addr-by-name mymaster 1) "192.168.32.2" 2) "6379" 127.0.0.1:26379>
The reported ip should be
127.0.0.1 and not
192.168.32.2 (which is the internal IP that docker uses in the network)
This is the
sentinel.conf file that is used in the docker image
port 26379 sentinel announce-ip 127.0.0.1 sentinel announce-port 26379 sentinel monitor mymaster redis 6379 2 sentinel down-after-milliseconds mymaster 30000 sentinel failover-timeout mymaster 180000 sentinel parallel-syncs mymaster
And this is what the config file looks like after redis-sentinel rewrites it after startup
port 26379 sentinel myid 4e7786e55f2b4ec31bdd36c1c3af6e2d3f2569e3 sentinel deny-scripts-reconfig yes sentinel monitor mymaster 192.168.32.2 6379 2 sentinel config-epoch mymaster 0 sentinel leader-epoch mymaster 0 sentinel current-epoch 0 # Generated by CONFIG REWRITE dir "/data" sentinel announce-ip "127.0.0.1" sentinel announce-port 26379
Does anyone have any idea what could be causing this?