es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cuál es la URI de conexión de Mongo para un statefulSet en K8s, cada réplica (pod) o el servicio (headless)?

Yo estoy un poco inseguro de cuál sería el URI de conexión correcto para mis aplicaciones para el statefulset de Mongodb. Tengo tres réplicas en mi clúster, cada una en un nodo separado.
¿Debería configurar los pods O el servicio headless (balanceador de carga para los pods)?

La documentación indica que se deben utilizar los pods, como esto (Ejecución de MongoDB en Kubernetes con StatefulSets):
mongodb://usuario:contraseña@mongo-0.mongo,mongo-1.mongo,mongo-2.mongo:27017/nombre_db_?

Pero también lo he hecho funcionar con el servicio:
mongodb://usuario:contraseña@mongodb-headless.svc.cluster.local:27017/nombre_db_?authSource=admin&replicaSet=rs0

Pero, ¿cuál es el URI correcto? El problema que tengo es cuando alguna de las réplicas falla, por alguna razón, la aplicación se bloquea porque se pierde la conexión a la base de datos. Creo que aquí es donde entra en juego el servicio headless, pero no, la documentación dice que hay que configurar los pods. Y si aumento las réplicas necesito volver a configurar el URI. Esto no suena particularmente dinámico.

También estoy teniendo algunos problemas con el servicio headless, si está en un espacio de nombres diferente no puedo hacer que la conexión funcione con el espacio de nombres definido, como:
mongodb-headless.namespace.svc.cluster.local:27017

¿Me he perdido algo?
¡Gracias de antemano!

EDIT: agregué una replicaset para el ejemplo de URI del servicio / lb (ya lo había configurado…)

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Basándose en la documentación y su experiencia, parece que ambas opciones son válidas para conectarse al conjunto de estados de MongoDB en un clúster de Kubernetes. Sin embargo, usar los pods en la URI de conexión proporciona una configuración más dinámica, ya que la conexión se ajustará automáticamente si cambia el número de réplicas.

    En cuanto a su problema con el servicio sin cabeza, es importante asegurarse de que el servicio y el conjunto de estados estén en el mismo espacio de nombres. Puede especificar el espacio de nombres en la URI de conexión, así:

    mongodb://user:pwd@mongodb-headless.namespace.svc.cluster.local:27017/dbname_?authSource=admin&replicaSet=rs0

    Asegúrese de reemplazar “namespace” por el nombre real del espacio de nombres donde se encuentra el servicio sin cabeza.

    Además, asegúrese de haber especificado el nombre del conjunto de réplicas (rs0 en su ejemplo) en la URI de conexión para el servicio sin cabeza, ya que es necesario para garantizar una comunicación adecuada con las réplicas.

    Si continúa experimentando problemas con la conexión, puede considerar ponerse en contacto con la comunidad de MongoDB o Kubernetes para obtener soporte adicional.

Comments are closed.