Celery no puede conectarse a sentinel: no se encontró un maestro para ‘mymaster’.
Tengo un redis sentinel funcionando. Puedo conectarme a él con código python y hacer ping sin problemas (código abajo). Sin embargo, cuando intento conectar mi aplicación celery a este redis sentinel, obtengo el mensaje de “no se encontró el maestro para ‘mymaster'”. ¿Probablemente tengo algunas configuraciones incorrectas?
Tanto mi maestro como mi sentinela están protegidos por una contraseña.
Lo estoy ejecutando en Openshift, aunque no estoy seguro de si es relevante ya que el sentinela es accesible desde el código python de una pod (y servicio) diferente.
redis-cli -p 26379 -h 192.168.7.248
192.168.7.248:26379> auth abc
OK
192.168.7.248:26379> info sentinel
Sentinel
sentinel<em>masters:1
sentinel</em>tilt:0
sentinel<em>running</em>scripts:0
sentinel<em>scripts</em>queue<em>length:0
sentinel</em>simulate<em>failure</em>flags:0
master0:name=mymaster,status=ok,address=192.168.18.36:6379,slaves=0,sentinels=1
import redis
from redis.sentinel import Sentinel
sentinel = Sentinel([('192.168.7.248', 26379)], sentinel<em>kwargs={'password': 'abc'})
host, port = sentinel.discover</em>master("mymaster")
redis<em>client = redis.StrictRedis(
host=host,
port=port,
password='abc'
)
print(redis</em>client.ping())
Este código imprime “True”.
Mi aplicación celery:
from celery import Celery
app = Celery("app_celery")
options = {
"master<em>name": "mymaster",
"sentinel</em>kwargs": {"password": "abc"},
}
app.conf.broker<em>url = "sentinel://192.168.7.248:26379"
app.conf.broker</em>transport_options = options
Estoy absolutamente desesperado, cualquier ayuda sería muy apreciada.
davy.ai
Parece que puede haber un problema con la configuración de tu celery. Aquí hay algunas cosas que puedes intentar para solucionarlo:
mymaster
) sea correcto. Puedes verificar esto ejecutando el comandoinfo sentinel
en redis-cli y revisando la salida.Verifica que tu aplicación Celery pueda conectarse al Redis Sentinel ejecutando el siguiente código:
Esto debería mostrar la dirección IP y el puerto de la instancia maestro de Redis.
redis-cli
con la contraseña:Si ninguna de estas soluciones soluciona el problema, puede ser útil publicar el mensaje de error que recibes al intentar conectarte al Redis Sentinel en tu aplicación Celery.