Desplegar con systemd
Une dos nodos más al primero con un token de alta y mira cómo se reparten los rangos.
Despliega un clúster de tres nodos en tres máquinas Linux y déjalo como servicio de systemd. Un clúster de TeselaDB es el mismo binario arrancado en varias máquinas: el primero crea la CA, y cada uno de los demás entra con su propio token de alta de un solo uso, recibe un certificado firmado por esa CA y empieza a recibir réplicas de los rangos que ya existen.
Requisitos
- Tres máquinas Linux con el binario instalado. Si aún no lo tienes, sigue Instalar en Linux.
- El puerto 27100 abierto entre las tres máquinas, el 27017 hacia tus aplicaciones y el 27200 hacia tu equipo de operación.
- Los relojes sincronizados con NTP.
Paso 1. Arranca el primer nodo
teseladb start --dbpath /var/lib/teseladb \
--bind_ip 0.0.0.0 --peer-listen 0.0.0.0:27100 --admin-listen 0.0.0.0:27200En node-01, arranca el nodo escuchando en una dirección que vean las otras dos máquinas. El primer arranque crea la CA
del clúster y el usuario root dentro de /var/lib/teseladb.
Paso 2. Crea un token de alta
teseladb admin --dbpath /var/lib/teseladb token create --ttl 1hEn node-01. El token es de un solo uso y caduca; --ttl fija cuánto dura. teseladb admin se presenta al nodo con el
certificado que encuentra en --dbpath.
Paso 3. Une los otros nodos
teseladb start --dbpath /var/lib/teseladb \
--bind_ip 0.0.0.0 --peer-listen 0.0.0.0:27100 --admin-listen 0.0.0.0:27200 \
--join node-01:27100 --enroll-token <token>Arranca así node-02 y node-03, con un token distinto para cada nodo. El nodo nuevo comprueba la huella de la CA que
lleva el token, recibe por ese canal cifrado su certificado y la clave maestra y entra en el clúster. El token solo hace
falta la primera vez.
Paso 4. Déjalo como servicio
[Unit]
Description=TeselaDB
After=network-online.target
[Service]
ExecStart=/usr/local/bin/teseladb start --dbpath /var/lib/teseladb --bind_ip 0.0.0.0 --peer-listen 0.0.0.0:27100 --admin-listen 0.0.0.0:27200
Restart=on-failure
[Install]
WantedBy=multi-user.targetEn cada máquina, crea /etc/systemd/system/teseladb.service con la misma orden de arranque, sin --join ni
--enroll-token, porque el nodo ya tiene su certificado. Después para el proceso que arrancaste a mano y activa el
servicio con systemctl enable --now teseladb, que lo arranca ahora y en cada reinicio de la máquina.
Comprobar
teseladb admin --dbpath /var/lib/teseladb nodes
teseladb admin --dbpath /var/lib/teseladb ranges --collection shop.ordersnodes lista los tres nodos y su estado. ranges muestra los rangos de una colección con sus réplicas y su líder; a
medida que la colección crece, sus rangos se dividen y el equilibrador reparte réplicas y líderes entre los tres nodos
sin que tengas que moverlos tú.
Problemas frecuentes
- Si el nodo nuevo no entra y el token se rechaza, ese token ya se usó o caducó. Crea otro con
token create. - Si el nodo nuevo no llega a
node-01, el puerto 27100 está cerrado entre las máquinas o--peer-listenescucha solo en127.0.0.1.
Ver también
- Lista para producción, antes de recibir tráfico real.
- Nodos, para crecer o retirar máquinas más adelante.
- Para probar en una sola máquina,
teseladb dev --nodes 3arranca tres nodos en un proceso; el nodo k escucha en el puerto de clientes más k.