15%

Hemat 15% di Semua Layanan Hosting

Uji kemampuanmu dan dapatkan Diskon pada paket hosting apa saja

Gunakan kode:

Skills
Memulai
23.10.2024

Load Balancing dengan Dedicated Server: Arsitektur, Algoritma, dan Implementasi di Dunia Nyata

Load balancing adalah proses mendistribusikan lalu lintas jaringan yang masuk ke beberapa server sehingga tidak ada satu node pun yang menjadi hambatan, memastikan performa yang konsisten, toleransi kesalahan, dan skalabilitas horizontal. Dalam lingkungan dedicated server, load balancer berada di depan kumpulan server Anda dan membuat keputusan routing secara real-time berdasarkan kesehatan server, koneksi aktif, latensi respons, atau aturan kebijakan kustom.

Untuk infrastruktur apa pun yang menjalankan beban kerja sensitif terhadap latensi — platform e-commerce, aplikasi SaaS, API dengan lalu lintas tinggi, atau streaming media — load balancing bukanlah pilihan. Ini adalah fondasi arsitektur yang memisahkan pengaturan titik kegagalan tunggal yang rapuh dari sistem yang tangguh dan siap produksi.

Cara Kerja Load Balancing Sebenarnya: Alur Teknis

Memahami load balancing membutuhkan pemahaman tentang siklus hidup permintaan secara penuh, bukan hanya konsep abstrak "mendistribusikan lalu lintas."

Pipeline Routing Permintaan

  1. Resolusi DNS mengarahkan klien ke alamat IP load balancer (atau IP virtual dalam pengaturan anycast), bukan ke server individual mana pun.
  2. Load balancer menerima koneksi di Layer 4 (TCP/UDP) atau Layer 7 (HTTP/HTTPS) dari model OSI.
  3. Balancer mengevaluasi tabel routing-nya, menerapkan algoritma yang dikonfigurasi, dan memeriksa status kesehatan setiap node backend saat ini.
  4. Permintaan diteruskan ke server backend yang dipilih. Bergantung pada mode (NAT, Direct Server Return, atau IP tunneling), jalur respons mungkin atau mungkin tidak kembali melalui balancer.
  5. Daemon health check berjalan secara paralel, terus-menerus memeriksa setiap backend melalui TCP ping, kode status HTTP, atau skrip kustom. Node yang gagal dihapus dari pool dalam hitungan detik.

Load Balancing Layer 4 vs. Layer 7

Perbedaan ini adalah salah satu keputusan arsitektur paling penting yang akan Anda buat.

FiturLayer 4 (Transport)Layer 7 (Aplikasi)
Beroperasi padaPaket TCP/UDPPermintaan HTTP/HTTPS, header, cookie
Logika routingAlamat IP + portPath URL, hostname, nilai cookie, konten header
Terminasi SSLTidak (pass-through)Ya (membongkar TLS dari backend)
Routing berbasis kontenTidak memungkinkanDukungan penuh (route /api/ berbeda dari /static/)
Overhead performaSangat rendahSedang (memerlukan inspeksi paket mendalam)
Kasus penggunaan umumLayanan TCP mentah, database, server gameAplikasi web, REST API, microservices
Contoh perangkat lunakHAProxy (mode TCP), LVS/IPVSNGINX, HAProxy (mode HTTP), Traefik, Envoy
Persistensi sesiHash IP sumberInjeksi cookie, afinitas berbasis header

Untuk sebagian besar aplikasi web yang dihosting di Dedicated Server, Layer 7 adalah pilihan yang tepat karena memungkinkan routing cerdas, SSL offloading, dan health check terperinci berdasarkan kode respons HTTP daripada konektivitas TCP mentah.

Algoritma Load Balancing: Memilih Strategi yang Tepat

Algoritma menentukan server backend mana yang menerima setiap permintaan yang masuk. Memilih yang salah untuk profil beban kerja Anda adalah sumber umum dari pemanfaatan sumber daya yang tidak merata.

Round Robin

Permintaan didistribusikan secara berurutan ke semua node yang sehat. Sederhana dan efektif ketika semua server memiliki spesifikasi hardware yang identik dan waktu pemrosesan permintaan kurang lebih sama.

Kelemahan: Jika satu permintaan membutuhkan 10 detik dan berikutnya 10 milidetik, round robin tidak memperhitungkan perbedaan ini. Backend yang lambat mengumpulkan antrean sementara yang lain menganggur.

Weighted Round Robin

