Conectar tu aplicación
Con mongosh y con el driver oficial de MongoDB de tu lenguaje te conectas a TeselaDB.
Conecta mongosh o tu aplicación a TeselaDB con el driver oficial de MongoDB de tu lenguaje. TeselaDB se presenta a los drivers como un mongos de MongoDB, así que el driver se conecta sin cambios.
Requisitos
- La dirección de un nodo del clúster.
- Un usuario y su contraseña. Al empezar puedes usar
root, cuya contraseña está enroot-credentials.txt. - El fichero
pki/ca.pemdel clúster, porque el puerto de clientes siempre exige TLS.
La cadena de conexión
mongodb://root:<contraseña>@127.0.0.1:27017/?tls=true&tlsCAFile=./data/pki/ca.pemtls=trueactiva TLS. Sin él, el nodo rechaza la conexión.tlsCAFileapunta apki/ca.pemdel directorio de datos del primer nodo. Copia ese fichero a las máquinas de tus aplicaciones; no es secreto.- La contraseña de
rootestá enroot-credentials.txt. Para tus aplicaciones, crea un usuario propio con solo los roles que necesitan (ver Usuarios y roles).
mongosh
mongosh "mongodb://root:<contraseña>@127.0.0.1:27017/?tls=true&tlsCAFile=./data/pki/ca.pem"Desde tu lenguaje
Todos los drivers oficiales aceptan la misma cadena de conexión. Estos son cuatro ejemplos; el resto de drivers (C#, Rust, PHP, Ruby, Kotlin, Swift, C y C++) funcionan igual.
Node.js
import { MongoClient } from "mongodb";
const client = new MongoClient("mongodb://root:<contraseña>@127.0.0.1:27017/?tls=true&tlsCAFile=./data/pki/ca.pem");
await client.connect();
await client.db("shop").collection("orders").insertOne({ total: 149.5 });Python
from pymongo import MongoClient
client = MongoClient(
"mongodb://root:<contraseña>@127.0.0.1:27017/?tls=true&tlsCAFile=./data/pki/ca.pem"
)
client.shop.orders.insert_one({"total": 149.5})Go
client, err := mongo.Connect(options.Client().ApplyURI(
"mongodb://root:<contraseña>@127.0.0.1:27017/?tls=true&tlsCAFile=./data/pki/ca.pem",
))
if err != nil {
panic(err)
}
_, err = client.Database("shop").Collection("orders").InsertOne(ctx, bson.M{"total": 149.5})Java
try (MongoClient client = MongoClients.create(
"mongodb://root:<contraseña>@127.0.0.1:27017/?tls=true")) {
client.getDatabase("shop").getCollection("orders").insertOne(new Document("total", 149.5));
}En Java la CA va en un almacén de confianza y no en la cadena. Los pasos están en Java.
Varios nodos en la cadena
Cualquier nodo enruta cada petición al rango que toca, así que basta con uno. Pon dos o tres en la cadena para que el driver tenga otro al que ir si uno no responde:
mongodb://node-01:27017,node-02:27017,node-03:27017/?tls=true&tlsCAFile=./ca.pemComprobar
En mongosh, un ping al nodo devuelve { ok: 1 } cuando la conexión y el usuario son correctos:
db.runCommand({ ping: 1 });Problemas frecuentes
- Si la conexión se cierra antes de autenticar, falta
tls=trueen la cadena. El nodo rechaza las conexiones sin TLS. - Si el driver no confía en el certificado del nodo,
tlsCAFileno apunta alpki/ca.pemde este clúster. Cada clúster tiene su propia autoridad de certificación. - Si la autenticación falla, revisa en la cadena el usuario, su contraseña y la base de autenticación (
authSource).
Ver también
- Desplegar con systemd, para añadir nodos y ver cómo se reparten los rangos.
- Roles y privilegios, para crear el usuario de tu aplicación.