Cómo implementar un clúster seguro de CockroachDB en un servidor Ubuntu

CockroachDB es una base de datos SQL de código abierto y nativa de la nube desarrollada por CockroachLabs. Es una base de datos SQL distribuida construida sobre el almacén transaccional y de valores clave. CockroachDB es una base de datos SQL escalable que se ha comparado con la base de datos Spanner de Google. Está basada en el protocolo PostgreSQL y está preparada para la producción.

En este tutorial, te mostraremos cómo configurar el clúster seguro de CockroachDB en Ubuntu 18.04. Aprenderás a configurar el clúster seguro, a acceder al panel de administración de CockroachDB, a crear un nuevo usuario en CockroachDB y a crear y mostrar la base de datos en CockroachDB.

Requisitos previos

Para ejecutar el Cluster CockroachDB, necesitamos varios servidores. Y vamos a utilizar tres servidores Ubuntu 18.04 con el nombre de host y la dirección IP detallados a continuación.

node1   10.5.5.21
node2   10.5.5.22
node3   10.5.5.23

¿Qué vamos a hacer?

  • Configurar el servidor NTP con Chronysystemctl restart chrony
    systemctl enable chrony
  • Descarga e instala CockroachDB
  • Crea los certificados
  • Inicializar el Cluster CockroachDB
  • Añade un nodo al clúster CockroachDB
  • Prueba de

Paso 1 – Configurar el servidor NTP con Chrony

En primer lugar, debemos mantener sincronizada la hora entre los servidores del clúster. Por tanto, necesitamos instalar el paquete NTP en todos los servidores. Y para esta guía, utilizaremos Chrony.

Instala el paquete chrony en todos los servidores utilizando el siguiente comando.

sudo apt install chrony -y

Una vez completada la instalación, ve al directorio de configuración ‘/etc/chrony/’ y edita el archivo ‘chrony.conf’.

cd /etc/chrony/
vim chrony.conf

Elimina el pool NTP por defecto y sustitúyelo por tu propio pool de países.

pool 0.id.pool.ntp.org iburst maxsources 4
pool 1.id.pool.ntp.org iburst maxsources 1
pool 2.id.pool.ntp.org iburst maxsources 1
pool 3.id.pool.ntp.org iburst maxsources 2

Guarda y cierra.

Ahora reinicia el servicio chrony y añade chrony al servicio de inicio.

systemctl restart chrony
systemctl enable chrony

Como resultado, la hora entre los servidores se sincronizará con los mismos servidores del pool NTP.

Iniciar y activar Chrony

Paso 2 – Descargar e instalar CockroachDB

En este paso, descargaremos e instalaremos CockroachDB en todos los servidores. Para ello, ejecuta todos los comandos en todos tus servidores del cluster.

Crea un nuevo directorio llamado ‘binary’ y entra en él.

mkdir -p binary; cd binary

Descarga el archivo binario cockroachdb comprimido para Linux y extráelo.

wget https://binaries.cockroachdb.com/cockroach-latest.linux-amd64.tgz
tar -xvzf cockroach-latest.linux-amd64.tgz

Ahora copia el archivo binario ‘cockroach’ en el directorio ‘/etc/local/bin’.

cp cockroach-*/cockroach /usr/local/bin/

Después, puedes ejecutar el comando ‘cockroach’ y explorar el comando básico para obtener ayuda, comprobar la versión, etc.

cockroach version

El CockroachDB ha sido instalado en todos los servidores.

Instalar CockroachDB

Paso 3 – Crear certificados

Ahora vamos a generar algunos certificados para asegurar el Cluster CockrouchDB. Podemos utilizar OpenSSL o la línea de comandos de Cockroach para generar archivos de certificados.

Vamos a generar el certificado y la clave de la CA, y a generar el certificado para el usuario raíz y el certificado para cada nodo del cluster.

Crea el directorio de certificados ‘~/.cockroach-certs’ y la variable de entorno correspondiente.

mkdir -p ${HOME}/.cockroach-certs/
export COCKROACH_CERTS_DIR='${HOME}/.cockroach-certs/'