Setiap server diberi bobot numerik. Server dengan bobot 3 menerima tiga kali lebih banyak permintaan dibandingkan server dengan bobot 1. Gunakan ini ketika pool Anda berisi hardware yang heterogen — misalnya, menggabungkan node 32-core dengan node 16-core.

Least Connections

Balancer melacak jumlah koneksi aktif ke setiap backend dan merutekan permintaan baru ke server dengan koneksi terbuka paling sedikit. Ini adalah algoritma default yang paling tepat untuk beban kerja dengan durasi permintaan yang bervariasi, seperti aplikasi web berbasis database.

Least Response Time

Perluasan dari least connections yang juga memperhitungkan latensi backend yang terukur. Server dengan kombinasi terendah dari koneksi aktif dan waktu respons rata-rata yang menang. Ini mengharuskan balancer untuk mempertahankan metrik latensi, yang menambah sedikit overhead tetapi secara signifikan meningkatkan kualitas distribusi di bawah beban campuran.

IP Hash (Source Affinity)

Alamat IP sumber klien di-hash untuk memilih backend secara deterministik. Klien yang sama selalu mencapai server yang sama, selama keanggotaan pool tidak berubah. Ini memberikan bentuk primitif dari persistensi sesi tanpa memerlukan penyimpanan sesi bersama.

Kasus tepi kritis: Jika sebagian besar lalu lintas Anda berasal dari belakang NAT perusahaan atau gateway operator seluler, ribuan pengguna mungkin berbagi satu IP sumber, menyebabkan ketidakseimbangan yang parah. Selalu audit distribusi lalu lintas Anda sebelum mengandalkan IP hash dalam produksi.

Random with Two Choices (Power of Two)

Balancer secara acak memilih dua server kandidat dan merutekan ke yang memiliki koneksi aktif lebih sedikit. Pendekatan probabilistik ini sangat baik dalam pool besar (50+ node) karena menghindari overhead koordinasi dari pemindaian least-connections global sambil tetap menghindari ketidakseimbangan kasus terburuk dari pemilihan acak murni.

Persistensi Sesi: Ketika Stateless Bukan Pilihan

Banyak aplikasi lama menyimpan status sesi secara lokal di server (misalnya, $_SESSION PHP yang ditulis ke disk). Dalam kasus ini, merutekan pengguna yang kembali ke backend yang berbeda menyebabkan kehilangan sesi, yang termanifestasi sebagai logout tak terduga atau data keranjang belanja yang hilang.

Load balancer mengatasi ini dengan sticky session, diimplementasikan melalui:

  • Injeksi cookie: Balancer menyuntikkan cookie (misalnya, SERVERID=node2) ke dalam respons HTTP. Permintaan berikutnya dari klien tersebut membawa cookie, dan balancer membacanya untuk merutekan kembali ke node yang sama.
  • Source IP affinity: Seperti dijelaskan di atas, kurang andal tetapi tidak memerlukan dukungan cookie dari aplikasi.

Perbaikan jangka panjang yang benar adalah mengeksternalisasi penyimpanan sesi ke backend bersama — Redis atau Memcached — sehingga node backend mana pun dapat melayani pengguna mana pun. Ini sepenuhnya menghilangkan ketergantungan pada sticky session dan membuat pool Anda sepenuhnya stateless, yang menyederhanakan penskalaan dan failover secara dramatis. Jika Anda membangun aplikasi baru, rancang untuk backend stateless sejak hari pertama.

Health Check: Mekanisme di Balik Failover Otomatis

Load balancer hanya seandal konfigurasi health check-nya. Health check yang salah dikonfigurasi bertanggung jawab atas sebagian besar insiden load balancer di dunia nyata.

Jenis Health Check

  • Pemeriksaan TCP: Membuka koneksi TCP ke port backend. Mengonfirmasi bahwa proses sedang mendengarkan tetapi tidak memverifikasi kebenaran tingkat aplikasi.
  • Pemeriksaan HTTP/HTTPS: Mengirim permintaan HTTP ke endpoint yang ditentukan (misalnya, /health) dan mengharapkan kode status tertentu (biasanya 200 OK). Ini adalah standar minimum yang dapat diterima untuk aplikasi web.
  • Pemeriksaan skrip kustom: Mengeksekusi skrip arbitrer yang dapat mengkueri database, memeriksa ruang disk, atau memvalidasi status aplikasi. Mengembalikan 0 untuk sehat, non-zero untuk tidak sehat.

