Cómo instalar el clúster CockroachDB en Debian 12

CockroachDB es una base de datos SQL distribuida y escalable de código abierto para aplicaciones en la nube. CockroachDB proporciona consistencia de siguiente nivel, una base de datos SQL replicada y un almacén de datos transaccional.

CockroachDB almacena tus datos en múltiples ubicaciones, haciendo que la entrega de datos sea más rápida. Además, es fácil de escalar y proporciona alta disponibilidad y tolerancia a fallos para tus aplicaciones.

En esta guía, te mostraremos cómo instalar CockroachDB en servidores Debian 12. A continuación, te mostraremos cómo inicializar el clúster de CockroachDB con varios servidores Debian.

Requisitos previos

Antes de continuar, asegúrate de que tienes lo siguiente:

  • Dos o más servidores Debian 12 que se conecten entre sí a través de la red local.
  • Un usuario no root con privilegios de administrador.
  • Un FQDN configurado en cada servidor.

Instalación de CockroachDB

CockroachDB es un sistema de base de datos SQL distribuido y escalable. Antes de desplegar el clúster CockroachDB, debes instalar la aplicación CockroachDB en cada uno de tus servidores.

Ahora instalarás CockroachDB en cada uno de tus servidores Debian.

En primer lugar, crea un nuevo usuario de sistema cockroach con el directorio raíz por defecto /opt/cockroachdb.

sudo adduser --home /opt/cockroachdb --system --group cockroach
sudo chown -R cockroach:cockroach /opt/cockroachdb

Descarga la última versión de CockroachDB utilizando el siguiente comando curl. Asegúrate de visitar la página de descargas de CockroachDB para obtener el enlace a la última versión de CockroachDB.

curl https://binaries.cockroachdb.com/cockroach-v23.1.14.linux-amd64.tgz --output cockroach-v23.1.14.linux-amd64.tgz

Una vez descargado, extrae el archivo cockroach-v23.1.14.linux-amd64.tgz y copia el archivo binario de CockroachDB en el directorio /usr/bin/.

tar -xzf cockroach-v23.1.14.linux-amd64.tgz
cp -i cockroach-v23.1.14.linux-amd64/cockroach /usr/bin/

Por último, verifica la versión de CockroachDB utilizando el comando que se indica a continuación.

cockroach --version

Puedes ver a continuación que CockroachDB v23.1.14 está instalado, que es la última versión del momento.

comprobar versión

Configurar UFW

Después de instalar CockroachDB, debes instalar UFW para asegurar tus servidores. A continuación, abre los puertos TCP 8080 y 26257 que utilizará el clúster CockroachDB.

Instala el paquete UFW en tu servidor Debian con el siguiente comando.

sudo apt install ufw -y

instalar ufw

Ahora añade el perfil OpenSSH y habilita UFW ejecutando el siguiente comando. Escribe y para iniciar y habilitar el UFW.

sudo ufw allow OpenSSH
sudo ufw enable

Una vez activada la UFW, verás el mensaje «El cortafuegos está activo y activado al iniciar el sistema».

activar ufw

A continuación, añade los puertos TCP 8080 y 26257 a la UFW con el siguiente comando. Esos puertos TCP serán utilizados por el clúster CockroachDB.

sudo ufw allow 8080/tcp
sudo ufw allow 26257/tcp

Por último, comprueba el estado de UFW y la lista de reglas habilitadas con el siguiente comando. Verás UFW con el estado Activo y los puertos OpenSSH, 8080/tcp y 26257/tcp habilitados.

sudo ufw status

configuración ufw

Generar certificados

Antes de generar certificados para el clúster CockroachDB, ejecuta el comando siguiente para crear nuevos directorios certs y private dentro de /opt/cockroachdb para almacenar tus certificados.

mkdir -p /opt/cockroachdb/{certs,private}

Ahora pasa a generar estos certificados Certificado de CA, Certificado de Nodo y Certificado de Cliente.

Generar CA

El certificado CA es importante para firmar tanto los certificados de cliente como los de nodo. En esta sección, generarás un certificado CA en el servidor comp1 y un certificado CA y una clave al servidor comp2 mediante scp. Por tanto, asegúrate de que tienes acceso SSH al servidor comp2.

Ejecuta el siguiente comando para generar un certificado CA en el servidor comp1.

