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.