Episode ini membahas high availability: menjalankan banyak instance Traefik secara stateless, sinkronisasi konfigurasi via provider, berbagi acme.json untuk Let's Encrypt dengan locking, load balancing di depan Traefik, serta health check /ping untuk readiness dan liveness probe.

Satu instance Traefik adalah single point of failure: dia mati, semua domain padam. Episode 26 menghapus titik itu dengan high availability — menjalankan dua atau lebih instance Traefik yang bekerja berdampingan, stateless, dan saling menggantikan.
Kabar baiknya: Traefik dirancang stateless. Semua konfigurasi dinamis datang dari provider, sehingga instance baru otomatis menyamai yang lain tanpa sinkronisasi manual. Tantangan utamanya hanya satu: acme.json yang berisi private key sertifikat. Episode ini membedah arsitektur HA, penyimpanan bersama, dan cara memuat Traefik di belakang load balancer.
Prinsip utama HA Traefik:
Dua instance Traefik dengan Compose:
services:
traefik-1:
image: traefik:v3
ports:
- "80:80"
- "443:443"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- shared-acme:/etc/traefik/acme
networks:
- edge
traefik-2:
image: traefik:v3
ports:
- "81:80"
- "444:443"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- shared-acme:/etc/traefik/acme
networks:
- edge
volumes:
shared-acme:Kedua instance memakai provider yang sama dan volume shared-acme yang sama. Instance kedua berada di port 81 dan 444 agar tidak bentrok saat uji coba; di produksi keduanya diletakkan di balik load balancer eksternal.
Karena provider adalah satu-satunya sumber konfigurasi dinamis, tidak ada yang perlu disinkronkan secara manual:
Satu-satunya pengecualian adalah sertifikat Let's Encrypt — yang disimpan di acme.json dan memang harus dibagikan.
Semua instance Traefik menulis ke acme.json yang sama. Masalahnya: dua instance yang memperbarui file bersamaan bisa saling menimpa. Traefik menangani ini dengan file locking — setiap instance mengunci file sebelum menulis, sehingga transaksi berturut-turut aman:
flock pada file — storage shared harus mendukung file locking (NFS v4 mendukungnya).acme.json dari tiga server sekaligus tanpa sinkronisasi bisa merusak file.Let's Encrypt juga menerapkan rate limit per akun. Dengan beberapa instance, pastikan semua instance memakai email yang sama pada certificate resolver agar satu akun dan satu batas bersama. Leader election tidak diperlukan — Traefik menangani renewal beruntun lewat locking.
Apapun frontend-nya, ia perlu tahu kapan sebuah instance Traefik sehat — di sinilah endpoint /ping berperan.
Aktifkan ping di static config:
ping:
entryPoint: healthEntrypoint health didefinisikan khusus dan tidak boleh ter-expose publik:
entryPoints:
health:
address: ":8082"Lalu konfigurasikan load balancer eksternal untuk memeriksa kesehatan instance:
curl -s http://localhost:8082/pingResponse 200 OK berarti instance sehat dan siap menerima trafik; status lain berarti load balancer harus mengeluarkannya. Perintah curl di atas adalah alat verifikasi manual yang sama persis dengan yang dipakai health probe.
Tip
Pisahkan entrypoint health dari entrypoint trafik publik. Kalau health check terbuka ke internet, penyerang bisa membaca status instance — informatif tapi tidak perlu. Batasi dengan firewall atau IPWhiteList.
Inti yang harus dibawa pulang:
acme.json dibagikan dengan locking; pakai email akun yang sama./ping memberi sinyal sehat untuk health probe.Di episode 27 selanjutnya kita akan membahas performance tuning — mengoptimalkan penggunaan memori dan CPU, konfigurasi transport untuk keep-alive dan timeout, TLS performance dengan session resumption dan HTTP/2, strategi middleware, serta benchmarking dengan wrk, ab, dan k6.