Nginx 负载与基于 DNS 的服务探索平衡

2026年8月30日2 次浏览来源:Dev.to阅读原文

正文保留英文原文(机翻易破坏代码与排版),标题/摘要已提供中文

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: Kemudian saya tambah satu DNS server supaya backend tidak perlu bergantung sepenuhnya kepada hard-coded IP address.

1.

Architecture Final architecture: Ada dua jenis communication flow dalam architecture ini.

DNS resolution DNS hanya digunakan untuk mengetahui IP address backend.

HTTP traffic DNS tidak membawa HTTP traffic.

DNS hanya menjawab: Where is ?

Nginx kemudian menggunakan IP yang diperoleh daripada DNS untuk melakukan load balancing.

2.

Static / Hard-Coded Upstream Cara paling mudah untuk configure Nginx Load Balancer ialah dengan meletakkan IP backend secara terus.

Contoh: Architecture: Kelebihan Simple Mudah difahami Predictable Sesuai untuk environment kecil Tidak memerlukan DNS service discovery Kekurangan Kalau tambah : Nginx configuration perlu diubah: Kemudian configuration perlu divalidasi dan biasanya Nginx perlu di-reload.

3.

DNS-Based Service Discovery Pendekatan kedua ialah menggunakan hostname sebagai service identity.

Contohnya: DNS: Nginx tidak perlu mengetahui backend IP secara hard-coded.

Contoh: Konsepnya:

4.

Why Use DNS?

DNS memberikan abstraction layer antara Load Balancer dan backend server.

Tanpa DNS: Dengan DNS: Ini bermaksud service identity dipisahkan daripada server identity.

Contohnya, kalau mendapat IP baru: Nginx tidak perlu mempunyai IP tersebut secara hard-coded.

