Maison  >  Article  >  Opération et maintenance  >  Linux et Docker : Comment implémenter un cluster de conteneurs hautement disponible ?

Linux et Docker : Comment implémenter un cluster de conteneurs hautement disponible ?

PHPz
PHPzoriginal
2023-07-29 19:54:291534parcourir

Linux et Docker : Comment implémenter un cluster de conteneurs hautement disponible ?

Résumé : Avec le développement de la technologie des conteneurs, de plus en plus d'entreprises déploient progressivement des applications dans des conteneurs. Dans un environnement de production, il est essentiel d'obtenir une haute disponibilité pour un cluster de conteneurs. Cet article expliquera comment utiliser Linux et Docker pour créer un cluster de conteneurs hautement disponible et démontrera la méthode d'implémentation spécifique à travers des exemples de code.

  1. Créer un cluster Docker Swarm
    Docker Swarm est un outil natif de gestion de cluster de conteneurs fourni par Docker. Cela nous permet de former plusieurs hôtes Docker dans un cluster et de gérer uniformément le déploiement et le fonctionnement des conteneurs.

Tout d'abord, installez Docker sur chaque hôte Docker que vous souhaitez rejoindre le cluster. Ensuite, sélectionnez un hôte comme nœud de gestion du cluster Swarm et exécutez la commande suivante pour initialiser le cluster :

$ docker swarm init --advertise-addr <MANAGER-IP>

Où 50c92af3965d072a01ca8b69c30c4169 est l'adresse IP du nœud de gestion. Grâce à la commande ci-dessus, nous obtiendrons un jeton permettant aux autres hôtes de rejoindre le cluster. Ensuite, exécutez la commande suivante sur les autres hôtes qui souhaitent rejoindre le cluster :

$ docker swarm join --token <TOKEN> <MANAGER-IP>:<PORT>

Parmi eux, fe44cc81ab4c20272595cc1edf562112 est le jeton obtenu à l'étape précédente, 50c92af3965d072a01ca8b69c30c4169 des nœuds de gestion respectivement et le numéro de port.

  1. Configurer la découverte de services
    Chaque nœud du cluster de conteneurs doit pouvoir découvrir et accéder à d'autres nœuds. Pour mettre en œuvre la découverte de services, nous pouvons utiliser des outils tels que Consul ou Etcd. Ici, nous prenons Consul comme exemple.

Tout d'abord, installez et démarrez Consul sur tous les hôtes Docker. Ensuite, exécutez la commande suivante pour créer un service Consul :

$ docker service create --name consul --publish 8500:8500 --constraint 'node.role == manager' gliderlabs/consul-server -bootstrap

Cette commande crée un service nommé consul sur le nœud de gestion du cluster Swarm et mappe le port 8500 du conteneur au port 8500 de l'hôte.

Ensuite, exécutez la commande suivante sur d'autres nœuds pour rejoindre le service Consul :

$ docker service create --name consul --network <NETWORK> gliderlabs/consul-agent -join consul

Où, 1d4d001a3682e7356cdcdf6423e29e0f est le nom du réseau du cluster Swarm.

  1. Créer un service de conteneur
    Dans un cluster de conteneurs hautement disponible, nous devons déployer des applications sur plusieurs instances de conteneur et distribuer les requêtes via l'équilibrage de charge. Docker Swarm fournit un concept appelé service pour gérer les services de conteneurs.

Tout d'abord, préparez une image Docker contenant l'application que nous souhaitons déployer. Ensuite, exécutez la commande suivante pour créer un service :

$ docker service create --name <SERVICE-NAME> --replicas <REPLICAS> --publish <PORT> <IMAGE>

où 1f69d38ff7f38c32e75a871d13a954c2 est le nom du service, f9137ba0285552c9339eaf6686d35256 est le nombre d'instances de conteneur à déployer, a3b0c87895079be75e30be94102cc20b à mapper, < ;IMAGE> est l'image Docker où réside l'application.

  1. Exécuter le service de conteneur
    Le service créé à l'étape précédente déploiera automatiquement les instances de conteneur sur plusieurs nœuds du cluster.

Vous pouvez utiliser la commande suivante pour afficher l'état d'exécution du service et la distribution des instances de conteneur :

$ docker service ls
$ docker service ps <SERVICE-NAME>
  1. Réaliser l'équilibrage de charge
    Afin d'obtenir l'équilibrage de charge, nous pouvons utiliser la fonction d'équilibrage de charge intégrée de Essaim de Dockers. Grâce au nom et au numéro de port du service, vous pouvez accéder à plusieurs instances de conteneur derrière le service.
  2. Réaliser une expansion automatique
    Lorsque la charge dans le cluster de conteneurs devient plus importante, nous pouvons réaliser une expansion automatique en augmentant le nombre d'instances de conteneur.

Vous pouvez utiliser la commande suivante pour augmenter le nombre d'instances d'un service :

$ docker service scale <SERVICE-NAME>=<REPLICAS>

où 1f69d38ff7f38c32e75a871d13a954c2 est le nom du service et f9137ba0285552c9339eaf6686d35256

Résumé : L'utilisation de Linux et de Docker pour créer un cluster de conteneurs hautement disponible améliore non seulement la disponibilité des applications, mais fournit également des capacités de mise à l'échelle élastique et d'équilibrage de charge. Grâce à une configuration et une gestion raisonnables, nous pouvons obtenir des services de conteneurs efficaces et stables.

Exemple de code :

  1. Initialiser le cluster Swarm :

    $ docker swarm init --advertise-addr 192.168.0.1
  2. Rejoindre le cluster Swarm :

    $ docker swarm join --token <TOKEN> 192.168.0.1:2377
  3. Créer le service Consul :

    $ docker service create --name consul --publish 8500:8500 --constraint 'node.role == manager' gliderlabs/consul-server -bootstrap
  4. Rejoindre le service Consul :

    $ docker service create --name consul --network my-network gliderlabs/consul-agent -join consul
  5. Créer un service d'application :

    $ docker service create --name my-service --replicas 3 --publish 8080:8080 my-app
  6. Augmentez le nombre d'instances de service :

    $ docker service scale my-service=5

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn