GNU/Linux >> Tutoriels Linux >  >> Linux

Comment configurer l'équilibreur de charge Traefik avec Docker dans Ubuntu 20.04

Traefik est un proxy inverse moderne et un serveur d'équilibrage de charge qui prend en charge l'équilibrage de charge de couche 4 (TCP) et de couche 7 (HTTP). Sa configuration peut être définie au format JSON, YML ou au format TOML. Il se compose d'un point d'entrée (frontend), d'un service (backend), d'un routeur (règles), de middlewares (fonctionnalités optionnelles).

Cet article vous montrera comment utiliser l'équilibreur de charge Traefik en mode couche 7 (HTTP).

Prérequis

  1. Docker et docker-compose installés
  2. Connexion Internet pour télécharger les images Docker.
  3. DNS Une carte d'enregistrement vers votre domaine pour obtenir un certificat Let's Encrypt (par exemple, traefik.votredomaine.com)

Configuration

J'exécuterai deux serveurs principaux (conteneur nginx) et un conteneur Traefik dans la même zone réseau Docker. J'utilise traefik.yourdomain.com pour l'explication. Vous devez avoir votre propre domaine.

Commençons par créer un répertoire à votre domicile.

$ mkdir traefik && cd traefik

Créez maintenant un réseau Docker à l'aide de la commande suivante. Cela aide à atteindre le conteneur à partir de leur nom.

$ docker network create web_zone

Configuration Traefik.yaml

Tout d'abord, créez un fichier nommé traefik.yaml :

$ vim traefik.yaml

et collez le contenu suivant.

# Static configuration
entryPoints:
    unsecure:
        address: :80
    secure:
        address: :443

certificatesResolvers:
    myresolver:
        acme:
            email: [email protected]
            storage: acme.json
            httpChallenge:
                entryPoint: unsecure
            
providers:
      file:
      filename: tls.yaml
      watch: true

Explication

  • Les points d'entrée sont comme des services et des ports de référencement frontaux.
  • certificatesResolvers consiste à utiliser un certificat Letsencrypt à la demande.
  • Les fournisseurs sont le fichier permettant de définir les routeurs/intergiciels et services

Configuration du fournisseur de fichiers

Maintenant, dans le même répertoire, créez un autre fichier que nous avons défini dans la section fournisseur :

$ vim tls.yaml

et collez la configuration yaml suivante.

http:
    routers:
        http_router:
            rule: "Host(`traefik.yourdomain.com`)"
            service: allbackend
        https_router:
            rule: "Host(`traefik.yourdomain.com`)"
            service: allbackend
            tls:
                certResolver: myresolver
                options: tlsoptions
    services:
        allbackend:
            loadBalancer:
                servers:
                    - url: "http://myserver1/"
                    - url: "http://myserver2/"
           
tls:
    options:
        tlsoptions:
            minVersion: VersionTLS12

Explication

  • La section routeur sert à définir la route. Nous avons deux routes pour http et https
  • Les backends sont définis dans les services, vous pouvez également spécifier des algorithmes d'équilibrage de charge.
  • tls pour définir la configuration et les options TLS.

Comme défini dans le fichier, créez le fichier suivant pour stocker le certificat Let's Encrypt.

$ touch acme.json
$ chmod 600 acme.json

Docker-compose pour traefik

Je vais créer un conteneur à l'aide de docker compose et mapper le port 80, 443. Vous définissez votre nom de domaine. Créez un fichier docker-compse.yml :

$ vim docker-compose.yml

et collez la configuration suivante :

version: '3'

services:

  traefik:
    image: traefik:latest
    command: --docker --docker.domain=yourdomain.com
    ports:
      - 80:80
      - 443:443
    networks:
      - web_zone
    volumes:
      - /run/docker.sock:/run/docker.sock
      - ./traefik.yaml:/traefik.yaml
      - ./tls.yaml:/tls.yaml
      - ./acme.json:/acme.json
    container_name: traefik
    restart: always
networks:
  web_zone:
      external: true

Serveur principal

Exécutons maintenant deux serveurs principaux à l'aide de l'image nginx. Créez d'abord un répertoire,

$ mkdir ~/traefik/backend && cd ~/traefik/backend/

Créez deux fichiers d'index comme ci-dessous.

echo "<h1> Hello server 1</h1>" > index-server1.html
echo "<h1> Hello server 2</h1>" > index-server2.html

Fichier de composition Docker pour exécuter deux serveurs principaux nginx

Voici le fichier de composition simple qui crée deux conteneurs nginx. Créez le fichier docker-compse.yml :

$ vim docker-compose.yml

et collez la configuration suivante :

version: '3'
services:
  myserver1:
    image: nginx
    container_name: nginx1
    restart: always
    volumes:
      - ./index-server1.html:/usr/share/nginx/html/index.html
    networks:
      - web_zone
  myserver2:
    image: nginx
    container_name: nginx2
    restart: always
    volumes:
      - ./index-server2.html:/usr/share/nginx/html/index.html
    networks:
      - web_zone
networks:
  web_zone:
        external: true

Démarrer les conteneurs Docker

Exécutez maintenant le conteneur. Tout d'abord, ouvrez le conteneur principal nginx à l'aide de la commande suivante.

$:~/traefik/backend$ docker compose up -d

Deux conteneurs doivent être en cours d'exécution. Confirmez-le en exécutant la commande suivante.

[email protected]:~/traefik/backend$ docker ps

Maintenant, revenez au répertoire et exécutez la commande suivante pour exécuter l'équilibreur de charge traefik.

$:~/traefik$ docker compose up -d

Assurez-vous que le conteneur traefik est opérationnel.

$:~/traefik$ docker ps

Parcourir le site

Ouvrez un navigateur et saisissez votre nom de domaine http://traefik.votredomaine.com. Vous obtiendrez la réponse ci-dessous.

De plus, si vous actualisez la page, vous serez redirigé vers le second backend. Il s'agit de l'algorithme de routage par défaut dans traefik.

Vous pouvez également vérifier que le certificat est émis par Letsencrypt pendant que le conteneur est en place. Accédez simplement à https://traefik.votredomaine.com

Conclusion

Vous apprendrez à utiliser traefik comme équilibreur de charge pour votre conteneur Docker. Vous pouvez en savoir plus en visitant le site officiel https://doc.traefik.io/traefik/ . Merci.


Linux
  1. Comment configurer un serveur FTP avec VSFTPD sur Ubuntu 20.04

  2. Comment configurer un serveur FTP avec VSFTPD sur Ubuntu 18.04

  3. Comment configurer le registre Docker privé sur Ubuntu 20.04

  4. Comment installer WordPress avec Docker sur Ubuntu

  5. Comment installer Docker sur Ubuntu 18.04 ?

Comment installer Mailtrain sur Ubuntu 18.04 avec Docker

Comment configurer HAProxy comme équilibreur de charge pour Nginx dans CentOS 7

Comment configurer l'authentification par mot de passe avec Apache sur Ubuntu 18.04

Comment installer Bitwarden Password Manager avec Docker sur Ubuntu 20.04

Comment installer Calibre Web sur Ubuntu 20.04 avec Docker

Comment installer Docker sur Ubuntu 18.04