Tres máquinas con systemd
TeselaDB
Equipo de TeselaDB
45 minIntermedio
Monta un clúster de tres nodos en tres máquinas Linux como servicio de systemd y comprueba que aguanta un reinicio.
Un clúster de producción de TeselaDB son tres o más máquinas con el mismo binario, y aquí lo montas en tres máquinas Linux, cada nodo como servicio de systemd. Al final reinicias una de ellas para ver que el clúster sigue sirviendo.
Lo que vas a construir
Tres nodos, node-01, node-02 y node-03, unidos con tokens de alta y arrancados por systemd en cada arranque de su
máquina, con tus aplicaciones conectadas a los tres con TLS y el usuario que crees.
Requisitos
- Tres máquinas Linux con el binario en
/usr/local/bin/teseladb(Instalar en Linux) y los relojes sincronizados con NTP. - El puerto 27100 abierto entre las tres máquinas, el 27017 hacia tus aplicaciones y el 27200 hacia tu equipo de operación.
1. El servicio en las tres máquinas
Crea /etc/systemd/system/teseladb.service en cada máquina. La unidad arranca el nodo cuando la red está lista y lo
vuelve a arrancar si falla:
[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.target2. Arranca el primer nodo
En node-01, el primer arranque crea la CA del clúster y el usuario root:
sudo systemctl enable --now teseladb3. Une los otros dos
En node-01, crea un token de un solo uso para cada uno de los otros dos nodos. Cada token caduca a la hora, como fija
--ttl 1h, así que créalos justo antes de unir node-02 y node-03 al clúster en marcha:
teseladb admin --dbpath /var/lib/teseladb token create --ttl 1hEn node-02 y en node-03, el primer arranque lleva --join y el token. Después para ese proceso. Deja el nodo al
servicio, que ya no necesita el token:
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>
sudo systemctl enable --now teseladb4. Conecta tus aplicaciones
Copia la CA del clúster, /var/lib/teseladb/pki/ca.pem, a las máquinas de tus aplicaciones y crea para cada una un
usuario con los roles que necesita (Usuarios y roles). La cadena lleva los tres
nodos:
mongodb://tienda-api:<contraseña>@node-01:27017,node-02:27017,node-03:27017/tienda?tls=true&tlsCAFile=./ca.pemProbarlo
teseladb admin --dbpath /var/lib/teseladb nodes lista los tres nodos como activos. Reinicia node-03 con
sudo reboot mientras tu aplicación escribe: los rangos que lideraba eligen un líder nuevo en los otros dos nodos y el
driver reintenta la operación que estaba en curso. Cuando la máquina vuelve, systemd arranca el nodo y se pone al día
solo.
Limpiar
Si era una prueba, para el servicio y borra los datos en cada máquina, con la CA y las claves del clúster:
sudo systemctl disable --now teseladb
sudo rm -r /var/lib/teseladbSiguientes pasos
- Lista para producción, antes de recibir tráfico real.
- Copias programadas y su prueba de restauración, para la primera copia nocturna.