Publié par

Il y a 4 ans -

Temps de lecture 3 minutes

Simuler un cluster Couchbase local avec Docker

highres_217951302

Une des premières questions qui se posent lorsqu’on veut tester facilement un système distribué est : comment simuler un cluster en local de manière simple ? Dans cet article, nous étudierons le cas de Couchbase et nous verrons un script qui permet d’instancier un cluster local en une seule ligne de commande.





Constituer un cluster en local ?

Certains systèmes, tels MongoDB ou Riak, permettent de simuler nativement un cluster sur un environnement de développement. C’est un mécanisme très important qui permet d’expérimenter bon nombre de problèmes récurrents dans un environnement distribué. Personnellement, la première chose qui m’intéresse est de tester les différentes réactions de mon système en cas de chute d’un ou plusieurs nœuds, leur réapparition dans le cluster, le rebalancing, etc.

Malheureusement, Couchbase, bien que par ailleurs proposant de nombreux outils pour les administrateurs, ne propose pas nativement ce genre de fonctionnalité.

Mais rien n’est perdu ! Vous allez voir comment Docker va nous sauver la mise.

Nous allons donc traiter ici le cas de Couchbase, mais l’idée est applicable à un bon nombre de systèmes distribués.

Installation de Docker

Pour provisionner des machines munies de Couchbase en local, rien de plus simple, il suffit d’utiliser Docker.

Si vous n’êtes pas familier avec cette technologie, c’est l’occasion rêvée de s’y mettre ! Pour installer Docker, ça se passe dans la rubrique « docker engine » de la documentation de docker. Si vous ne connaissez pas du tout Docker et que vous souhaitez en savoir plus, vous pouvez également jeter un oeil sur le très bon guide de l’utilisateur de Docker.

Mais nous n’allons pas directement utiliser Docker pour créer notre cluster. Avec Docker, on est capable de créer individuellement chaque machine. Or, dans notre cas, ce qui nous intéresse n’est pas seulement leur création individuelle, mais aussi leur configuration. Ainsi, ces machines sauront directement dialoguer entre elles de manière à constituer un cluster.

Le script à exécuter

Et voici donc sans transition le script qu’il vous suffit de copier dans un fichier docker_couchbase.sh (par exemple), à rendre exécutable (chmod 744 docker_couchbase.sh) et à exécuter avec en argument le nombre de nœuds que vous souhaitez dans votre cluster.

#!/bin/bash
if [ $# -ne 1 ]
then
        echo 'Usage: ./docker_couchbase.sh number_of_nodes' >&2
        exit
fi

NODES_NUMBER=$1
IMAGE_NAME='couchbase/server:community-3.0.1'
ADMIN_LOGIN="Administrator"
ADMIN_PASSWORD="password"
CLUSTER_RAM_QUOTA="256"

docker run -d -p 11210:11210 -p 11211:11211 -p 8091:8091 -p 8092:8092 --name cb1 $IMAGE_NAME
sleep 15s
docker exec cb1 couchbase-cli cluster-init -c 127.0.0.1:8091 -u $ADMIN_LOGIN -p $ADMIN_PASSWORD --cluster-init-username=${ADMIN_LOGIN} --cluster-init-password=${ADMIN_PASSWORD} --cluster-init-port=8091 --cluster-init-ramsize=${CLUSTER_RAM_QUOTA}

for i in $(seq 2 $NODES_NUMBER)
do
        docker run -d --name cb$i $IMAGE_NAME
        sleep 15s
        next_ip_address=`docker inspect cb$i | awk -F ": " '/IPAddress/ {gsub(/"/, ""); gsub(/,/, ""); print $2}'`
        docker exec cb1 couchbase-cli server-add --cluster=localhost:8091 -u $ADMIN_LOGIN -p $ADMIN_PASSWORD --server-add=$next_ip_address --server-add-username=$ADMIN_PASSWORD --server-add-password=$ADMIN_PASSWORD
done

docker exec cb1 couchbase-cli rebalance --cluster=127.0.0.1 -u $ADMIN_LOGIN -p $ADMIN_PASSWORD

Rien de plus simple ! Pour les windowsiens, ce script est à exécuter dans votre Boot2Docker.

Et si vous souhaitez vous-même jouer avec l’image Docker de Couchbase ou simplement vous documenter, voici lien vers le repository Docker officiel de Couchbase.

Publié par

Commentaire

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Nous recrutons

Être un Xebian, c'est faire partie d'un groupe de passionnés ; C'est l'opportunité de travailler et de partager avec des pairs parmi les plus talentueux.