DNS menjadi source of information mengenai lokasi service.

  1. dnsmasq Dalam lab ini saya menggunakan sebagai DNS service.
    DNS server: Nginx LB menggunakan DNS tersebut: Test DNS: Contoh result: Apabila ditambah:
    6.
    Dynamic DNS Resolution in Nginx Bahagian penting dalam configuration ialah: dan: memberitahu Nginx DNS server yang perlu digunakan. menentukan tempoh DNS result dianggap valid oleh Nginx. membolehkan Nginx resolve hostname backend secara dynamic.
    Konsep: Ini lebih flexible berbanding hard-coded IP.
    7.
    Adding a New Backend Salah satu test penting ialah menambah .
    Sebelum: Selepas: Yang menarik ialah Nginx configuration tidak perlu ditukar untuk menambah backend baru.
    DNS yang berubah.
    Kemudian Nginx akan mendapatkan DNS information yang baru berdasarkan konfigurasi .
    Ini menunjukkan salah satu kelebihan utama DNS-based service discovery.
    8.
    Important Lesson: DNS Discovery Is Not Health Checking Satu perkara yang saya belajar ialah: DNS Service Discovery ≠ Health Checking DNS memberitahu: Tetapi DNS tidak semestinya tahu sama ada HTTP service pada IP tersebut sedang berfungsi.
    Contohnya: DNS mungkin masih return: walaupun tidak boleh menerima HTTP connection.
    Oleh itu, production architecture mungkin memerlukan additional health-checking atau failure-handling mechanism.
    9.
    Load Balancing vs High Availability Saya juga belajar bahawa Load Balancing dan High Availability bukan perkara yang sama.
    Load Balancing Tujuan: Ia mengagihkan traffic.
    High Availability Tujuan: Ia memastikan service masih tersedia jika salah satu infrastructure component gagal.
    Contohnya, Keepalived boleh digunakan untuk menyediakan virtual IP dan failover antara Load Balancer.
    Jadi: Tetapi kedua-duanya boleh digunakan bersama.
    10.
    Nginx Operational Logging Selepas Load Balancing berfungsi, saya tambah logging untuk melihat backend mana yang menerima request.
    Contoh log format: Kemudian: Log boleh mengandungi: atau: atau: Ini memberikan visibility kepada Load Balancer behaviour.
    11.
    Testing Test DNS Test backend Test Nginx configuration Inspect effective configuration Test Load Balancer Watch Load Balancer logs
    12.
    Troubleshooting Lesson Satu masalah yang berlaku dalam lab ialah default Nginx configuration masih aktif.
    Contohnya: Configuration tersebut menyebabkan Nginx default welcome page dipaparkan.
    Walaupun Load Balancer configuration telah dibuat dengan betul, request masih boleh masuk ke default server.
    Penyelesaian ialah memastikan hanya configuration yang diperlukan digunakan.
    Ini mengajar satu perkara penting: Jangan hanya melihat configuration file yang kita edit.
    Periksa effective configuration yang sebenarnya digunakan oleh Nginx.
    Command yang berguna: Kemudian: sebelum reload.
    13.
    Configuration Validation Workflow Workflow yang saya gunakan: Ini lebih baik daripada terus restart service setiap kali membuat perubahan.
    14.
    Security Perspective Walaupun lab ini fokus kepada Load Balancing, terdapat beberapa security principles yang boleh dipelajari.
    Configuration Management Configuration perlu: dikenal pasti diubah secara terkawal divalidasi diuji didokumentasikan Network Security Perlu memahami: dan service mana yang boleh berkomunikasi antara satu sama lain.
    Logging Load Balancer logs membantu: troubleshooting monitoring incident investigation performance analysis verification Availability Multiple backend servers boleh mengurangkan dependency kepada single server.
    15.
    ISO/IEC 27001 Perspective Lab ini bukan implementation penuh ISO/IEC
    27001.
    Sebaliknya, ISO/IEC 27001 digunakan sebagai reference framework untuk memahami bagaimana technical infrastructure berkait dengan information security.
    Beberapa control yang relevan untuk pembelajaran: Control Relevance A.8.9 Configuration Management Nginx, DNS dan network configuration A.8.15 Logging Nginx Load Balancer logs A.8.16 Monitoring Activities Monitoring behaviour dan troubleshooting A.8.20 Networks Security Network architecture dan communication A.8.21 Security of Network Services DNS, HTTP dan Load Balancing services A.8.32 Change Management Controlled configuration changes A.5.30 ICT Readiness for Business Continuity Redundancy dan availability concepts Penting untuk difahami bahawa control mapping sahaja tidak bermaksud sesuatu environment itu compliant.
    Dalam audit sebenar, auditor masih memerlukan:
    16.
    Key Lessons Antara perkara utama yang saya pelajari: Load Balancing dan High Availability adalah dua fungsi yang berbeza.
    Nginx boleh digunakan sebagai HTTP Load Balancer.
    Backend boleh dirujuk menggunakan IP secara static.
    Backend juga boleh ditemui menggunakan DNS-based service discovery.
    DNS memberikan abstraction layer antara service dan server IP. dan membolehkan Nginx menggunakan dynamic DNS resolution.
    DNS discovery tidak sama dengan health checking.
    Logging penting untuk visibility dan troubleshooting. sangat berguna untuk melihat effective configuration.
    Configuration changes perlu divalidasi sebelum reload.
    Redundancy pada backend membantu meningkatkan availability.
    Technical implementation boleh dianalisis menggunakan perspektif ISO/IEC 27001 tanpa mendakwa bahawa lab tersebut sendiri merupakan ISMS.
    17.
    Final Architecture The key concept is: Conclusion The practical exercise demonstrated two fundamental approaches to Nginx Load Balancing.
    The first approach uses static IP addresses, which is simple and suitable for small, stable environments.
    The second approach uses DNS-based service discovery, where Nginx resolves a service name such as to determine the backend servers.
    The second approach introduces additional flexibility but also introduces dependencies on DNS availability, DNS caching, TTL behaviour and backend health handling.
    The most important lesson is that infrastructure components should not be viewed independently.
    DNS, Load Balancing, networking, configuration management, logging, availability and security all interact with each other.
    From an ISO/IEC 27001 perspective, the exercise demonstrates how technical controls can be understood through the broader cycle of risk, control, implementation, evidence, monitoring and continual improvement.
分享