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

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 basada en almacenes transaccionales y de valores clave.

CockroachDB es una base de datos SQL escalable que ha sido comparada con la base de datos Spanner de Google. Está basada en el cable de protocolo PostgreSQL y lista para la producción.

Este tutorial te mostrará cómo configurar el Clúster Seguro CockroachDB en Ubuntu 20.04. Aprenderás a configurar el clúster seguro, acceder al panel de administración de CockroachDB, crear un nuevo usuario en CockroachDB, crear y mostrar bases de datos en CockroachDB.

Requisitos previos

Para esta guía, configuraremos el Cluster Seguro CockroachDB con 3 Servidores Ubuntu 20.04.

nodo01 172.16.0.3
nodo02 172.16.0.4
nodo03 172.16.0.5

¿Qué vamos a hacer?

  • Configurar NTP con Chrony
  • Descarga el binario de CockroachDB para Linux
  • Genera Certificados SSL para el Cluster CockroachDB
  • Iniciar Cluster CockroachDB Seguro
  • Crear usuario administrador para CockroachDB
  • Acceder al Panel de Control de CockroachDB
  • Probar la Replicación de Bases de Datos en el Cluster CockroachDB

Paso 1 – Configurar el Servidor NTP con Chrony

En primer lugar, sincronizaremos la hora de nuestros tres servidores con el Servidor NTP mediante chrony. Así que asegúrate de ejecutar todos los comandos de este paso en todos los servidores.

Ahora actualiza todos los repositorios disponibles en tu sistema e instala el paquete chrony utilizando el siguiente comando apt.

sudo apt update
sudo apt install chrony -y

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

cd /etc/chrony/
vim chrony.conf

Cambia el pool por defecto por tu servidor NTP más cercano como se indica a continuación.

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

Guarda y cierra.

A continuación, reinicia el servicio chrony y añádelo al arranque del sistema.

systemctl restart chrony
systemctl enable chrony

El servicio chrony está en funcionamiento, compruébalo utilizando el siguiente comando.

systemctl status chrony

A continuación se muestra el resultado que obtendrás.

Instalar Chrony en Ubuntu 20.04

Como resultado, se ha completado la instalación y configuración de Chrony. En efecto, la hora de todos los servidores se ha sincronizado con los mismos servidores NTP.

Paso 2 – Descargar el Binario CockroachDB

En este paso, descargaremos e instalaremos CockroachDB en nuestros tres servidores.

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

mkdir -p binary; cd binary

Después, descarga la última versión del archivo binario de CockroachDB y extráelo.

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

Ahora mueve el archivo binario ‘cockroach’ al directorio ‘/usr/local/bin’.

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

Como resultado, podrás ejecutar el comando ‘cockroach’ en tu sistema.

Comprueba el archivo binario ‘cockroach’ y la versión de CockroachDB utilizando el siguiente comando.

which cockroach
cockroach version

A continuación se muestra el resultado que obtendrás.

Descargar e instalar el binario de CockroachDB

Como resultado, has descargado e instalado CockroachDB v20.1.5 en servidores Linux, y ahora puedes crear el Cluster CockroachDB.

Paso 3 – Crear certificados SSL para el Cluster CockroachDB

Antes de crear el nuevo Cluster CockroachDB, crearemos y generaremos certificados SSL para asegurar nuestro cluster. Para generar los certificados SSL, podemos utilizar OpenSSL o la línea de comandos ‘cockroach’.

– Crear directorio de certificados CockroachDB

En primer lugar, necesitamos crear un nuevo directorio para almacenar todos los certificados SSL de nuestro Cluster CockroachDB.

Como usuario root, crea un nuevo directorio ‘~/.cockroach-certs’ y añade la variable de entorno del sistema ‘COCKROACH_CERTS_DIR’ utilizando el comando que se indica a continuación.

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

A continuación, para que la variable de entorno ‘COCKROACH_CERTS_DIR’ sea permanente, edita la configuración ~/.bashrc utilizando el editor vim.

vim ~/.bashrc

Pega la siguiente configuración al final de la línea.

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

Guarda y cierra.

A continuación, vuelve a cargar la configuración de ~/.bashrc y comprueba la variable de entorno ‘COCKROACH_CERTS_DIR’.

source ~/.bashrc
echo $COCKROACH_CERTS_DIR

Y obtendrás la variable ‘COCKROACH_CERTS_DIR’ con el valor ‘directorio ${HOME}/.cockroach-certs/’.

Configurar el Directorio de Certificados de Cucaracha

– Crear un certificado y una clave de CA

Tras crear el directorio de la ruta SSL, generaremos el certificado y la clave de CA utilizando la línea de comandos ‘cockroach’ en el servidor ‘node01’.

