Nginx Load Balancing with DNS-Based Service Discovery on Incus
Nginx Load Balancing with DNS-Based Service Discovery on Incus Hari ini saya buat satu practical lab untuk memahami Nginx Load Balancing , DNS-based Service Discovery , dan operational logging dalam persekitaran self-hosted menggunakan Incus. Lab ini bermula dengan architecture yang simple: Client │ ▼ Nginx LB │ ├──► web01 └──► web02 Kemudian saya tambah satu DNS server supaya backend tidak perlu…
Dalam praktikal lab ini, kita akan belajar bagaimana menggunakan Nginx Load Balancing dengan DNS-Based Service Discovery pada Incus. Awalnya, kita mempunyai arsitektur yang mudah: Client │ ▼ Nginx LB │ ├──► web01 └──► web02. Kemudian, kita menambahkan server DNS supaya backend tidak bergantung sepenuhnya kepada IP address yang terenkod secara manual.
Ada dua jenis flow komunikasi dalam arsitektur ini: DNS resolution dan HTTP traffic. DNS hanya digunakan untuk mengetahui IP address backend, sedangkan HTTP traffic mengalir melalui Nginx Load Balancer ke web01, web02 dan web03.
Cara tercepat untuk mengkonfigurasi Nginx Load Balancer adalah dengan meletakkan IP backend secara terus: upstream backend { server 10.107 .109.100 ; server 10.107 .109.253 ; }. Kelebihan arsitektur ini adalah mudah difahami dan terus berfungsi bahkan jika kita menambahkan web03. Namun, kekurangan adalah kita mesti mengubah konfigurasi Nginx jika kita menambah web03 dan mesti memvalidasi konfigurasi tersebut.
Pendekatan kedua adalah menggunakan hostname sebagai service identity, di mana web.incus menjadi DNS hostname yang mengarah ke IP address backend. Nginx tidak perlu mengetahui backend IP secara terenkod. Konfigurasi Nginx hanya memerlukan memasukkan resolver DNS dan server hostname.
Dalam lab ini, kita menggunakan dnsmasq sebagai server DNS. Nginx LB menggunakan DNS tersebut dengan konfigurasi resolver 10.107 .109.18 valid=5s, yang artinya Nginx akan menganggap DNS response tersebut valid selama 5 saat. Setiap kali DNS berubah, Nginx akan meresolve hostname backend tersebut kembali.
Menambahkan web03 ke arsitektur ini sangat mudah, tanpa perlu mengubah konfigurasi Nginx. Kita hanya perlu menunggu DNS berubah untuk mendapatkan informasi baru tentang lokasi service.
Namun, penting untuk diingat bahawa DNS Service Discovery tidak sama dengan Health Checking. DNS hanya memberikan informasi tentang IP address backend, tetapi tidak mengesahkan apakah HTTP service pada IP tersebut masih berfungsi. Oleh itu, dalam arsitektur production, kita mungkin perlu menambahkan mekanisme health-checking atau failover tambahan.
Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.