GNU/Linux >> Belajar Linux >  >> Linux

Cara mengatur penyeimbang beban Traefik dengan Docker di Ubuntu 20.04

Traefik adalah server reverse proxy dan load balancing modern yang mendukung load balancing layer 4 (TCP) dan layer 7 (HTTP). Konfigurasinya dapat didefinisikan dalam JSON, YML, atau dalam format TOML. Ini terdiri dari titik masuk (frontend), layanan (backend), router (aturan), middlewares (fitur opsional).

Artikel ini akan menunjukkan cara menggunakan Traefik load balancer dalam mode layer 7 (HTTP).

Prasyarat

  1. Memasang docker dan docker-compose
  2. Koneksi internet untuk mengunduh gambar buruh pelabuhan.
  3. DNS Peta rekaman ke domain Anda untuk mendapatkan sertifikat Let's Encrypt (mis. traefik.domainanda.com)

Konfigurasi

Saya akan menjalankan dua server backend (wadah nginx) dan satu wadah Traefik di zona jaringan Docker yang sama. Saya menggunakan traefik.yourdomain.com untuk penjelasannya. Anda harus memiliki domain sendiri.

Mari kita mulai dengan membuat direktori di lokasi rumah Anda.

$ mkdir traefik && cd traefik

Sekarang buat jaringan buruh pelabuhan menggunakan perintah berikut. Ini membantu menjangkau penampung dari namanya.

$ docker network create web_zone

Konfigurasi Traefik.yaml

Pertama-tama, buat file bernama traefik.yaml:

$ vim traefik.yaml

dan rekatkan konten berikut.

# 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

Penjelasan

  • Titik Masuk seperti layanan daftar ujung depan dan port.
  • certificatesResolvers adalah menggunakan sertifikat letsencrypt sesuai permintaan.
  • Penyedia adalah file untuk mendefinisikan router / middlewares dan layanan

Konfigurasi penyedia file

Sekarang, di direktori yang sama buat file lain yang telah kita definisikan di bagian penyedia:

$ vim tls.yaml

dan rekatkan konfigurasi yaml berikut.

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

Penjelasan

  • Bagian router adalah untuk menentukan rute. Kami memiliki dua rute untuk http dan https
  • Backend ditentukan dalam layanan, Anda juga dapat menentukan algoritme penyeimbangan beban.
  • tls untuk menentukan konfigurasi dan opsi TLS.

Seperti yang didefinisikan dalam file, buat file berikut untuk menyimpan sertifikat Let's Encrypt.

$ touch acme.json
$ chmod 600 acme.json

Docker-compose untuk traefik

Saya akan membuat container menggunakan docker compose dan map 80, 443 port. Anda menentukan nama domain Anda. Buat file docker-compse.yml:

$ vim docker-compose.yml

dan rekatkan konfigurasi berikut:

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 akhir

Sekarang mari kita jalankan dua server backend menggunakan gambar nginx. Buat direktori terlebih dahulu,

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

Buat dua file indeks seperti di bawah ini.

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

Docker membuat file untuk menjalankan dua server backend nginx

Berikut ini adalah file penulisan sederhana yang membuat dua wadah nginx. Buat file docker-compse.yml:

$ vim docker-compose.yml

dan rekatkan konfigurasi berikut:

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

Mulai container Docker

Sekarang jalankan wadahnya. Pertama up container backend nginx dengan menggunakan perintah berikut.

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

Dua kontainer harus berjalan. Konfirmasikan dengan menjalankan perintah berikut.

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

Sekarang, kembali ke direktori dan jalankan perintah berikut untuk menjalankan traefik load balancer.

$:~/traefik$ docker compose up -d

Pastikan wadah traefik aktif dan berjalan.

$:~/traefik$ docker ps

Jelajahi situs

Buka browser dan ketik nama domain Anda http://traefik.domainanda.com. Anda akan mendapatkan tanggapan di bawah ini.

Juga, jika Anda menyegarkan halaman, Anda akan diarahkan ke backend kedua. Ini adalah algoritme perutean default di traefik.

Anda juga dapat memeriksa apakah sertifikat dikeluarkan oleh letsencrypt saat penampung sudah habis. Cukup telusuri ke https://traefik.domainanda.com

Kesimpulan

Anda mempelajari cara menggunakan traefik sebagai penyeimbang beban untuk wadah buruh pelabuhan Anda. Anda dapat menjelajahi lebih banyak dengan mengunjungi situs resmi https://doc.traefik.io/traefik/ . Terima kasih.


Linux
  1. Cara Mengatur Server FTP dengan VSFTPD di Ubuntu 20.04

  2. Cara Menginstal WordPress dengan Docker di Ubuntu

  3. Bagaimana Cara Menginstal Docker di Ubuntu 18.04?

  1. Cara Mengatur Server FTP dengan VSFTPD di Ubuntu 18.04

  2. Cara Mengatur Registri Docker Pribadi di Ubuntu 20.04

  3. Cara menginstal ONLYOFFICE 8.9.0 dengan Docker di Ubuntu

  1. Cara Mengatur Registri Docker Pribadi di Ubuntu 18.04 LTS

  2. Cara Menginstal GitLab dengan Docker di Ubuntu 20.04 LTS

  3. Cara Mengatur GlassFish 4.1 dengan JAVA 8 di Ubuntu 15.04