Genera el certificado CA y la clave en el directorio ‘$COCKROACH_CERT_DIR’ 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

Después, copia el ‘ca.crt’ y la ‘ca.key’ generados a otros servidores ‘nodo02’ y ‘nodo03’ utilizando el comando scp como se indica a continuación.

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

Como resultado, el certificado CA y la clave se han creado y subido a todos los servidores.

Generar certificado CA y copiar a otros nodos

– Crear certificado de cliente en nodo01

Después de crear el certificado y la clave de la CA, generaremos el certificado de cliente utilizado para asegurar la comunicación entre el intérprete de comandos SQL incorporado y el clúster.

Genera el certificado de cliente utilizando el siguiente comando cockroach.

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

Ahora obtendrás los nuevos certificados ‘client.root.crt’ y ‘client.root.key’ en el directorio ‘$COCKROACH_CERTS_DIR’.

Generar certificado de cliente CockroachDB

– Crear certificados de servidor en todos los servidores

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

En el primer «nodo01», genera el certificado de servidor utilizando el siguiente comando, y asegúrate de cambiar la dirección IP por la tuya propia.

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

A continuación, genera el certificado de servidor para el «nodo02» utilizando el siguiente comando.

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

Después, genera el certificado de servidor para el servidor «nodo03».

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

Ahora, si compruebas el directorio ‘~/.cockroach-certs’, obtendrás los nuevos certificados ‘node.crt’ y ‘node.key’ en todos los servidores.

ls -lah ${HOME}/.cockroach-certs/

A continuación se muestran todos los certificados disponibles en el servidor maestro ‘node01’.

Generar certificado para nodo01

Verás tres certificados diferentes, certificados de CA, certificados de Cliente y certificados de Servidor.

Y para los otros nodos ‘nodo02’ y ‘nodo03’, verás dos certificados, certificados CA y certificados Servidor.

generar certificado de servidor para nodo02 y nodo03

Como resultado, estamos listos para iniciar y crear el Cluster Seguro CockroachDB.

Paso 4 – Iniciar el Cluster Seguro CockRoachDB

Para iniciar el clúster seguro CockroachDB, tienes que iniciar el proceso CockroachDB en cada servidor.

Antes de iniciar el proceso CockroachDB, asegúrate de cambiar la dirección IP de detalle de cada servidor por la tuya propia y asegúrate de que la variable de entorno ‘$COCKROACH_CERTS_DIR’ está cargada.

En primer lugar, inicia el proceso CockroachDB en el ‘nodo01’ utilizando el siguiente comando.

cockroach start \
 --background --certs-dir=$COCKROACH_CERTS_DIR \
 --store=/var/lib/cockroachdb \
 --advertise-host=172.16.0.3 --listen-addr=172.16.0.3 \
 --join=172.16.0.3:26257,172.16.0.4:26257,172.16.0.5:26257

Iniciar CockroachDB Secure Cluster

Ahora pasa al servidor «nodo02» e inicia el proceso CockroachDB.

cockroach start \
 --background --certs-dir=$COCKROACH_CERTS_DIR \
 --store=/var/lib/cockroachdb \
 --advertise-host=172.16.0.4 --listen-addr=172.16.0.4 \
 --join=172.16.0.3:26257,172.16.0.4:26257,172.16.0.5:26257

Iniciar CockroachDB Secure Cluster

A continuación, inicia el proceso CockroachDB en el servidor «nodo03».

cockroach start \
 --background --certs-dir=$COCKROACH_CERTS_DIR \
 --store=/var/lib/cockroachdb \
 --advertise-host=172.16.0.5 --listen-addr=172.16.0.5 \
 --join=172.16.0.3:26257,172.16.0.4:26257,172.16.0.5:26257

Iniciar CockroachDB Secure Cluster

Ahora el proceso CockroachDB se ha iniciado en todos los servidores. Se ejecuta en el puerto «26257» y los datos de DockroachDB se almacenan en el directorio «/var/lib/cockroachdb».

Puedes comprobar el puerto de CockroachDB utilizando el siguiente comando.

ss -plntu

Como puede verse, el proceso CockroachDB se está ejecutando en el puerto TCP ‘26257’ para la conexión a la base de datos y en el puerto ‘8080’ como panel de administración predeterminado de CockroachDB.

A continuación, vuelve al servidor maestro ‘nodo01’ e inicializa el clúster seguro CockroachDB utilizando el siguiente comando.

cockroach init --host=172.16.0.3:26257

Y obtendrás el siguiente mensaje.

Cluster successfully initialized

Además, puedes consultar el archivo de registro de CockroachDB para ver los detalles de la inicialización del clúster.

