Single vs Cluster #

Ketika mulai menggunakan RabbitMQ di production, salah satu keputusan arsitektural paling penting adalah:

Apakah cukup dengan single node, atau harus menggunakan cluster?

Keputusan ini tidak sekadar soal menambah mesin. Ia menyangkut reliability, fault tolerance, kompleksitas operasional, dan biaya.

Artikel ini membahas secara mendalam perbedaan single node dan cluster pada RabbitMQ, termasuk implikasi teknisnya.

“High availability bukan tentang menambah server, tetapi tentang memahami bagaimana kegagalan terjadi dan bagaimana sistem meresponsnya.”

Apa Itu Single Node RabbitMQ? #

Single node berarti:

  • Satu instance RabbitMQ
  • Berjalan pada satu server atau container
  • Tidak memiliki node lain dalam cluster

Semua komponen berada di satu tempat:

  • Exchange
  • Queue
  • Message storage
  • Connection state

1. Diagram Single Node #

+--------------------------------+
|            Node 1              |
|  ----------------------------  |
|  |        RabbitMQ Broker   |  |
|  |  Exchange               |  |
|  |  Queue                  |  |
|  |  Message Storage        |  |
|  ----------------------------  |
+--------------------------------+

Semua state dan data berada di satu node.


Kelebihan Single Node #

Sederhana #

  • Mudah di-deploy
  • Mudah di-debug
  • Tidak ada sinkronisasi antar node

Overhead Rendah #

  • Tidak ada komunikasi cluster
  • Tidak ada replikasi internal

Cocok untuk #

  • Development
  • Staging
  • Sistem kecil dengan SLA rendah

Risiko Single Node #

Single Point of Failure #

Jika node mati:

  • Semua queue tidak dapat diakses
  • Semua producer gagal publish
  • Semua consumer berhenti

Walaupun queue durable dan message persistent, selama node down sistem tidak bisa berjalan.

Maintenance Downtime #

Upgrade atau restart menyebabkan downtime penuh.


Apa Itu Cluster RabbitMQ? #

Cluster adalah sekumpulan node RabbitMQ yang bekerja bersama.

Karakteristik utama:

  • Metadata direplikasi antar node
  • Node saling mengetahui satu sama lain
  • Client dapat terhubung ke node mana saja

2. Diagram Cluster RabbitMQ #

+-----------+     +-----------+     +-----------+
|  Node 1   |<--->|  Node 2   |<--->|  Node 3   |
|  Broker   |     |  Broker   |     |  Broker   |
+-----------+     +-----------+     +-----------+

Node berkomunikasi melalui protokol internal Erlang.


Bagaimana Cluster Bekerja? #

Penting dipahami:

Cluster RabbitMQ bukan berarti semua queue otomatis direplikasi.

Secara default:

  • Metadata (exchange, binding, user) direplikasi
  • Queue klasik (classic queue) berada di satu node

Jika node tempat queue berada mati:

  • Queue tersebut tidak tersedia

Untuk high availability, perlu menggunakan:

  • Mirrored queue (deprecated)
  • Quorum queue (rekomendasi modern)

Kelebihan Cluster #

High Availability (dengan konfigurasi tepat) #

Jika menggunakan quorum queue:

  • Data direplikasi ke beberapa node
  • Majority voting digunakan
  • Tahan terhadap kegagalan sebagian node

Load Distribution #

Client dapat terhubung ke node berbeda.

Connection load tersebar.

Maintenance Lebih Aman #

Node dapat direstart satu per satu (rolling restart).


Kompleksitas Cluster #

Cluster membawa tantangan baru.

Network Dependency #

Node harus dapat saling berkomunikasi stabil.

Latency tinggi dapat memengaruhi performa.

Split Brain Risk #

Jika network partition terjadi:

  • Cluster bisa terpecah
  • Harus ada strategi penanganan

Resource Consumption #

Replikasi membutuhkan:

  • Disk I/O tambahan
  • Memory tambahan
  • Network bandwidth

Cluster bukan sekadar “menambah node”.


Single Node vs Cluster: Perbandingan #

AspekSingle NodeCluster
SetupSederhanaKompleks
High AvailabilityTidakYa (dengan quorum)
Single Point of FailureAdaLebih kecil
MaintenanceDowntime penuhRolling possible
Resource OverheadRendahLebih tinggi
Cocok untukDev / kecilProduction serius

Kapan Menggunakan Single Node? #

Gunakan single node jika:

  • Sistem tidak kritikal
  • Downtime masih bisa ditoleransi
  • Traffic rendah
  • Lingkungan development

Kapan Menggunakan Cluster? #

Gunakan cluster jika:

  • SLA tinggi
  • Sistem mission-critical
  • Tidak boleh ada downtime panjang
  • Traffic stabil dan tinggi

Namun pastikan:

  • Gunakan quorum queue
  • Monitoring aktif
  • Infrastruktur jaringan stabil

Kesalahan Umum #

Mengira Cluster Otomatis HA #

Tanpa quorum queue, cluster tidak otomatis high availability.

Cluster Tanpa Monitoring #

Cluster meningkatkan kompleksitas operasional.

Tanpa observability, masalah akan sulit didiagnosis.


Penutup #

Single node dan cluster bukan soal mana yang lebih baik.

Ia soal konteks.

Single node menawarkan kesederhanaan. Cluster menawarkan ketahanan.

Dalam production serius, cluster dengan konfigurasi yang benar hampir selalu menjadi pilihan.

Namun seperti semua sistem terdistribusi, semakin tahan terhadap kegagalan — semakin tinggi kompleksitas yang harus dikelola.

About | Author | Content Scope | Editorial Policy | Privacy Policy | Disclaimer | Contact