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
- Memasang docker dan docker-compose
- Koneksi internet untuk mengunduh gambar buruh pelabuhan.
- 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.