GNU/Linux >> Znalost Linux >  >> Linux

Jak nastavit nástroj pro vyrovnávání zatížení Traefik s Dockerem v Ubuntu 20.04

Traefik je moderní reverzní proxy server a server pro vyrovnávání zátěže, který podporuje vyrovnávání zátěže vrstvy 4 (TCP) a vrstvy 7 (HTTP). Jeho konfiguraci lze definovat ve formátu JSON, YML nebo ve formátu TOML. Skládá se ze vstupního bodu (frontend), služby (backend), směrovače (pravidla), middlewaru (volitelné funkce).

Tento článek demonstruje, jak používat nástroj pro vyrovnávání zatížení Traefik v režimu vrstvy 7 (HTTP).

Předpoklady

  1. Nainstalovaný docker a docker-compose
  2. Připojení k internetu pro stahování obrázků dockeru.
  3. DNS Mapa záznamů do vaší domény pro získání certifikátu Let’s Encrypt (např. traefik.yourdomain.com)

Konfigurace

Budu provozovat dva backendové servery (kontejner nginx) a jeden kontejner Traefik ve stejné zóně sítě Docker. Pro vysvětlení používám traefik.yourdomain.com. Musíte mít vlastní doménu.

Začněme vytvořením adresáře ve vašem domovském umístění.

$ mkdir traefik && cd traefik

Nyní vytvořte dockerovou síť pomocí následujícího příkazu. To pomáhá dostat se do kontejneru z jejich jména.

$ docker network create web_zone

Konfigurace Traefik.yaml

Nejprve vytvořte soubor s názvem traefik.yaml:

$ vim traefik.yaml

a vložte následující obsah.

# 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

Vysvětlení

  • Vstupní body jsou jako frontendové seznamové služby a porty.
  • certificatesResolvers je používat na vyžádání letsencrypt certifikát.
  • Poskytovatelé jsou soubor, který definuje směrovače / middleware a služby

Konfigurace poskytovatele souborů

Nyní ve stejném adresáři vytvořte další soubor, který jsme definovali v sekci poskytovatele:

$ vim tls.yaml

a vložte následující konfiguraci 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

Vysvětlení

  • Sekce routeru má definovat trasu. Máme dvě cesty pro http a https
  • Backendy jsou definovány ve službách, můžete také určit algoritmy pro vyrovnávání zátěže.
  • tls pro definování konfigurace a možností TLS.

Jak je definováno v souboru, vytvořte následující soubor pro uložení certifikátu Let’s Encrypt.

$ touch acme.json
$ chmod 600 acme.json

Docker-compose pro traefik

Vytvořím kontejner pomocí docker compose a map 80, 443 port. Definujete název své domény. Vytvořte soubor docker-compse.yml:

$ vim docker-compose.yml

a vložte následující konfiguraci:

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

Nyní pojďme spustit dva backendové servery pomocí obrazu nginx. Nejprve vytvořte adresář

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

Vytvořte dva indexové soubory, jak je uvedeno níže.

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

Docker složí soubor pro spuštění dvou backendových serverů nginx

Následuje jednoduchý skládací soubor, který vytváří dva kontejnery nginx. Vytvořte soubor docker-compse.yml:

$ vim docker-compose.yml

a vložte následující konfiguraci:

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

Spusťte kontejnery Docker

Nyní spusťte kontejner. Nejprve vytvořte backendový kontejner nginx pomocí následujícího příkazu.

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

Musí běžet dva kontejnery. Potvrďte to provedením následujícího příkazu.

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

Nyní se vraťte do adresáře a spusťte následující příkaz pro spuštění nástroje traefik load balancer.

$:~/traefik$ docker compose up -d

Ujistěte se, že je kontejner traefik v provozu.

$:~/traefik$ docker ps

Procházet web

Otevřete prohlížeč a zadejte název své domény http://traefik.yourdomain.com. Níže obdržíte odpověď.

Také, pokud obnovíte stránku, budete přesměrováni na druhý backend. Toto je výchozí směrovací algoritmus v traefik.

Můžete také zkontrolovat, zda je certifikát vydán pomocí letsencrypt, když je kontejner v provozu. Stačí přejít na https://traefik.yourdomain.com

Závěr

Naučíte se používat traefik jako nástroj pro vyrovnávání zatížení pro váš docker kontejner. Více můžete prozkoumat na oficiálních stránkách https://doc.traefik.io/traefik/ . Děkuji.


Linux
  1. Jak nastavit FTP server s VSFTPD na Ubuntu 20.04

  2. Jak nainstalovat WordPress s Dockerem na Ubuntu

  3. Jak nainstalovat Docker na Ubuntu 18.04?

  1. Jak nastavit FTP server s VSFTPD na Ubuntu 18.04

  2. Jak nastavit soukromý registr dockerů na Ubuntu 20.04

  3. Jak nainstalovat ONLYOFFICE 8.9.0 s Dockerem na Ubuntu

  1. Jak nastavit soukromý registr dockerů na Ubuntu 18.04 LTS

  2. Jak nainstalovat GitLab s Dockerem na Ubuntu 20.04 LTS

  3. Jak nastavit GlassFish 4.1 s JAVA 8 v Ubuntu 15.04