Aller au contenu

Mettre en place un cluster local

Configuration de clusters locaux pour les tests et le développement

Pour les déploiements de test et de développement, la méthode la plus rapide et la plus simple consiste à configurer un cluster local. Pour un déploiement en production, reportez-vous à la section clustering .

Cluster autonome local

Démarrage d’un cluster

Exécutez la commande suivante pour déployer un cluster etcd en tant que cluster autonome :

$ ./etcd
...

Si le binaire etcd n’est pas présent dans le répertoire de travail courant, il se peut qu’il se trouve soit à $GOPATH/bin/etcd, soit à /usr/local/bin/etcd. Exécutez la commande en conséquence.

Le membre etcd en cours d’exécution écoute sur localhost:2379 pour les requêtes clientes.

Interaction avec le cluster

Utilisez etcdctl pour interagir avec le cluster en cours d’exécution :

  1. Stockez une paire clé-valeur exemple dans le cluster :

      $ ./etcdctl put foo bar
      OK

    Si OK est affiché, la sauvegarde de la paire clé-valeur a réussi.

  2. Récupérer la valeur de foo :

    $ ./etcdctl get foo
    bar

    Si bar est retourné, l’interaction avec le cluster etcd fonctionne comme prévu.

Cluster local à plusieurs membres

Démarrage d’un cluster

Un Procfile situé à la racine du dépôt git d’etcd est fourni pour configurer facilement un cluster local à plusieurs membres. Pour démarrer un cluster à plusieurs membres, accédez à la racine de l’arborescence source d’etcd et exécutez les étapes suivantes :

  1. Installer goreman pour contrôler les applications basées sur Procfile :

    $ go install github.com/mattn/goreman@latest
  2. Démarrez un cluster avec goreman en utilisant le Procfile par défaut d’etcd :

    $ goreman -f Procfile start

    Les membres démarrent. Ils écoutent respectivement sur localhost:2379, localhost:22379 et localhost:32379 les requêtes clientes.

Interaction avec le cluster

Utilisez etcdctl pour interagir avec le cluster en cours d’exécution :

  1. Affichez la liste des membres :

    $ etcdctl --write-out=table --endpoints=localhost:2379 member list

    La liste des membres etcd s’affiche comme suit :

    +------------------+---------+--------+------------------------+------------------------+
    |        ID        | STATUS  |  NAME  |       PEER ADDRS       |      CLIENT ADDRS      |
    +------------------+---------+--------+------------------------+------------------------+
    | 8211f1d0f64f3269 | started | infra1 | http://127.0.0.1:2380  | http://127.0.0.1:2379  |
    | 91bc3c398fb3c146 | started | infra2 | http://127.0.0.1:22380 | http://127.0.0.1:22379 |
    | fd422379fda50e48 | started | infra3 | http://127.0.0.1:32380 | http://127.0.0.1:32379 |
    +------------------+---------+--------+------------------------+------------------------+
  2. Stockez une paire clé-valeur exemple dans le cluster :

    $ etcdctl put foo bar
    OK

    Si OK est affiché, la sauvegarde de la paire clé-valeur a réussi.

Test de tolérance aux pannes

Pour tester la tolérance aux pannes d’etcd, arrêtez un membre et tentez de récupérer la clé.

  1. Identifiez le nom du processus du membre à arrêter.

    Le Procfile liste les propriétés du cluster à plusieurs membres. Par exemple, considérez le membre dont le nom de processus est etcd2.

  2. Arrêtez le membre :

    # kill etcd2
    $ goreman run stop etcd2
  3. Stockez une clé :

    $ etcdctl put key hello
    OK
  4. Récupérez la clé stockée à l’étape précédente :

    $ etcdctl get key
    hello
  5. Récupérer une clé depuis un membre arrêté :

    $ etcdctl --endpoints=localhost:22379 get key

    La commande doit afficher une erreur due à un échec de connexion :

    2017/06/18 23:07:35 grpc: Conn.resetTransport failed to create client transport: connection error: desc = "transport: dial tcp 127.0.0.1:22379: getsockopt: connection refused"; Reconnecting to "localhost:22379"
    Error:  grpc: timed out trying to connect
  6. Redémarrez le membre arrêté :

    $ goreman run restart etcd2
  7. Obtenez la clé depuis le membre redémarré :

    $ etcdctl --endpoints=localhost:22379 get key
    hello

    Redémarrer le membre rétablit la connexion. etcdctl pourra désormais récupérer la clé avec succès. Pour en savoir plus sur l’interaction avec etcd, consultez la section interaction avec etcd .