Cómo instalar el clúster CockroachDB en Ubuntu 24.04
CockroachDB es una base de datos SQL distribuida altamente resistente y escalable, diseñada para manejar fácilmente cargas de trabajo de datos a gran escala. Cuando se instala en Ubuntu, proporciona una solución de base de datos de código abierto y nativa de la nube que ofrece una gran coherencia, alta disponibilidad y escalabilidad horizontal. La arquitectura de CockroachDB le permite replicar y distribuir automáticamente los datos entre varios nodos, garantizando la integridad de los datos y minimizando el tiempo de inactividad a pesar de los fallos de hardware. Su compatibilidad con PostgreSQL lo convierte en una opción versátil para los desarrolladores que buscan un sistema de base de datos robusto, capaz de gestionar aplicaciones exigentes. Instalar CockroachDB en Ubuntu permite a los usuarios aprovechar estas funciones avanzadas al tiempo que se benefician de la seguridad y estabilidad del sistema operativo Ubuntu.
CockroachDB almacena tus datos en varias ubicaciones, lo que agiliza la entrega de datos. 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 el clúster CockroachDB en servidores Ubuntu 24.04.
Requisitos previos
Antes de continuar, asegúrate de que tienes lo siguiente:
- Dos o tres servidores Ubuntu 24.04.
- Un usuario no root con privilegios de administrador.
Configurar el usuario
Antes de instalar CockroachDB, crearás un nuevo usuario y grupo del sistema cockroach
. Esto se utilizará para ejecutar el servicio CockroachDB.
En primer lugar, ejecuta el siguiente comando para añadir un nuevo usuario de sistema cockroach
con el directorio raíz /opt/cockroachdb
.
sudo adduser –home /opt/cockroachdb –system –group cockroach
Ahora cambia la propiedad del directorio /opt/cockroachdb
al usuario y grupo cockroach
con lo siguiente:
sudo chown -R cucaracha:cucaracha /opt/cucarachadb
Descarga del binario de CockroachDB
Para instalar CockroachDB, puedes descargarlo fácilmente de la página de GitHub y mover el archivo binario de CockroachDB al directorio bin
de tu sistema Ubuntu.
Visita la página de GitHub de CockroachDB y coge el enlace de la última versión. Descárgalo con el comando wget
de la siguiente manera:
wget https://binaries.cockroachdb.com/cockroach-v24.1.1.linux-amd64.tgz
Una vez finalizada la descarga, extrae CockroachDB y mueve el archivo binario cockroach
al directorio /usr/bin
.
tar -xf cockroach-v24.1.1.linux-amd64.tgz
cp -i cockroach-*/cockroach /usr/bin/
Ahora comprueba la versión de CockroachDB con lo siguiente:
cockroach –version
En el siguiente resultado, puedes ver que CockroachDB v24 está instalado.
Generar certificados TLS
Para crear un cluster CockroachDB, debes generar un certificado SSL/TLS para asegurar el cluster. Necesitas generar y distribuir certificados CA entre los servidores, y luego generar certificados para usuarios y servidores.
Antes de seguir adelante, ejecuta el siguiente comando tanto en server1
como en server2
. Con esto, crearás los directorios certs
y private
para los certificados TLS de cadena.
mkdir -p /opt/cockroachdb/{certificados,privados}
Generar certificado CA
En esta sección, generarás un certificado CA desde server1
y lo subirás a server2
a través de scp
o de una copia segura.
En server1
, ejecuta el siguiente comando para generar certificados CA (Autoridad de Certificación). Se generará el certificado CA ca.crt
y ca.key
.
cockroach cert create-ca
-certs-dir=/opt/cockroachdb/certs
-ca-key=/opt/cockroachdb/private/ca.key
Ahora sube los ca.crt
y ca.key
al server2
con el scp
o copia segura. Asegúrate de que puedes iniciar sesión en server2
sin problemas.
scp /opt/cockroachdb/privado/ca.key [email protected]:/opt/cockroachdb/private/
scp /opt/cockroachdb/certs/ca.crt [email protected]:/opt/cockroachdb/certs/
Generar certificado de cliente
Tras generar el certificado CA, generarás un certificado de cliente para gestionar el clúster CockroachDB. Sólo los usuarios que dispongan de este certificado podrán conectarse y gestionar el clúster CockroachDB.
Para generar y firmar el certificado de cliente para el usuario root
Ejecuta el siguiente comando cockroach
.
cockroach cert create-client \
root \
–certs-dir=/opt/cockroachdb/certs \
–ca-key=/opt/cockroachdb/private/ca.key
Generar certificados de servidor
En esta sección, generarás certificados de servidor tanto en server1
como en server2
.
En server1
, ejecuta el siguiente comando para generar el certificado de servidor. Asegúrate de cambiar la dirección IP y el nombre de host con tu información.
cockroach cert create-node \
server1 \
192.168.5.15 \
localhost \
–certs-dir=/opt/cockroachdb/certs \
–ca-key=/opt/cockroachdb/private/ca.key
Ahora, pasa a server2
y genera un certificado de nodo con lo siguiente. Cambia la dirección IP y el nombre de host con la información de server2
.
cockroach cert create-node \
server2 \
192.168.5.16 \
localhost \
–certs-dir=/opt/cockroachdb/certs \
–ca-key=/opt/cockroachdb/private/ca.key
Por último, ejecuta el siguiente comando tanto en server1
como en server2
para cambiar la propiedad de los directorios certs
y private
al usuario cockroach
.
sudo chown -R cockroach:cockroach /opt/cockroachdb/{certs,private}
Ejecutar CockroachDB como servicio
Una vez que hayas generado los certificados SSL/TLS, crearás un archivo de servicio systemd para cada servidor CockroachDB. Esto te permitirá ejecutar CockroachDB en segundo plano y podrás gestionarlo fácilmente con systemctl
.
Crea un nuevo archivo de servicio systemd /etc/systemd/system/cockroachdb.service
con el editor nano
.
sudo nano /etc/systemd/system/cockroachdb.service
En la opción server1
, introduce la configuración que aparece a continuación. En la opción --advertise-addr
, introduce la dirección IP de server1
. En la opción --join
, introduce las direcciones IP server1
y server2
.
[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.15 --join=192.168.5.15,192.168.5.16
TimeoutStopSec=60
Restart=always
RestartSec=10
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=cockroach
User=cockroach
[Install]
WantedBy=default.target
Para server2
, introduce la configuración que aparece a continuación. En la opción --advertise-addr
, introduce la dirección IP server2
. En la opción --join
, introduce las direcciones IP server1
y server2
.
[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.16 --join=192.168.5.15,192.168.5.16
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.
Ahora ejecuta el siguiente comando systemctl
para recargar el gestor systemd y aplicar tus cambios.
sudo systemctl daemon-reload
Y luego inicia y habilita el servicio cockroachdb
en los servidores server1
y server2
.
sudo systemctl enable –now cockroachdb
Por último, comprueba el estado del servicio cockroachdb
con lo siguiente:
sudo systemctl status cockroachdb
Verás que el servicio cockroachdb
se está ejecutando en los servidores server1
y server2
.
Creación del clúster CockroachDB
Así pues, CockroachDB se está ejecutando tanto en server1
como en server2
. Ahora puedes inicializar el clúster CockroachDB desde uno de estos servidores.
En server1
, ejecuta el siguiente comando cockroach init
para inicializar el clúster CockroachDB. Si tiene éxito, verás una salida Cluster successfully initialized
.
cockroach init –certs-dir=/opt/cockroachdb/certs –host=192.168.5.15:26257
Ahora ejecuta el siguiente comando para comprobar el registro de inicialización del clúster. Si el clúster CockroachDB se está ejecutando, obtendrás la salida CockroachDB node starting
.
grep ‘nodo iniciando’ /opt/cockroachdb/cockroach-data/logs/cockroach.log -A 11
A continuación, ejecuta el siguiente comando cockroach
para verificar la lista de servidores y el estado del clúster CockroachDB.
sudo cockroach node –certs-dir=/opt/cockroachdb/certs –host=server1 ls
sudo cockroach node –certs-dir=/opt/cockroachdb/certs –host=server1 status
Puedes ver a continuación que server1
y server2
están disponibles en el clúster CockroachDB con el estado active
.
Ahora ejecuta el siguiente comando cockroach sql
para acceder al shell de CockroachDB. Desde aquí puedes gestionar la base de datos y el usuario en el clúster CockroachDB.
sudo cockroach sql –certs-dir=/opt/cockroachdb/certs –host=servidor1:26257
Ejecuta las siguientes consultas para crear un nuevo usuario administrador alice
con la contraseña p4ssw0rd
.
CREAR USUARIO alice CON CONTRASEÑA ‘p4ssw0rd’;
GRANT admin TO alice;
Escribe quit
para salir del servidor CockroachDB.
Acceder a la administración web de CockroachDB
Por defecto, la administración web de CockroachDB se ejecuta en el puerto 8080
. Esto te permite administrar CockroachDB a través de un navegador web.
Para acceder al panel de administración web de CockroachDB, visita http://server1:8080 utilizando tu navegador web. Introduce tu nombre de usuario y contraseña, y haz clic en Iniciar sesión.
Si tienes el nombre de usuario y la contraseña correctos, verás el panel de administración de CockroachDB como el siguiente:
Conclusión
¡Enhorabuena! Has completado la instalación del clúster CockroachDB en el servidor Ubuntu 24.04. También has aprendido a comprobar el estado del clúster CockroachDB a través de la línea de comandos y del panel de administración web. Por último, has creado un usuario administrador a través del intérprete de comandos SQL de CockroachDB.