GNU/Linux >> Linux Esercitazione >  >> Linux

Come configurare il servizio di bilanciamento del carico Traefik con Docker in Ubuntu 20.04

Traefik è un moderno proxy inverso e server di bilanciamento del carico che supporta il bilanciamento del carico di livello 4 (TCP) e di livello 7 (HTTP). La sua configurazione può essere definita in formato JSON, YML o TOML. È costituito da punto di ingresso (frontend), servizio (backend), router (regole), middleware (funzionalità opzionali).

Questo articolo mostrerà come utilizzare il sistema di bilanciamento del carico Traefik in modalità Layer 7 (HTTP).

Prerequisiti

  1. Docker installato e composizione mobile
  2. Connessione Internet per scaricare immagini Docker.
  3. DNS Una mappa di record al tuo dominio per ottenere il certificato Let's Encrypt (ad es. traefik.yourdomain.com)

Configurazione

Eseguirò due server back-end (contenitore nginx) e un container Traefik nella stessa zona di rete Docker. Sto usando traefik.yourdomain.com per la spiegazione. Devi avere il tuo dominio.

Iniziamo creando una directory nella tua posizione iniziale.

$ mkdir traefik && cd traefik

Ora crea una rete Docker usando il seguente comando. Questo aiuta a raggiungere il contenitore dal loro nome.

$ docker network create web_zone

Configurazione Traefik.yaml

Prima di tutto, crea un file chiamato traefik.yaml:

$ vim traefik.yaml

e incolla il seguente contenuto.

# 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

Spiegazione

  • I punti di ingresso sono come servizi e porti di elenco front-end.
  • certificatesResolvers consiste nell'utilizzare un certificato Letencrypt su richiesta.
  • I provider sono il file per definire router/middleware e servizi

Configurazione del provider di file

Ora, nella stessa directory, crea un altro file che abbiamo definito nella sezione provider:

$ vim tls.yaml

e incolla la seguente configurazione di yaml.

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

Spiegazione

  • La sezione router serve a definire il percorso. Abbiamo due percorsi per http e https
  • I backend sono definiti nei servizi, puoi anche specificare algoritmi di bilanciamento del carico.
  • tls per definire la configurazione e le opzioni TLS.

Come definito nel file, crea il seguente file per archiviare il certificato Let's Encrypt.

$ touch acme.json
$ chmod 600 acme.json

Docker-componi per traefik

Creerò un contenitore usando la finestra mobile Componi e mappa la porta 80, 443. Tu definisci il tuo nome di dominio. Crea un file docker-compse.yml:

$ vim docker-compose.yml

e incolla la seguente configurazione:

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

Server di backend

Ora eseguiamo due server back-end usando l'immagine nginx. Prima crea una directory,

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

Crea due file di indice come di seguito.

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

Docker compone il file per eseguire due server backend nginx

Quello che segue è il semplice file di composizione che crea due contenitori nginx. Crea il file docker-compse.yml:

$ vim docker-compose.yml

e incolla la seguente configurazione:

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

Avvia i contenitori Docker

Ora esegui il contenitore. Per prima cosa, apri il container back-end di nginx usando il comando seguente.

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

Devono essere in esecuzione due contenitori. Confermalo eseguendo il comando seguente.

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

Ora, torna alla directory ed esegui il comando seguente per eseguire il bilanciamento del carico traefik.

$:~/traefik$ docker compose up -d

Assicurati che il contenitore traefik sia attivo e funzionante.

$:~/traefik$ docker ps

Sfoglia il sito

Apri un browser e digita il tuo nome di dominio http://traefik.tuodominio.com. Riceverai la risposta di seguito.

Inoltre, se aggiorni la pagina verrai indirizzato al secondo back-end. Questo è l'algoritmo di instradamento predefinito in traefik.

Puoi anche verificare che il certificato sia emesso daletsencrypt mentre il contenitore è attivo. Basta navigare su https://traefik.yourdomain.com

Conclusione

Imparerai come utilizzare traefik come sistema di bilanciamento del carico per il tuo container Docker. Puoi esplorare di più visitando il sito ufficiale https://doc.traefik.io/traefik/ . Grazie.


Linux
  1. Come configurare il server FTP con VSFTPD su Ubuntu 20.04

  2. Come configurare il server FTP con VSFTPD su Ubuntu 18.04

  3. Come configurare il registro Docker privato su Ubuntu 20.04

  4. Come installare WordPress con Docker su Ubuntu

  5. Come installare Docker su Ubuntu 18.04?

Come installare Mailtrain su Ubuntu 18.04 con Docker

Come configurare HAProxy come Load Balancer per Nginx in CentOS 7

Come impostare l'autenticazione della password con Apache su Ubuntu 18.04

Come installare Bitwarden Password Manager con Docker su Ubuntu 20.04

Come installare Calibre Web su Ubuntu 20.04 con Docker

Come installare Docker su Ubuntu 18.04