cockroach cert create-ca \
--certs-dir=/opt/cockroachdb/certs \
--ca-key=/opt/cockroachdb/private/ca.key

generar ca

Una vez generado el CA, copia tanto ca.key como ca.crt al servidor comp2.

scp /opt/cockroachdb/private/ca.key [email protected]:/opt/cockroachdb/private/
scp /opt/cockroachdb/certs/ca.crt [email protected]:/opt/cockroachdb/certs/

copiar certificados

Generar cliente

Tras generar la CA, el siguiente certificado que necesitas es un certificado de cliente. Éste se utilizará para conectarse al clúster CockroachDB de forma segura a través de TLS.

Aún así, en el servidor comp1, ejecuta el siguiente comando para crear el certificado de cliente para el usuario raíz por defecto.

cockroach cert create-client \
root \
--certs-dir=/opt/cockroachdb/certs \
--ca-key=/opt/cockroachdb/private/ca.key

Una vez finalizado el proceso, tu certificado de cliente estará disponible en /opt/cockroachdb/certs/client .root.crt y /opt/cockroachdb/certs/client.root.key.

generar certificados de cliente

Generar nodo

Por último, tienes que generar los certificados de Nodo, que también dependen del número de servidores que haya en el clúster. En este ejemplo, generaré un certificado Node para los servidores comp1 y comp2.

Ejecuta el siguiente comando en el servidor comp1 para generar un certificado de Nodo para comp1. Asegúrate de cambiar la dirección IP y el fqdn con los datos de tu servidor.

cockroach cert create-node \
comp1.hwdomain.lan \
192.168.5.21 \
localhost \
--certs-dir=/opt/cockroachdb/certs \
--ca-key=/opt/cockroachdb/private/ca.key

nodo cert comp1

Pasa al servidor comp2 y ejecuta el comando siguiente para generar un certificado de Nodo para comp2. Cambia también los detalles de la dirección IP y el fqdn del servidor comp2.

cockroach cert create-node \
comp2.hwdomain.lan \
192.168.5.22 \
localhost \
--certs-dir=/opt/cockroachdb/certs \
--ca-key=/opt/cockroachdb/private/ca.key

nodo cert comp2

Configurar el permiso para los certificados

Con todos los certificados generados, ejecuta el siguiente comando para permitir que el usuario cucaracha acceda a los archivos de certificados. Asegúrate de ejecutarlo tanto en el servidor comp1 como en el comp2.

sudo chown -R cockroach:cockroach /opt/cockroachdb/certs
sudo chown -R cockroach:cockroach /opt/cockroachdb/private

Configurar el servicio Systemd

Tras generar los certificados para CockroachDB, el siguiente paso es crear el archivo de servicio CockroachDB para cada servidor. A continuación, inicia y habilita el servicio CockroachDB.

Servicio CockroachDB para comp1

En el servidor comp1, crea un nuevo servicio systemd /etc/systemd/system/cockroachdb.service con el siguiente comando del editor nano.

sudo nano /etc/systemd/system/cockroachdb.service

Añade estas configuraciones de servicio. Asegúrate de cambiar el parámetro –advertise-addr por la dirección IP de comp1.

[Unit]
Description=Cockroach Database cluster node
Requires=network.target
[Service]
Type=notify
WorkingDirectory=/opt/cockroachdb
ExecStart=/usr/bin/cockroach start --certs-dir=/opt/cockroachdb/certs --advertise-addr=192.168.5.21 --join=192.168.5.21,192.168.5.22
TimeoutStopSec=60
Restart=always
RestartSec=10
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=cockroach
User=cockroach

[Install]
WantedBy=default.target

Guarda y sal del archivo cuando hayas terminado.

Servicio CockroachDB para comp2

Desplázate al servidor comp2 y ejecuta el siguiente comando del editor nano para crear un nuevo archivo de servicio /etc/systemd/system/cockroachdb.service.

sudo nano /etc/systemd/system/cockroachdb.service

Introduce la configuración que aparece a continuación y asegúrate de cambiar el parámetro –advertise-addr por la dirección IP de comp2.