Crea la CA y cópiala en todos los nodos

En el servidor ‘nodo1’, crea la autoridad de certificación utilizando el comando cockroach que aparece a continuación.

cockroach cert create-ca \
--certs-dir=$COCKROACH_CERTS_DIR \
--ca-key=$COCKROACH_CERTS_DIR/ca.key

Y obtendrás los certificados ‘ca.key’ y ‘ca.crt’ en el directorio ‘~/.cockroach-certs’.

Crear CA y copiar en todos los nodos

Después, copia el certificado y la clave ca a todos los servidores utilizando el comando scp como se indica a continuación.

Copia al servidor ‘nodo2’.

scp ~/.cockroach-certs/ca.crt ~/.cockroach-certs/ca.key [email protected]:~/.cockroach-certs/

Copia al servidor ‘nodo3’.

scp ~/.cockroach-certs/ca.crt ~/.cockroach-certs/ca.key [email protected]:~/.cockroach-certs/

Ahora asegúrate de que el certificado CA y la clave se cargan en todos los servidores.

Comprueba el certificado de la CA

Crear los certificados de los clientes

Después de crear la autoridad de certificación, tenemos que generar el certificado de cliente. El certificado de cliente se utilizará para asegurar la comunicación entre el intérprete de comandos SQL incorporado y el clúster.

Genera el certificado de cliente en todos los servidores utilizando el siguiente comando cockroach.

cockroach cert create-client \
root \
--certs-dir=$COCKROACH_CERTS_DIR \
--ca-key=$COCKROACH_CERTS_DIR/ca.key

Y obtendrás los certificados de cliente para el usuario root ‘client.root.crt’ y ‘client.root.key’.

Crear certificados de cliente

Crear certificados de servidor

Los certificados de servidor se utilizarán para asegurar la comunicación entre los servidores del clúster CockroachDB. Y para poder unirte al clúster seguro, necesitas generar certificados de servidor para cada servidor.

En el «nodo1», crea el certificado de servidor utilizando el siguiente comando.

cockroach cert create-node \
localhost \
$(hostname) \
10.5.5.21 \
--certs-dir=$COCKROACH_CERTS_DIR \
--ca-key=$COCKROACH_CERTS_DIR/ca.key

Cambia la dirección IP por la tuya.

Cambiar la dirección IP

En el «nodo2», crea el certificado de servidor utilizando el siguiente comando.

cockroach cert create-node \
localhost \
$(hostname) \
10.5.5.22 \
--certs-dir=$COCKROACH_CERTS_DIR \
--ca-key=$COCKROACH_CERTS_DIR/ca.key

Cambia la dirección IP por la tuya.

Configuración de la dirección IP

En el «nodo3», crea el certificado del servidor utilizando el siguiente comando.

cockroach cert create-node \
localhost \
$(hostname) \
10.5.5.23 \
--certs-dir=$COCKROACH_CERTS_DIR \
--ca-key=$COCKROACH_CERTS_DIR/ca.key

Cambia la dirección IP por la tuya.

Ahora obtendrás los certificados de servidor ‘node.crt’ y ‘node.key’ en el directorio ‘~/.cockroach-certs’.

Paso 4 – Iniciar el clúster seguro de CockroachDB

Después de crear algunos certificados SSL, vamos a inicializar el Cluster CockroachDB Seguro desde el servidor ‘node1’.

Ejecuta el siguiente comando en el servidor ‘nodo1’.

cockroach start \
--background --certs-dir=$COCKROACH_CERTS_DIR \
--advertise-host=10.5.5.21 --listen-addr=10.5.5.21

Asegúrate de que no hay ningún error.

Después, comprueba el estado del nodo del clúster ejecutando el siguiente comando cockroach.

cockroach node status --host=10.5.5.21

Obtendrás que el nodo1 con la dirección IP 10.5.5.21 está funcionando con CockroachDB v2.1.6.

Poner en marcha el clúster

Paso 5 – Añadir el nodo al clúster

A continuación, añadiremos el ‘nodo2’ y el ‘nodo3’ al clúster seguro de CockroachDB.

