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.
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.
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’.
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.
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 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.
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.
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.
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.
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.
Y obtendrás la página de inicio de sesión de CockroachDB como se indica a continuación.
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 ‘hakase-labs123@#’ utilizando la siguiente consulta.
CREATE USER hakase WITH PASSWORD 'hakase-labs123@#';
Escribe ‘\q’ para salir del shell SQL de CockroachDB.
Ahora vuelve al navegador web y escribe el usuario ‘hakase’ con la contraseña ‘hakase-labs123@#’ en la página de inicio de sesión y haz clic en el botón Iniciar sesión.
Y obtendrás el panel de administración de CockroachDB como se indica a continuación.
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;
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’.
Y por último, la instalación y configuración del Cluster CockroachDB seguro en Ubuntu 18.04 se ha completado con éxito.