grep 'node starting' /var/lib/cockroachdb/logs/cockroach.log -A 11

A continuación se muestra el resultado que obtendrás.

Inicialización del Cluster CockroachDB

Como resultado, la inicialización del Cluster Seguro CockroachDB se ha completado con éxito.

Paso 5 – Crear usuario administrador para CockroachDB

Después de haber inicializado con éxito el Cluster CockroachDB, necesitas crear un nuevo usuario que iniciará sesión en el panel de administración de CockroachDB.

Desde el servidor maestro ‘nodo01’, inicia sesión en el intérprete de comandos SQL de CockroachDB utilizando el siguiente comando.

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

Ahora crea un nuevo usuario llamado ‘yume’ con la contraseña ‘yume321’ utilizando la siguiente consulta.

CREATE USER yume WITH PASSWORD 'yume321';

Después, permite que el usuario ‘yume’ inicie sesión y añádelo al rol ‘admin’.

ALTER USER yume LOGIN;
GRANT admin TO yume;

Ahora comprueba todos los usuarios disponibles en CocoroachDB utilizando la siguiente consulta.

SHOW USERS;

A continuación se muestra el resultado que obtendrás.

Crear usuario administrador CucarachaDB

Como puedes ver, el nuevo usuario yume está disponible en la lista. Es miembro del rol ‘admin’.

Como resultado, has creado un nuevo usuario para la Base de Datos CucarachaDB.

Paso 6 – Acceder al Panel de Control de CockroachDB

Por defecto, CockroachDB proporciona un panel de control de administración basado en web que se ejecuta en el puerto TCP predeterminado «8080».

Abre tu navegador web y escribe la dirección IP de tu servidor con el puerto ‘8080’ en la barra de direcciones.

https://172.16.0.3:8080/

Ahora aparecerá la página de inicio de sesión de CockroachDB que se muestra a continuación.

Página de inicio de sesión de CockroachDB

Escribe el usuario‘yume‘ y la contraseña‘yume321‘ en el campo y pulsa el botón‘INICIAR SESIÓN’.

Y obtendrás el Panel de Control de CockroachDB como se muestra a continuación.

Panel CockroachDB

Como puedes ver, tienes el Cluster CockroachDB con tres nodos vivos.

Como resultado, has iniciado sesión con éxito en el Panel de Administración de CockroachDB con un nuevo usuario.

Paso 7 – Probar la replicación de la base de datos

En este paso, probaremos la replicación de la base de datos entre cada nodo del clúster.

Crearemos una nueva base de datos en el servidor ‘nodo01’ utilizando el usuario ‘yume’ y después comprobaremos la base de datos desde los otros nodos ‘nodo02’ y ‘nodo03’.

– Conectarse al nodo01 y crear bases de datos

En el servidor ‘nodo01’, conéctate a la Shell SQL de CockroachDB como usuario ‘yume’ utilizando el siguiente comando.

cockroach sql --certs-dir=$COCKROACH_CERTS_DIR --user=yume \
 --host=172.16.0.3

Una vez que hayas iniciado sesión en la shell SQL de CockroachDB, crea nuevas bases de datos utilizando las siguientes consultas.

CREATE DATABASE yumedb;
CREATE DATABASE yumedb2;

Ahora comprueba todas las bases de datos disponibles en CockroachDB.

SHOW DATABASES;

Y obtendrás ‘yumedb’ y ‘yumedb2’ en la lista de bases de datos.

Crear base de datos CockroachDB

– Comprueba la replicación de bases de datos en node02 y node03

A continuación, desplázate al servidor ‘nodo02’ e inicia sesión en el intérprete de comandos SQL de CockroachDB como usuario ‘yume’ utilizando el siguiente comando.

cockroach sql --certs-dir=$COCKROACH_CERTS_DIR --user=yume \
 --host=172.16.0.4

Una vez que hayas iniciado sesión, comprueba todas las bases de datos disponibles utilizando la siguiente consulta.

SHOW DATABASES;

Y obtendrás las bases de datos ‘yumedb’ y ‘yumedb2’ en la lista.

Comprobar la Replicación de la Base de Datos en el Nodo02

Haz lo mismo en el servidor ‘nodo03’, y obtendrás el mismo resultado.

A continuación se muestra el resultado del servidor ‘nodo03’.

Comprobar la replicación de la base de datos en el Nodo03

Como resultado, la replicación de bases de datos entre nodos del Cluster CockroachDB está funcionando.

Además, a continuación puedes ver todas las bases de datos desde el Panel de Administración de CockroachDB.

Comprobar la base de datos desde el panel CockroachDB

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

Referencia

También te podría gustar...