Asegúrate de que la CA y el certificado del servidor están en el directorio ~/.cockroach-certs.

ls -lah ~/.cockroah-certs/

Ahora ejecuta el siguiente comando para añadir el ‘nodo2’ con la dirección IP 10.5.5.22. Añádelo al clúster CockroachDB.

cockroach start \
--background --certs-dir=$COCKROACH_CERTS_DIR \
--advertise-host=10.5.5.22 --listen-addr=10.5.5.22 \
--join=10.5.5.21:26257

Una vez completado, ve al ‘nodo3’ y ejecuta el siguiente comando.

cockroach start \
--background --certs-dir=$COCKROACH_CERTS_DIR \
--advertise-host=10.5.5.23 --listen-addr=10.5.5.23 \
--join=10.5.5.21:26257

Cambia la dirección IP por la tuya.

Ahora el ‘nodo2’ y el ‘nodo3’ se han añadido al clúster CockroachDB seguro. Compruébalo desde el servidor ‘nodo1’ con el siguiente comando.

cockroach node status --host=10.5.5.21

Y conseguirás que tres servidores diferentes estén en funcionamiento con la cucaracha v2.1.6.

Añadir un nodo al clúster

Paso 6 – Pruebas

Para este último paso, probaremos nuestra instalación de CockroachDB Secure Cluster accediendo al panel de administración y probando la replicación de la base de datos entre servidores.

Probar el panel de control de CockroachDB

CockroachDB proporciona una bonita interfaz de usuario para supervisar el clúster. Abre tu navegador web y escribe la dirección IP del servidor seguida del puerto 8080.

https://10.5.5.21:8080/

Y obtendrás la página de inicio de sesión de CockroachDB como se indica a continuación.

Panel de control de CockroachDB

Para acceder al panel de control, necesitamos crear un usuario en la base de datos CockroachDB.

Vuelve a tu terminal ‘nodo1’ y entra en el shell SQL de cockroachdb utilizando el siguiente comando.

cockroach sql --certs-dir=$COCKROACH_CERTS_DIR \
--host=10.5.5.21

Ahora crea un nuevo usuario llamado ‘hakase’ con la contraseña ‘[email protected]#’ utilizando la siguiente consulta.

CREATE USER hakase WITH PASSWORD '[email protected]#';

Escribe ‘\q’ para salir del shell SQL de CockroachDB.

Shell SQL de CockroachDB

Ahora vuelve al navegador web y escribe el usuario ‘hakase’ con la contraseña ‘[email protected]#’ en la página de inicio de sesión y haz clic en el botón Iniciar sesión.

Cucaracha DB

Y obtendrás el panel de administración de CockroachDB como se indica a continuación.

Visión general del clúster

Probar la replicación de la base de datos

Ahora vamos a probar la replicación de la base de datos entre los servidores del Cluster CockroachDB creando la base de datos en el ‘nodo1’ y comprobando la base de datos desde el ‘nodo2’ o ‘nodo3’.

En el ‘nodo1’, accede a la shell SQL de CockroachDB con el siguiente comando.

cockroach sql --certs-dir=$COCKROACH_CERTS_DIR \
--host=10.5.5.21

Crea dos bases de datos ‘hakasedb’ y ‘hakasedb2’ utilizando las consultas siguientes.

create database hakasedb;
create database hakasedb2;

Ahora imprime la lista de bases de datos y asegúrate de que aparecen las dos bases de datos que acabamos de crear.

show databases;

Línea cmd de Cockroach DB

A continuación, inicia sesión en el servidor ‘nodo2’ y accede a la shell SQL de CockroachDB utilizando el siguiente comando.

cockroach sql --certs-dir=$COCKROACH_CERTS_DIR \
--host=10.5.5.22

Comprueba la lista de bases de datos.

show databases;

Y obtendrás que ‘hakasedb’ y ‘hakasedb2’ se han replicado en el servidor ‘nodo2’.

Mostrar bases de datos

Y por último, la instalación y configuración del Cluster CockroachDB seguro en Ubuntu 18.04 se ha completado con éxito.

También te podría gustar...