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 #
| Aspek | Single Node | Cluster |
|---|---|---|
| Setup | Sederhana | Kompleks |
| High Availability | Tidak | Ya (dengan quorum) |
| Single Point of Failure | Ada | Lebih kecil |
| Maintenance | Downtime penuh | Rolling possible |
| Resource Overhead | Rendah | Lebih tinggi |
| Cocok untuk | Dev / kecil | Production 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.