[Unit]
Description=Cockroach Database cluster node
Requires=network.target
[Service]
Type=notify
WorkingDirectory=/opt/cockroachdb
ExecStart=/usr/bin/cockroach start --certs-dir=/opt/cockroachdb/certs --advertise-addr=192.168.5.22 --join=192.168.5.21,192.168.5.22
TimeoutStopSec=60
Restart=always
RestartSec=10
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=cockroach
User=cockroach

[Install]
WantedBy=default.target

Cuando hayas terminado, guarda el archivo y sal del editor.

Iniciar CockroachDB

Con el archivo de servicio CockroachDB creado, ahora puedes aplicar tus cambios y, a continuación, iniciar y habilitar el servicio CocroachDB.

Ejecuta el siguiente comando para recargar el gestor systemd y aplicar el nuevo servicio para CockroachDB.

sudo systemctl daemon-reload

Ahora inicia y habilita el servicio CockroachDB en los servidores comp1 y comp2 con el comando siguiente.

sudo systemctl start cockroachdb
sudo systemctl enable cockroachdb

start enable servicio cockroachdb

Por último, verifica el servicio CockroachDB con el siguiente comando para asegurarte de que el servicio se está ejecutando.

sudo systemctl status cockroachdb

Asegúrate de que tienes el servicio CockroachDB en ejecución en tus dos servidores Debian.

cockroachdb servicio comp1 estado

cockroachdb servicio comp2 estado

Inicializar el clúster CockroachDB

Ahora que el servicio CockroachDB se está ejecutando en cada servidor, puedes continuar inicializando el clúster CockroachDB desde el servidor comp1. A continuación, crea el usuario administrador para CockroachDB y accede al panel de administración web de CockroachDB.

En el servidor comp1, ejecuta el siguiente comando para inicializar el clúster CockroachDB. Deberías obtener una salida«Cluster inicializado con éxito» cuando se complete el proceso.

cockroach init --certs-dir=/opt/cockroachdb/certs --host=192.168.5.21:26257

Además, también puedes verificar el proceso de inicialización a través del archivo de registro de CockroachDB con el siguiente comando.

grep 'node starting' /opt/cockroachdb/cockroach-data/logs/cockroach.log -A 11

La salida«Nodo CockroachDB iniciándose…» confirma que el clúster se ha inicializado.

clúster inicializado

A continuación, verifica tu clúster CockroachDB ejecutando el siguiente comando. La opción ls se utiliza para obtener la lista de servidores del clúster, mientras que el comando status se utiliza para comprobar el estado del clúster CockroachDB.

cockroach node --certs-dir=/opt/cockroachdb/certs --host=192.168.5.21 ls
cockroach node --certs-dir=/opt/cockroachdb/certs --host=192.168.5.21 status

A continuación puedes ver el número de servidores dentro del clúster CockroachDB incluyendo el estado de cada servidor.

estado del clúster cockroachdb

Ahora que el clúster está en marcha, ejecuta el siguiente comando para iniciar sesión en el servidor CockroachDB. Asegúrate de ejecutar este comando desde el servidor comp1, porque tu certificado de cliente está disponible en la máquina comp1.

cockroach sql --certs-dir=/opt/cockroachdb/certs --host=192.168.5.21:26257

Una vez conectado, verás el prompt de CockroachDB como el siguiente:

cockroachdb shell sql

Ejecuta las siguientes consultas para crear un nuevo usuario bob con la contraseña p4ssw0rd. A continuación, concede privilegios de administrador al usuario bob.

CREATE USER bob WITH PASSWORD 'p4ssw0rd';
GRANT admin TO bob;

Pulsa Ctrl+d para salir del servidor CockroachDB.

crear usuario administrador

Por último, abre el navegador web en tu máquina local y visita la dirección IP comp1 con el puerto 8080 (https://192.168.5.21:8080). Aparecerá la página de inicio de sesión de CockroachDB.

Inicia sesión con el usuario bob y la contraseña p4ssw0rd.

página de acceso

Una vez conectado, verás el panel de administración de CockroachDB como éste:

salpicadero cockroachdb

Conclusión

Para terminar, ya has completado la instalación del clúster CockroachDB en servidores Debian 12. También has creado el usuario administrador de CockroachDB y has accedido al panel de administración web de CockroachDB. Ahora puedes crear una nueva base de datos y un nuevo usuario, y utilizar el panel de administración web de CockroachDB para gestionar la instalación de CockroachDB.

También te podría gustar...