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

PHPz
Libérer: 2023-07-29 19:54:29
original
1551 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

Parmi eux, est le jeton obtenu à l'étape précédente, 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
Copier après la connexion
Copier après la connexion

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
Copier après la connexion

Où, 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>
Copier après la connexion

est le nom du service, est le nombre d'instances de conteneur à déployer, à 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>
Copier après la connexion
  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>
Copier après la connexion

est le nom du service et

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
    Copier après la connexion
  2. Rejoindre le cluster Swarm :

    $ docker swarm join --token <TOKEN> 192.168.0.1:2377
    Copier après la connexion
  3. Créer le service Consul :

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

    $ docker service create --name consul --network my-network gliderlabs/consul-agent -join consul
    Copier après la connexion
  5. Créer un service d'application :

    $ docker service create --name my-service --replicas 3 --publish 8080:8080 my-app
    Copier après la connexion
  6. Augmentez le nombre d'instances de service :

    $ docker service scale my-service=5
    Copier après la connexion

    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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!