CockroachDB est une base de données SQL open source et native du cloud développée par CockroachLabs. Il s'agit d'une base de données SQL distribuée construite sur le magasin transactionnel et clé-valeur. CockroachDB est une base de données SQL évolutive qui a été comparée à la base de données Google Spanner. Il est basé sur le fil de protocole PostgreSQL et prêt pour la production.
Dans ce tutoriel, nous allons vous montrer comment configurer le cluster Secure CockroachDB sur Ubuntu 18.04. Vous apprendrez à configurer le cluster sécurisé, à accéder au tableau de bord d'administration de CockroachDB, à créer un nouvel utilisateur sur CockroachDB, à créer et à afficher une base de données sur CockroachDB.
Prérequis
Pour exécuter le cluster CockroachDB, nous avons besoin de plusieurs serveurs. Et nous utiliserons trois serveurs Ubuntu 18.04 avec le nom d'hôte et l'adresse IP détaillés ci-dessous.
node1 10.5.5.21
node2 10.5.5.22
node3 10.5.5.23
Qu'allons-nous faire ?
- Configurer le serveur NTP avec Chronysystemctl restart chrony
systemctl enable chrony - Télécharger et installer CockroachDB
- Créer des certificats
- Initialiser le cluster CockroachDB
- Ajouter un nœud au cluster CockroachDB
- Test
Étape 1 - Configurer le serveur NTP avec Chrony
Tout d'abord, nous devons synchroniser l'heure entre les serveurs du cluster. Nous devons donc installer le package NTP sur tous les serveurs. Et pour ce guide, nous utiliserons chrony.
Installez le package chrony sur tous les serveurs à l'aide de la commande suivante.
sudo apt install chrony -y
Une fois l'installation terminée, allez dans le répertoire de configuration '/etc/chrony/' et éditez le fichier 'chrony.conf'.
cd /etc/chrony/
vim chrony.conf
Supprimez le pool NTP par défaut et remplacez-le par votre propre pool de pays.
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
Enregistrez et fermez.
Redémarrez maintenant le service chrony, puis ajoutez chrony au service de démarrage.
systemctl restart chrony
systemctl enable chrony
En conséquence, le temps entre les serveurs sera synchronisé sur les mêmes serveurs de pool NTP.
Étape 2 - Télécharger et installer CockroachDB
Dans cette étape, nous allons télécharger et installer CockroachDB sur tous les serveurs. Alors, exécutez toutes les commandes sur tous vos serveurs de cluster.
Créez un nouveau répertoire appelé 'binary' et entrez-y.
mkdir -p binary; cd binary
Téléchargez le fichier binaire compressé cockroachdb pour Linux et extrayez-le.
wget https://binaries.cockroachdb.com/cockroach-latest.linux-amd64.tgz
tar -xvzf cockroach-latest.linux-amd64.tgz
Copiez maintenant le fichier binaire 'cockroach' dans le répertoire '/etc/local/bin'.
cp cockroach-*/cockroach /usr/local/bin/
Après cela, vous pouvez exécuter la commande "cafard" et explorer la commande de base pour obtenir de l'aide, vérifier la version, etc.
cockroach version
Le CockroachDB a été installé sur tous les serveurs.
Étape 3 - Créer des certificats
Nous allons maintenant générer des certificats pour sécuriser le cluster CockrouchDB. Nous pouvons utiliser OpenSSL ou la ligne de commande cockroach pour générer des fichiers de certificat.
Nous allons générer le certificat et la clé de l'autorité de certification, ainsi que le certificat de génération pour l'utilisateur root et le certificat pour chaque nœud du cluster.
Créez le répertoire de certificat '~/.cockroach-certs' et la variable d'environnement correspondante.
mkdir -p ${HOME}/.cockroach-certs/
export COCKROACH_CERTS_DIR='${HOME}/.cockroach-certs/'
Créer une autorité de certification et copier sur tous les nœuds
Sur le serveur 'node1', créez l'autorité de certification à l'aide de la commande cockroach ci-dessous.
cockroach cert create-ca \
--certs-dir=$COCKROACH_CERTS_DIR \
--ca-key=$COCKROACH_CERTS_DIR/ca.key
Et vous obtiendrez le 'ca.key' et 'ca.crt' dans le répertoire '~/.cockroach-certs'.
Après cela, copiez le certificat et la clé ca sur tous les serveurs à l'aide de la commande scp comme ci-dessous.
Copiez sur le serveur 'node2'.
scp ~/.cockroach-certs/ca.crt ~/.cockroach-certs/ca.key [email protected]:~/.cockroach-certs/
Copiez sur le serveur 'node3'.
scp ~/.cockroach-certs/ca.crt ~/.cockroach-certs/ca.key [email protected]:~/.cockroach-certs/
Assurez-vous maintenant que le certificat et la clé de l'autorité de certification sont téléchargés sur tous les serveurs hôtes.
Créer des certificats clients
Après avoir créé l'autorité de certification, nous devons générer le certificat client. Le certificat client sera utilisé pour sécuriser la communication entre le shell SQL intégré et le cluster.
Générez le certificat client sur tous les serveurs à l'aide de la commande cockroach suivante.
cockroach cert create-client \
root \
--certs-dir=$COCKROACH_CERTS_DIR \
--ca-key=$COCKROACH_CERTS_DIR/ca.key
Et vous obtiendrez des certificats client pour l'utilisateur root 'client.root.crt' et 'client.root.key'.
Créer des certificats de serveur
Les certificats de serveur seront utilisés pour sécuriser la communication entre les serveurs du cluster CockroachDB. Et pour rejoindre le cluster sécurisé, vous devez générer des certificats de serveur pour chaque serveur.
Sur le 'node1', créez le certificat du serveur à l'aide de la commande suivante.
cockroach cert create-node \
localhost \
$(hostname) \
10.5.5.21 \
--certs-dir=$COCKROACH_CERTS_DIR \
--ca-key=$COCKROACH_CERTS_DIR/ca.key
Remplacez l'adresse IP par la vôtre.
Sur le 'node2', créez le certificat du serveur à l'aide de la commande suivante.
cockroach cert create-node \
localhost \
$(hostname) \
10.5.5.22 \
--certs-dir=$COCKROACH_CERTS_DIR \
--ca-key=$COCKROACH_CERTS_DIR/ca.key
Remplacez l'adresse IP par la vôtre.
Sur le 'node3', créez le certificat du serveur à l'aide de la commande suivante.
cockroach cert create-node \
localhost \
$(hostname) \
10.5.5.23 \
--certs-dir=$COCKROACH_CERTS_DIR \
--ca-key=$COCKROACH_CERTS_DIR/ca.key
Remplacez l'adresse IP par la vôtre.
Vous obtiendrez maintenant les certificats de serveur 'node.crt' et 'node.key' dans le répertoire '~/.cockroach-certs'.
Étape 4 - Démarrer le cluster Secure CockroachDB
Après avoir créé des certificats SSL, nous allons initialiser le cluster Secure CockroachDB à partir du serveur 'node1'.
Exécutez la commande suivante sur le serveur 'node1'.
cockroach start \
--background --certs-dir=$COCKROACH_CERTS_DIR \
--advertise-host=10.5.5.21 --listen-addr=10.5.5.21
Assurez-vous qu'il n'y a pas d'erreur.
Après cela, vérifiez l'état du nœud du cluster en exécutant la commande cockroach ci-dessous.
cockroach node status --host=10.5.5.21
Vous obtiendrez le node1 avec l'adresse IP 10.5.5.21 est opérationnel avec CockroachDB v2.1.6.
Étape 5 - Ajouter un nœud au cluster
Ensuite, nous ajouterons le 'node2' et le 'node3' au cluster sécurisé CockroachDB.
Assurez-vous que l'autorité de certification et le certificat du serveur se trouvent dans le répertoire ~/.cockroach-certs.
ls -lah ~/.cockroah-certs/
Exécutez maintenant la commande suivante pour ajouter le 'node2' avec l'adresse IP 10.5.5.22. Ajoutez-le au cluster 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
Une fois terminé, accédez au 'node3' et exécutez la commande suivante.
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
Remplacez l'adresse IP par la vôtre.
Maintenant, le 'node2' et le 'node3' ont été ajoutés au cluster Secure CockroachDB. Vérifiez-le à partir du serveur 'node1' à l'aide de la commande suivante.
cockroach node status --host=10.5.5.21
Et vous obtiendrez trois serveurs différents qui exécutent le cafard v2.1.6.
Étape 6 - Tester
Pour cette dernière étape, nous testerons notre installation de CockroachDB Secure Cluster en accédant au tableau de bord d'administration et en testant la réplication de la base de données entre les serveurs.
Test du tableau de bord CockroachDB
Le CockroachDB fournit une belle interface utilisateur de tableau de bord pour surveiller le cluster. Ouvrez votre navigateur Web et tapez l'adresse IP du serveur suivie du port 8080.
https://10.5.5.21:8080/
Et vous obtiendrez la page de connexion CockroachDB comme ci-dessous.
Pour se connecter au tableau de bord, nous devons créer un utilisateur sur la base de données CockroachDB.
Revenez à votre terminal 'node1' et connectez-vous au shell SQL cockroachdb à l'aide de la commande suivante.
cockroach sql --certs-dir=$COCKROACH_CERTS_DIR \
--host=10.5.5.21
Créez maintenant un nouvel utilisateur appelé "hakase" avec le mot de passe "[email protected]#" en utilisant la requête ci-dessous.
CREATE USER hakase WITH PASSWORD '[email protected]#';
Tapez '\q' pour quitter le shell SQL CockroachDB.
Revenez maintenant au navigateur Web et saisissez l'utilisateur "hakase" avec le mot de passe "[email protected]#" sur la page de connexion, puis cliquez sur le bouton de connexion.
Et vous obtiendrez le tableau de bord d'administration CockroachDB comme ci-dessous.
Tester la réplication de la base de données
Nous allons maintenant tester la réplication de la base de données entre les serveurs du cluster CockroachDB en créant la base de données sur le 'node1' et en vérifiant la base de données à partir de 'node2' ou 'node3'.
Sur le 'node1', accédez au shell SQL CockroachDB à l'aide de la commande suivante.
cockroach sql --certs-dir=$COCKROACH_CERTS_DIR \
--host=10.5.5.21
Créez deux bases de données 'hakasedb' et 'hakasedb2' en utilisant les requêtes ci-dessous.
create database hakasedb;
create database hakasedb2;
Maintenant, imprimez la liste des bases de données et assurez-vous d'obtenir les deux bases de données que nous venons de créer.
show databases;
Ensuite, connectez-vous au serveur 'node2' et accédez au shell SQL CockroachDB à l'aide de la commande suivante.
cockroach sql --certs-dir=$COCKROACH_CERTS_DIR \
--host=10.5.5.22
Vérifiez la liste des bases de données.
show databases;
Et vous obtiendrez 'hakasedb' et 'hakasedb2' a été répliqué sur le serveur 'node2'.
Et enfin, l'installation et la configuration de Secure CockroachDB Cluster à l'aide d'Ubuntu 18.04 ont été effectuées avec succès.