GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So richten Sie Traefik Load Balancer mit Docker in Ubuntu 20.04 ein

Traefik ist ein moderner Reverse-Proxy- und Load-Balancing-Server, der Layer-4- (TCP) und Layer-7-Lastausgleich (HTTP) unterstützt. Seine Konfiguration kann im JSON-, YML- oder im TOML-Format definiert werden. Es besteht aus Einstiegspunkt (Frontend), Dienst (Backend), Router (Regeln), Middlewares (optionale Funktionen).

In diesem Artikel wird gezeigt, wie Sie den Traefik-Load-Balancer im Layer-7-Modus (HTTP) verwenden.

Voraussetzungen

  1. Installiertes Docker und Docker-Compose
  2. Internetverbindung zum Herunterladen von Docker-Images.
  3. DNS A-Eintrag wird Ihrer Domain zugeordnet, um ein Let’s Encrypt-Zertifikat zu erhalten (z. B. traefik.yourdomain.com)

Konfiguration

Ich werde zwei Backend-Server (nginx-Container) und einen Traefik-Container in derselben Docker-Netzwerkzone ausführen. Ich verwende traefik.yourdomain.com für die Erklärung. Sie benötigen eine eigene Domain.

Beginnen wir damit, ein Verzeichnis an Ihrem Heimatstandort zu erstellen.

$ mkdir traefik && cd traefik

Erstellen Sie nun mit dem folgenden Befehl ein Docker-Netzwerk. Dies hilft, den Container über seinen Namen zu erreichen.

$ docker network create web_zone

Traefik.yaml-Konfiguration

Erstellen Sie zunächst eine Datei mit dem Namen traefik.yaml:

$ vim traefik.yaml

und fügen Sie den folgenden Inhalt ein.

# 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

Erklärung

  • Einstiegspunkte sind wie Front-End-Auflistungsdienste und Ports.
  • certificatesResolvers soll ein Letsencrypt-Zertifikat auf Abruf verwenden.
  • Provider sind die Datei zum Definieren von Routern/Middlewares und Diensten

Dateianbieterkonfiguration

Erstellen Sie nun im selben Verzeichnis eine weitere Datei, die wir im Provider-Abschnitt definiert haben:

$ vim tls.yaml

und fügen Sie die folgende Yaml-Konfiguration ein.

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

Erklärung

  • Der Router-Abschnitt soll die Route definieren. Wir haben zwei Routen für http und https
  • Backends werden in Diensten definiert, Sie können auch Lastausgleichsalgorithmen angeben.
  • tls zum Definieren der TLS-Konfiguration und -Optionen.

Wie in der Datei definiert, erstellen Sie die folgende Datei zum Speichern des Let’s Encrypt-Zertifikats.

$ touch acme.json
$ chmod 600 acme.json

Docker-Compose für Traefik

Ich werde einen Container mit Docker Compose erstellen und Port 80, 443 zuordnen. Sie definieren Ihren Domainnamen. Erstellen Sie eine Datei docker-compse.yml:

$ vim docker-compose.yml

und fügen Sie die folgende Konfiguration ein:

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

Backend-Server

Lassen Sie uns nun zwei Backend-Server mit dem Nginx-Image ausführen. Erstellen Sie zuerst ein Verzeichnis,

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

Erstellen Sie zwei Indexdateien wie unten beschrieben.

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

Docker Compose-Datei zum Ausführen von zwei Nginx-Backend-Servern

Das Folgende ist die einfache Compose-Datei, die zwei Nginx-Container erstellt. Docker-compse.yml-Datei erstellen:

$ vim docker-compose.yml

und fügen Sie die folgende Konfiguration ein:

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

Starten Sie die Docker-Container

Führen Sie nun den Container aus. Erstellen Sie zuerst den nginx-Backend-Container mit dem folgenden Befehl.

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

Es müssen zwei Container ausgeführt werden. Bestätigen Sie dies, indem Sie den folgenden Befehl ausführen.

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

Gehen Sie nun zurück in das Verzeichnis und führen Sie den folgenden Befehl aus, um den Traefik-Load-Balancer auszuführen.

$:~/traefik$ docker compose up -d

Stellen Sie sicher, dass der Traefik-Container betriebsbereit ist.

$:~/traefik$ docker ps

Durchsuchen Sie die Website

Öffnen Sie einen Browser und geben Sie Ihren Domainnamen http://traefik.yourdomain.com ein. Sie erhalten die Antwort unten.

Wenn Sie die Seite aktualisieren, werden Sie außerdem zum zweiten Backend weitergeleitet. Dies ist der Standard-Routing-Algorithmus in Traefik.

Sie können auch überprüfen, ob das Zertifikat von letsencrypt ausgestellt wurde, während der Container aktiv ist. Navigieren Sie einfach zu https://traefik.yourdomain.com

Schlussfolgerung

Sie lernen, wie Sie Traefik als Load Balancer für Ihren Docker-Container verwenden. Weitere Informationen finden Sie auf der offiziellen Website https://doc.traefik.io/traefik/ . Danke.


Linux
  1. So richten Sie einen FTP-Server mit VSFTPD unter Ubuntu 20.04 ein

  2. So richten Sie einen FTP-Server mit VSFTPD unter Ubuntu 18.04 ein

  3. So richten Sie eine private Docker-Registrierung unter Ubuntu 20.04 ein

  4. So installieren Sie WordPress mit Docker auf Ubuntu

  5. Wie installiere ich Docker unter Ubuntu 18.04?

So installieren Sie Mailtrain auf Ubuntu 18.04 mit Docker

So richten Sie HAProxy als Load Balancer für Nginx in CentOS 7 ein

So richten Sie die Passwortauthentifizierung mit Apache unter Ubuntu 18.04 ein

So installieren Sie Bitwarden Password Manager mit Docker unter Ubuntu 20.04

So installieren Sie Calibre Web auf Ubuntu 20.04 mit Docker

So installieren Sie Docker unter Ubuntu 18.04