CockroachDB es una base de datos SQL nativa de la nube y de código abierto desarrollada por CockroachLabs. Es una base de datos SQL distribuida basada en el almacén transaccional y de clave-valor. CockroachDB es una base de datos SQL escalable que se ha comparado con la base de datos de Google Spanner. Se basa en el protocolo PostgreSQL y está listo para la producción.
En este tutorial, le mostraremos cómo configurar el clúster seguro de CockroachDB en Ubuntu 18.04. Aprenderá cómo configurar el clúster seguro, acceder al panel de administración de CockroachDB, crear un nuevo usuario en CockroachDB, crear y mostrar una base de datos en CockroachDB.
Requisitos
Para ejecutar CockroachDB Cluster, necesitamos varios servidores. Y usaremos tres servidores Ubuntu 18.04 con el nombre de host detallado y la dirección IP que se muestran a continuación.
node1 10.5.5.21
node2 10.5.5.22
node3 10.5.5.23
¿Qué haremos?
- Configurar servidor NTP con Chronysystemctl reiniciar chrony
systemctl habilitar chrony - Descargar e instalar CockroachDB
- Crear certificados
- Inicializar clúster de CockroachDB
- Agregar nodo al clúster de CockroachDB
- Pruebas
Paso 1:configurar el servidor NTP con Chrony
En primer lugar, debemos mantener sincronizada la hora entre los servidores del clúster. Entonces, necesitamos instalar el paquete NTP en todos los servidores. Y para esta guía, usaremos chrony.
Instale el paquete chrony en todos los servidores usando el siguiente comando.
sudo apt install chrony -y
Una vez completada la instalación, vaya al directorio de configuración '/etc/chrony/' y edite el archivo 'chrony.conf'.
cd /etc/chrony/
vim chrony.conf
Elimine el grupo NTP predeterminado y reemplácelo con su propio grupo nacional.
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
Guardar y cerrar.
Ahora reinicie el servicio chrony y luego agregue chrony al servicio de inicio.
systemctl restart chrony
systemctl enable chrony
Como resultado, el tiempo entre servidores se sincronizará con los mismos servidores de grupo NTP.
Paso 2:descargar e instalar CockroachDB
En este paso, descargaremos e instalaremos CockroachDB en todos los servidores. Por lo tanto, ejecute todos los comandos en todos sus servidores de clúster.
Cree un nuevo directorio llamado 'binario' y acceda a él.
mkdir -p binary; cd binary
Descargue el archivo binario cockroachdb comprimido para Linux y extráigalo.
wget https://binaries.cockroachdb.com/cockroach-latest.linux-amd64.tgz
tar -xvzf cockroach-latest.linux-amd64.tgz
Ahora copie el archivo binario 'cucaracha' en el directorio '/etc/local/bin'.
cp cockroach-*/cockroach /usr/local/bin/
Después de eso, puede ejecutar el comando 'cucaracha' y explorar el comando básico para obtener ayuda, verificar la versión, etc.
cockroach version
El CockroachDB se ha instalado en todos los servidores.
Paso 3:Crear certificados
Ahora vamos a generar algunos certificados para proteger el clúster de CockrouchDB. Podemos usar OpenSSL o la línea de comando de la cucaracha para generar archivos de certificados.
Generaremos el certificado y la clave de CA, y generaremos el certificado para el usuario raíz y el certificado para cada nodo en el clúster.
Cree el directorio de certificados '~/.cockroach-certs' y la variable de entorno correspondiente.
mkdir -p ${HOME}/.cockroach-certs/
export COCKROACH_CERTS_DIR='${HOME}/.cockroach-certs/'
Crear CA y copiar a todos los nodos
En el servidor 'node1', cree la autoridad de certificación usando el siguiente comando de cucaracha.
cockroach cert create-ca \
--certs-dir=$COCKROACH_CERTS_DIR \
--ca-key=$COCKROACH_CERTS_DIR/ca.key
Y obtendrá 'ca.key' y 'ca.crt' en el directorio '~/.cockroach-certs'.
Después de eso, copie el certificado ca y la clave a todos los servidores usando el comando scp como se muestra a continuación.
Copie en el servidor 'node2'.
scp ~/.cockroach-certs/ca.crt ~/.cockroach-certs/ca.key [email protected]:~/.cockroach-certs/
Copie en el servidor 'node3'.
scp ~/.cockroach-certs/ca.crt ~/.cockroach-certs/ca.key [email protected]:~/.cockroach-certs/
Ahora asegúrese de que el certificado y la clave de CA estén cargados en todos los servidores host.
Crear certificados de cliente
Después de crear la autoridad de certificación, debemos generar el certificado de cliente. El certificado de cliente se utilizará para proteger la comunicación entre el shell de SQL integrado y el clúster.
Genere el certificado de cliente en todos los servidores utilizando el siguiente comando de cucaracha.
cockroach cert create-client \
root \
--certs-dir=$COCKROACH_CERTS_DIR \
--ca-key=$COCKROACH_CERTS_DIR/ca.key
Y obtendrá certificados de cliente para el usuario raíz 'client.root.crt' y 'client.root.key'.
Crear certificados de servidor
Los certificados de servidor se utilizarán para asegurar la comunicación entre servidores en el clúster de CockroachDB. Y para unirse al clúster seguro, debe generar certificados de servidor para cada servidor.
En el 'nodo1', cree el certificado del servidor con 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', cree el certificado del servidor usando 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', cree el certificado del servidor usando 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á 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, inicializaremos el clúster Secure CockroachDB desde el servidor 'node1'.
Ejecute el siguiente comando en el servidor 'node1'.
cockroach start \
--background --certs-dir=$COCKROACH_CERTS_DIR \
--advertise-host=10.5.5.21 --listen-addr=10.5.5.21
Asegúrese de que no haya ningún error.
Después de eso, verifique el estado del nodo del clúster ejecutando el siguiente comando de cucaracha.
cockroach node status --host=10.5.5.21
Obtendrá el nodo 1 con la dirección IP 10.5.5.21 funcionando con CockroachDB v2.1.6.
Paso 5:Agregar nodo al clúster
A continuación, agregaremos el 'nodo 2' y el 'nodo 3' al clúster seguro de CockroachDB.
Asegúrese de que la CA y el certificado del servidor estén en el directorio ~/.cockroach-certs.
ls -lah ~/.cockroah-certs/
Ahora ejecute el siguiente comando para agregar el 'nodo2' con la dirección IP 10.5.5.22. Agréguelo al clúster de 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 que esté completo, vaya al 'nodo3' y ejecute 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 agregado al clúster seguro de CockroachDB. Verifíquelo desde el servidor 'node1' usando el siguiente comando.
cockroach node status --host=10.5.5.21
Y obtendrá tres servidores diferentes funcionando con la cucaracha v2.1.6.
Paso 6 - Prueba
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.
Prueba del panel de CockroachDB
CockroachDB proporciona una hermosa interfaz de usuario del tablero para monitorear el clúster. Abra su navegador web y escriba la dirección IP del servidor seguida del puerto 8080.
https://10.5.5.21:8080/
Y obtendrá la página de inicio de sesión de CockroachDB como se muestra a continuación.
Para iniciar sesión en el tablero, necesitamos crear un usuario en la base de datos CockroachDB.
Regrese a su terminal 'node1' e inicie sesión en el shell SQL de cockroachdb usando el siguiente comando.
cockroach sql --certs-dir=$COCKROACH_CERTS_DIR \
--host=10.5.5.21
Ahora cree un nuevo usuario llamado 'hakase' con la contraseña '[email protected]#' utilizando la consulta a continuación.
CREATE USER hakase WITH PASSWORD '[email protected]#';
Escriba '\q' para salir del shell SQL de CockroachDB.
Ahora regrese al navegador web y escriba el usuario 'hakase' con la contraseña '[email protected]#' en la página de inicio de sesión y haga clic en el botón Iniciar sesión.
Y obtendrá el panel de administración de CockroachDB como se muestra a continuación.
Prueba de la replicación de la base de datos
Ahora vamos a probar la replicación de la base de datos entre servidores en CockroachDB Cluster creando la base de datos en el 'nodo1' y verificando la base de datos desde el 'nodo2' o 'nodo3'.
En el 'nodo1', acceda al shell SQL de CockroachDB usando el siguiente comando.
cockroach sql --certs-dir=$COCKROACH_CERTS_DIR \
--host=10.5.5.21
Cree dos bases de datos 'hakasedb' y 'hakasedb2' utilizando las consultas a continuación.
create database hakasedb;
create database hakasedb2;
Ahora imprima la lista de bases de datos y asegúrese de obtener dos bases de datos que acabamos de crear.
show databases;
A continuación, inicie sesión en el servidor 'node2' y acceda al shell SQL de CockroachDB con el siguiente comando.
cockroach sql --certs-dir=$COCKROACH_CERTS_DIR \
--host=10.5.5.22
Consulte la lista de bases de datos.
show databases;
Y obtendrá 'hakasedb' y 'hakasedb2' se ha replicado en el servidor 'node2'.
Y finalmente, la instalación y configuración de Secure CockroachDB Cluster utilizando Ubuntu 18.04 se completó con éxito.