Urgent.News

What's breaking now, across thousands of outlets.

Tech

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.

Read the original at dev.to →

More in Tech

A versão de API que vence sem avisar

Um script meu que publicava conteúdo via API do LinkedIn parou de funcionar do nada. Nenhuma linha mudou. O erro voltou assim: { "status" : 426 , "code" : "NONEXISTENT_VERSION" , "message"…

  • LinkedIn API versioning by date has deactivated the used version.
  • API REST requires LinkedIn-Version header in YYYYMM format.
  • Updating header value to latest version resolves the issue.

O dicionário que corrige acento errado sozinho

Um script meu corrige acentuação automática em português usando um dicionário de mais de noventa mil palavras. Ele existe justamente para consertar texto gerado por IA, que às vezes esquece acento.

  • Script uses 90,000-word Portuguese dictionary to correct AI-generated text
  • Dictionary struggles with proper names like "Pele" and "teve"
  • Ambiguous words like "e" and "esta" require human review before publishing

O bug que corrige sozinho o arquivo, mas não o e-mail que ele gera

Um sistema meu estava mandando e-mail em português com acentuação errada. Não era acento faltando, era acento trocado : "operação" virava "operação" em alguns lugares e simplesmente sumia em outros.

  • Portuguese system sent emails with incorrect accentuation.
  • Bug appeared in final output, not in CSV file.
  • Solution was to change encoding from Latin-1 to UTF-8.

More from Sunday 30 August →