Parameter Konfigurasi Kritis

  • interval: Seberapa sering pemeriksaan dijalankan (misalnya, setiap 5 detik).
  • timeout: Berapa lama menunggu respons sebelum menandai pemeriksaan sebagai gagal.
  • rise: Jumlah pemeriksaan berhasil berturut-turut yang diperlukan untuk menandai node sebagai sehat (mencegah flapping).
  • fall: Jumlah pemeriksaan gagal berturut-turut yang diperlukan untuk menghapus node dari pool.

Konfigurasi produksi umum untuk HAProxy terlihat seperti ini:

backend web_servers
    balance leastconn
    option httpchk GET /health HTTP/1.1rnHost: example.com
    http-check expect status 200
    default-server inter 5s fall 3 rise 2 slowstart 60s
    server node1 192.168.1.10:80 check weight 10
    server node2 192.168.1.11:80 check weight 10
    server node3 192.168.1.12:80 check weight 5

Direktif slowstart 60s sangat berharga: direktif ini secara bertahap meningkatkan lalu lintas ke node yang baru pulih selama 60 detik daripada langsung mengirimkan beban penuh, mencegah masalah thundering herd ketika backend kembali online setelah pemeliharaan.

Terminasi SSL dan TLS Offloading

Menangani enkripsi dan dekripsi TLS membutuhkan banyak komputasi. Dalam pengaturan yang naif, setiap server backend melakukan pekerjaan ini secara independen. Terminasi SSL di load balancer berarti balancer mendekripsi lalu lintas HTTPS yang masuk dan meneruskan HTTP biasa ke backend melalui jaringan internal yang tepercaya.

Manfaat:

  • Mengurangi beban CPU pada server backend, membebaskan siklus untuk logika aplikasi.
  • Memusatkan manajemen sertifikat — perbarui satu sertifikat di balancer daripada di setiap node.
  • Memungkinkan inspeksi Layer 7 dari konten permintaan (tidak mungkin dengan pass-through terenkripsi).

Pertimbangan keamanan: Lalu lintas antara load balancer dan backend berjalan tanpa enkripsi. Ini dapat diterima ketika semua node berada di VLAN privat yang terisolasi atau jaringan manajemen khusus. Jika persyaratan kepatuhan Anda (PCI-DSS, HIPAA) mengamanatkan enkripsi end-to-end, gunakan SSL re-encryption: balancer mengakhiri sesi TLS yang menghadap klien dan membuat sesi TLS baru ke setiap backend. Ini mempertahankan enkripsi penuh sambil tetap memungkinkan routing Layer 7.

Memasangkan terminasi SSL dengan Sertifikat SSL yang diterbitkan dengan benar memastikan infrastruktur load-balanced Anda memenuhi persyaratan performa dan kepatuhan.

High Availability untuk Load Balancer Itu Sendiri

Load balancer yang sendirinya merupakan titik kegagalan tunggal mengalahkan tujuan seluruh arsitektur. Deployment produksi memerlukan pasangan load balancer yang highly available.

Active-Passive dengan VRRP/Keepalived

Dua node load balancer berbagi Virtual IP (VIP). Node aktif memegang VIP dan memproses semua lalu lintas. Node pasif memantau node aktif melalui heartbeat. Jika node aktif gagal, keepalived memicu failover VRRP dan node pasif mengklaim VIP dalam 1–3 detik.

# Install keepalived on both load balancer nodes (Debian/Ubuntu)
apt-get install keepalived

# /etc/keepalived/keepalived.conf on the MASTER node
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass securepassword
    }
    virtual_ipaddress {
        203.0.113.10/24
    }
}

Pada node backup, atur state BACKUP dan priority 90. Node dengan prioritas lebih tinggi memenangkan pemilihan VIP.

Active-Active dengan DNS Round Robin atau Anycast

Kedua node load balancer secara aktif memproses lalu lintas secara bersamaan. DNS mengembalikan beberapa A record, mendistribusikan klien ke kedua balancer. Ini menggandakan kapasitas throughput tetapi memerlukan sinkronisasi status yang cermat jika Anda menggunakan sticky session.

Untuk deployment skala besar di Dedicated Server, konfigurasi active-active dengan routing BGP anycast memberikan throughput tertinggi dan redundansi geografis.

Mitigasi DDoS di Layer Load Balancer

Load balancer yang diposisikan di tepi jaringan adalah tempat alami untuk mengimplementasikan scrubbing lalu lintas dan pembatasan kecepatan sebelum permintaan berbahaya mencapai server aplikasi Anda.

