Installation de Couchbase v7.0.5
L'installation de Couchbase peut être effectuée sur des machines physiques, virtuelles ou dans des conteneurs Docker. Selon vos préférences, vous pouvez opter pour une installation en mode standalone (un seul noeud de cluster) ou en cluster. Pour faciliter la prise en main, nous allons ici vous guider dans l'installation d'un cluster de deux noeuds avec Docker Compose.
Pré-requis
Avoir une machine virtuelle avec ubuntu installé, docker et docker-compose installés. Au minimum et en fonction des services à installer, il faut compter 2GB de RAM et 1 vCPU par noeud.
Installation
Pour cette installation, nous avons créé le fichier docker-compose.yml ci-dessous. Nous avons choisi d'utiliser une version Enterprise Edition (EE) de Couchbase Server. Nous avons mappé le répertoire de données de Couchbase par défaut /opt/couchbase/var aux volumes Docker data1 et data2 sur les deux serveurs pour persister les données sur le serveur hôte. Nous avons utilisé le sous-réseau 172.18.56 pour le cluster. Les ports utilisés par Couchbase sont connectés à des ports différents sur l'hôte pour les deux serveurs Couchbase.
version: '3.5' services: dbServer1: container_name: dbServer1 image: couchbase/server:enterprise-7.0.5 volumes: - type: volume source: data1 target: /opt/couchbase/var networks: dbNetwork: ipv4_address: 172.18.56.11 ports: - 18091-18096:8091-8096 - 11210-11211:11210-11211 ulimits: nproc: 65535 core: soft: 100000000 hard: 100000000 memlock: soft: 100000000 hard: 100000000 nofile: soft: 40960 hard: 40960 dbServer2: container_name: dbServer2 image: couchbase/server:enterprise-7.0.5 volumes: - type: volume source: data2 target: /opt/couchbase/var networks: dbNetwork: ipv4_address: 172.18.56.12 ports: - 28091-28096:8091-8096 - 21210-21211:11210-11211 ulimits: nproc: 65535 core: soft: 100000000 hard: 100000000 memlock: soft: 100000000 hard: 100000000 nofile: soft: 40960 hard: 40960 networks: dbNetwork: name: dbNetwork driver: bridge ipam: config: - subnet: 172.18.56.0/24 volumes: data1: data2:
Pour démarrer les services, utilisez la commande "docker-compose up"
root@data-resilience:/app/couchbase# docker-compose up -d Creating network "dbNetwork" with driver "bridge" Creating volume "couchbase_data1" with default driver Creating volume "couchbase_data2" with default driver Pulling dbServer1 (couchbase/server:enterprise-7.0.5)... enterprise-7.0.5: Pulling from couchbase/server 846c0b181fff: Pull complete 098e7d3aadf1: Pull complete f8b7ad0cadd3: Pull complete c27e33a17ea1: Pull complete 1336cd4242ae: Pull complete d57c9d24dd31: Pull complete 7d34ee76a43f: Pull complete bf3addd22ed4: Pull complete f33c5c077e96: Pull complete 4f4fb700ef54: Pull complete 6e49ef0e527d: Pull complete Digest: sha256:6f8449b0c967b6e5ee0bd185b44da171e236ffad33b9455ad49291f55d4fc2c5 Status: Downloaded newer image for couchbase/server:enterprise-7.0.5 Creating dbServer2 ... done Creating dbServer1 ... done
Il est important de vérifier que tout est en fonctionnement avant de continuer.
root@data-resilience:/app/couchbase# docker-compose ps Name Command State Ports ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- dbServer1 /entrypoint.sh couchbase-s ... Up 11207/tcp, 0.0.0.0:11210->11210/tcp,:::11210->11210/tcp, 0.0.0.0:11211->11211/tcp,:::11211->11211/tcp, 11280/tcp, 18091/tcp, 18092/tcp, 18093/tcp, 18094/tcp, 18095/tcp, 18096/tcp, 18097/tcp, 0.0.0.0:18091->8091/tcp,:::18091->8091/tcp, 0.0.0.0:18092->8092/tcp,:::18092->8092/tcp, 0.0.0.0:18093->8093/tcp,:::18093->8093/tcp, 0.0.0.0:18094->8094/tcp,:::18094->8094/tcp, 0.0.0.0:18095->8095/tcp,:::18095->8095/tcp, 0.0.0.0:18096->8096/tcp,:::18096->8096/tcp, 8097/tcp, 9123/tcp dbServer2 /entrypoint.sh couchbase-s ... Up 11207/tcp, 0.0.0.0:21210->11210/tcp,:::21210->11210/tcp, 0.0.0.0:21211->11211/tcp,:::21211->11211/tcp, 11280/tcp, 18091/tcp, 18092/tcp, 18093/tcp, 18094/tcp, 18095/tcp, 18096/tcp, 18097/tcp, 0.0.0.0:28091->8091/tcp,:::28091->8091/tcp, 0.0.0.0:28092->8092/tcp,:::28092->8092/tcp, 0.0.0.0:28093->8093/tcp,:::28093->8093/tcp, 0.0.0.0:28094->8094/tcp,:::28094->8094/tcp, 0.0.0.0:28095->8095/tcp,:::28095->8095/tcp, 0.0.0.0:28096->8096/tcp,:::28096->8096/tcp, 8097/tcp, 9123/tcp 0.0.0.0:28096->8096/tcp,:::28096->8096/tcp, 8097/tcp, 9123/tcp
Initialisation et configuration du cluster
Maintenant que l'installation est terminée, nous allons nous concentrer sur la configuration de notre cluster Couchbase.
La configuration consiste à initialiser le cluster en premier lieu, puis à ajouter les autres nœuds. Nous avons décidé d'installer tous les services (données, index, requête, recherche, alerte, analyse et sauvegarde) pour les explorer un par un par la suite.
Se connecter au premier conteneur dbServer1 avec la commande "docker exec" puis lancer la commande cluster-init comme indiqué ci-dessous.
Ici db-cluster est le nom de notre cluster. admin/admin123 est le compte administrateur pour le cluster. Nous avons assigné 256MB de mémoire pour tous les services excepté Analytics qui est configuré avec la valeur minimale de 1GB.
root@data-resilience:/app/couchbase# docker exec -ti dbServer1 sh # couchbase-cli cluster-init -c 172.18.56.11 \ --cluster-username admin \ --cluster-password admin123 \ --cluster-name db-cluster \ --services data,index,query,fts,eventing,analytics,backup \ --cluster-ramsize 256 \ --cluster-index-ramsize 256 \ --cluster-fts-ramsize 256 \ --cluster-eventing-ramsize 256 \ --cluster-analytics-ramsize 1024 > > > > > > > > > SUCCESS: Cluster initialized
Ajouter le deuxième noeud au cluster
A présent, notre cluster est configuré avec un le premier noeud. Nous allons utiliser la commande server-add pour ajouter le deuxième noeud 172.18.56.12.
A noter qu'ici --username et --password est le compte administrateur du cluster. On peut définir un compte administrateur pour le deuxième noeud qui soit différent avec les options --server-add-username et --server-add-password. Personnellement, je préfère l'homoginité et garder le même. Ce n'est pas une obligation d'installer les mêmes services comme le premier noeud.
# couchbase-cli server-add -c 172.18.56.11:8091 \ --username admin \ --password admin123 \ --server-add http://172.18.56.12:8091 \ --server-add-username admin \ --server-add-password admin123 \ --services data,index,query,fts,eventing,analytics,backup> > > > > > SUCCESS: Server added
Une fois le noeud ajouté, il faut lancer la commande rebalance afin que couchbase répartisse les données plus au moins uniformement entre les deux neuds.
# couchbase-cli rebalance -c 172.18.56.11:8091 \ --username admin \ --password admin123> > Rebalancing Bucket: 00/00 () 0 docs remaining [===========================================================================================================================================] 100.00% SUCCESS: Rebalance complete
Regardons ce que cela donne en utilisant la console d'administration. On constate que les deux serveurs sont affectés au même groupe "Group 1". Nous allons explorer la notion de groupes dans le chapitre sur la haute disponibilité avec Server Group Awareness.