Pembatasan Kecepatan Koneksi (HAProxy)

frontend http_in
    bind *:80
    bind *:443 ssl crt /etc/haproxy/certs/
    stick-table type ip size 100k expire 30s store conn_rate(3s),http_req_rate(10s)
    tcp-request connection track-sc0 src
    tcp-request connection reject if { sc_conn_rate(0) gt 100 }
    http-request deny if { sc_http_req_rate(0) gt 300 }

Konfigurasi ini melacak kecepatan koneksi per IP sumber dalam tabel stick dan menolak klien yang melebihi 100 koneksi TCP baru per 3 detik atau 300 permintaan HTTP per 10 detik — ambang batas yang memblokir sebagian besar serangan HTTP flood volumetrik sambil mengizinkan lalu lintas burst yang sah.

Perlindungan SYN Flood

Aktifkan SYN cookie di tingkat kernel pada node load balancer Anda untuk menangani serangan SYN flood tanpa menghabiskan tabel koneksi:

sysctl -w net.ipv4.tcp_syncookies=1
sysctl -w net.ipv4.tcp_max_syn_backlog=4096
sysctl -w net.ipv4.tcp_synack_retries=2

Jadikan ini persisten dengan menambahkannya ke /etc/sysctl.conf.

NGINX sebagai Load Balancer Layer 7: Konfigurasi Produksi

NGINX adalah opsi yang banyak digunakan untuk load balancing HTTP, terutama ketika Anda membutuhkan integrasi erat dengan fitur tingkat aplikasi.

upstream backend_pool {
    least_conn;
    keepalive 32;

    server 192.168.1.10:8080 weight=3 max_fails=3 fail_timeout=30s;
    server 192.168.1.11:8080 weight=3 max_fails=3 fail_timeout=30s;
    server 192.168.1.12:8080 weight=1 max_fails=3 fail_timeout=30s;
    server 192.168.1.13:8080 backup;
}

server {
    listen 443 ssl http2;
    server_name example.com;

    ssl_certificate     /etc/nginx/ssl/example.com.crt;
    ssl_certificate_key /etc/nginx/ssl/example.com.key;
    ssl_protocols       TLSv1.2 TLSv1.3;
    ssl_ciphers         HIGH:!aNULL:!MD5;

    location / {
        proxy_pass         http://backend_pool;
        proxy_http_version 1.1;
        proxy_set_header   Connection "";
        proxy_set_header   Host $host;
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Proto $scheme;
        proxy_connect_timeout 5s;
        proxy_read_timeout    60s;
        proxy_next_upstream   error timeout http_502 http_503;
    }
}

Detail kunci dalam konfigurasi ini:

  • keepalive 32 mempertahankan koneksi persisten ke backend, menghilangkan overhead TCP handshake untuk permintaan frekuensi tinggi.
  • proxy_next_upstream secara otomatis mencoba ulang permintaan yang gagal pada backend sehat berikutnya.
  • Direktif backup menetapkan node4 sebagai standby yang hanya menerima lalu lintas ketika semua node utama tidak tersedia.
  • X-Forwarded-For memastikan aplikasi backend melihat IP klien yang sebenarnya daripada IP balancer.

Membandingkan Opsi Perangkat Lunak Load Balancer

Perangkat LunakLayerPerformaTerminasi SSLHealth Check AktifKemudahan KonfigurasiTerbaik Untuk
HAProxyL4 + L7Sangat tinggiYaYa (lanjutan)SedangTCP/HTTP lalu lintas tinggi, ACL terperinci
NGINXL7 (L4 dalam modul stream)Sangat tinggiYaDasar (NGINX Plus untuk lanjutan)MudahProxying web/API, server web terintegrasi
TraefikL7TinggiYa (Let's Encrypt otomatis)YaSangat mudahLingkungan terkontainerisasi, Kubernetes
EnvoyL7Sangat tinggiYaYa (health check gRPC)KompleksService mesh, microservices
LVS/IPVSL4Tingkat kernel, maksimumTidakMelalui KeepalivedKompleksThroughput mentah, skenario kernel-bypass
AWS ALB/NLBL7/L4TerkelolaYaYaMudah (terkelola)Cloud-native, tanpa manajemen mandiri

Untuk Dedicated Server yang dikelola sendiri, HAProxy dan NGINX mencakup sebagian besar kasus penggunaan produksi. Traefik adalah pilihan pragmatis untuk beban kerja Docker Swarm atau Kubernetes karena penemuan layanan otomatisnya.

Arsitektur Dunia Nyata: Platform E-Commerce di Bawah Beban Puncak

Pertimbangkan skenario konkret: platform e-commerce yang mengharapkan 50.000 pengguna bersamaan selama acara promosi.

Tata letak infrastruktur:

  • 2x node HAProxy dalam konfigurasi active-passive berbagi VIP (melalui Keepalived)
  • 6x server aplikasi yang menjalankan tier web
  • 2x server database khusus (tidak dalam pool load balancer — mereka menggunakan replikasi mereka sendiri)
  • 1x cluster Redis untuk penyimpanan sesi bersama (menghilangkan ketergantungan sticky session)
  • NFS bersama atau penyimpanan objek untuk aset yang diunggah pengguna

Alur lalu lintas:

  1. DNS klien diselesaikan ke VIP yang dipegang oleh node HAProxy aktif.
  2. HAProxy menerapkan algoritma leastconn, mendistribusikan permintaan ke 6 server aplikasi.
  3. Setiap server aplikasi membaca/menulis data sesi dari Redis — tidak diperlukan afinitas sesi.
  4. Aset statis disajikan langsung dari penyimpanan objek melalui CDN, melewati load balancer sepenuhnya dan mengurangi bebannya sebesar 60–70%.
  5. Jika health check satu server aplikasi gagal tiga kali berturut-turut, HAProxy menghapusnya dari pool dalam 15 detik. 5 server yang tersisa menyerap lalu lintasnya.
  6. Jika node HAProxy aktif gagal, Keepalived mentransfer VIP ke node pasif dalam 2 detik — transparan bagi semua klien.

Arsitektur ini menangani lonjakan promosi tanpa komponen tunggal mana pun menjadi hambatan, dan skalanya secara horizontal dengan menambahkan lebih banyak server aplikasi ke pool HAProxy tanpa downtime.

Jika Anda menjalankan beban kerja inferensi yang dipercepat GPU di belakang load balancer — misalnya, mendistribusikan permintaan penyajian model ML — prinsip yang sama berlaku, tetapi health check backend harus memvalidasi ketersediaan GPU dan headroom VRAM, bukan hanya keterjangkauan HTTP. Infrastruktur GPU Hosting mendapat manfaat signifikan dari load balancing least-response-time karena tingginya variasi latensi inferensi di berbagai jenis permintaan.

Memantau Infrastruktur Load-Balanced

Mendeploy load balancer tanpa observabilitas berarti beroperasi secara buta. Berikut adalah metrik yang penting:

  • Koneksi aktif per backend: Mengungkapkan ketidakseimbangan dalam algoritma distribusi atau konsentrasi sticky session.
  • Kecepatan permintaan (RPS) per backend: Harus proporsional dengan bobot server.
  • Waktu respons backend (p50, p95, p99): Lonjakan latensi p99 pada satu node mengindikasikan masalah sebelum health check terpicu.
  • Tingkat kegagalan health check: Backend yang berosilasi antara sehat dan tidak sehat (flapping) mengindikasikan ketidakstabilan mendasar yang perlu diselidiki.
  • Kedalaman antrean koneksi: Jika antrean balancer bertumbuh, pool backend Anda terlalu kecil untuk lalu lintas saat ini.
  • Kecepatan SSL handshake: Kecepatan tinggi mengindikasikan potensi serangan kelelahan TLS atau klien yang salah dikonfigurasi yang mencoba ulang secara agresif.

HAProxy mengekspos halaman statistik (aktifkan dengan stats enable di frontend) dan Unix socket untuk kueri terprogram. Masukkan metrik ini ke Prometheus melalui haproxy_exporter dan visualisasikan di Grafana untuk tumpukan observabilitas yang lengkap.

Daftar Periksa Keputusan Praktis

Gunakan matriks ini sebelum mendeploy atau memodifikasi arsitektur load-balanced:

  • Aplikasi stateful? Migrasikan penyimpanan sesi ke Redis atau Memcached sebelum mengaktifkan load balancing. Jangan mengandalkan sticky session sebagai solusi permanen.
  • TLS diperlukan? Akhiri SSL di load balancer. Pastikan jaringan backend terisolasi. Dapatkan dan kelola sertifikat secara terpusat melalui Sertifikat SSL.
  • Durasi permintaan bervariasi? Gunakan leastconn, bukan round robin.
  • Hardware heterogen? Terapkan nilai weight yang proporsional dengan kapasitas server.
  • HA load balancer? Deploy dua node balancer dengan Keepalived/VRRP. Jangan pernah menjalankan load balancer tunggal dalam produksi.
  • Paparan DDoS? Implementasikan pembatasan kecepatan koneksi dan perlindungan SYN cookie di lapisan kernel dan balancer.
  • Kedalaman health check? Gunakan pemeriksaan HTTP terhadap endpoint /health khusus yang memvalidasi konektivitas database, bukan hanya ketersediaan port TCP.
  • Rencana penskalaan? Menambahkan node backend baru ke pool HAProxy atau NGINX memerlukan reload konfigurasi (haproxy -sf $(cat /var/run/haproxy.pid) untuk reload zero-downtime) — rencanakan proses manajemen perubahan Anda sesuai.
  • Pemantauan? Instrumentasikan HAProxy atau NGINX dengan eksporter Prometheus sebelum go-live, bukan setelah insiden.
  • Preferensi panel kontrol? Jika Anda lebih suka manajemen server berbasis GUI bersamaan dengan konfigurasi load balancer manual, evaluasi Panel Kontrol VPS untuk tugas administratif pada node individual.

FAQ

Apa perbedaan antara load balancer dan reverse proxy?

Reverse proxy meneruskan permintaan klien ke satu atau lebih server backend dan mengembalikan respons ke klien — ia menangani routing, caching, dan terminasi SSL. Load balancer adalah jenis reverse proxy tertentu yang fungsi utamanya adalah mendistribusikan permintaan ke beberapa backend menggunakan algoritma yang ditentukan. Semua load balancer adalah reverse proxy, tetapi tidak semua reverse proxy melakukan load balancing.

Bisakah load balancing bekerja dengan satu dedicated server?

Secara teknis ya — Anda dapat menjalankan load balancer di depan satu server untuk terminasi SSL, caching, dan pembatasan kecepatan. Namun, manfaat toleransi kesalahan dan penskalaan horizontal hanya terwujud dengan dua atau lebih node backend. Pengaturan server tunggal di belakang load balancer adalah arsitektur batu loncatan yang valid yang membuat penskalaan di masa depan menjadi sangat mudah secara operasional.

Bagaimana load balancer menangani koneksi WebSocket?

WebSocket memerlukan koneksi TCP yang persisten dan berumur panjang. Load balancer Layer 7 harus dikonfigurasi secara eksplisit untuk menangani HTTP Upgrade handshake dan kemudian mempertahankan afinitas koneksi selama durasi sesi WebSocket. Di NGINX, atur proxy_http_version 1.1 dan proxy_set_header Upgrade $http_upgrade dengan proxy_set_header Connection "upgrade". Di HAProxy, gunakan option http-server-close dan konfigurasikan nilai timeout yang sesuai (timeout tunnel 1h untuk koneksi berumur panjang).

Apa yang terjadi pada permintaan yang sedang berjalan ketika server backend gagal?

Dengan proxy_next_upstream di NGINX atau retries di HAProxy, balancer mendeteksi kesalahan koneksi atau timeout pada percobaan pertama dan segera mencoba ulang permintaan pada backend sehat berikutnya. Percobaan ulang ini transparan bagi klien. Permintaan idempoten (GET, HEAD) aman untuk dicoba ulang secara otomatis. Permintaan non-idempoten (POST, PUT) harus dicoba ulang dengan hati-hati — konfigurasikan proxy_next_upstream untuk mengecualikan http_500 untuk rute POST guna menghindari pemrosesan ganda pembayaran atau pengiriman formulir.

Berapa banyak server backend yang diperlukan sebelum load balancing memberikan manfaat yang berarti?

Dua server memberikan kemampuan failover segera dan kira-kira menggandakan kapasitas Anda. Tiga server atau lebih memberikan distribusi statistik yang berarti dan memungkinkan pemeliharaan bergulir (matikan satu node untuk pembaruan sementara yang lain menyerap lalu lintas). Untuk beban kerja produksi, tiga node adalah minimum praktis untuk pool yang tangguh — dua node berarti satu kegagalan mengurangi kapasitas Anda sebesar 50%, yang mungkin melanggar SLA performa Anda di bawah beban puncak.

15%

Hemat 15% di Semua Layanan Hosting

Uji kemampuanmu dan dapatkan Diskon pada paket hosting apa saja

Gunakan kode:

Skills
Memulai