Persiapan
NocoBase ClusterEnterprise Edition+Sebelum men-deploy aplikasi cluster, persiapan berikut perlu diselesaikan.
Lisensi Plugin Commercial
Aplikasi NocoBase yang berjalan dalam mode cluster memerlukan dukungan dari plugin berikut:
Pertama, pastikan Anda telah memperoleh lisensi untuk plugin di atas (Anda dapat membeli lisensi plugin yang sesuai melalui platform layanan plugin commercial).
Komponen Sistem
Komponen sistem selain instance aplikasi itu sendiri, dapat dipilih sendiri oleh tim operasional sesuai dengan kebutuhan operasional masing-masing tim.
Database
Karena cluster mode saat ini hanya ditujukan untuk instance aplikasi, database sementara hanya mendukung single-node. Jika ada arsitektur database master-slave atau lainnya, Anda perlu mengimplementasikannya sendiri melalui middleware, dan memastikan transparan terhadap aplikasi NocoBase.
Middleware
Cluster mode NocoBase membutuhkan beberapa middleware untuk komunikasi dan koordinasi antar cluster, termasuk:
- Cache: Menggunakan distributed cache middleware berbasis Redis untuk meningkatkan kecepatan akses data.
- Sync signal: Menggunakan fitur stream Redis untuk implementasi transmisi sync signal antar cluster.
- Message queue: Menggunakan message queue middleware berbasis Redis atau RabbitMQ untuk pemrosesan pesan asinkron.
- Distributed lock: Menggunakan distributed lock berbasis Redis untuk menjamin keamanan akses ke shared resource dalam cluster.
Saat semua middleware menggunakan Redis, Anda dapat menjalankan satu service Redis tunggal dalam jaringan internal cluster (atau Kubernetes). Anda juga dapat mengaktifkan service Redis terpisah untuk setiap fitur (cache, sync signal, message queue, dan distributed lock).
Rekomendasi Versi
- Redis: >=8.0 atau gunakan versi redis-stack yang mencakup fitur Bloom Filter.
- RabbitMQ: >=4.0
Shared Storage
NocoBase membutuhkan direktori storage untuk menyimpan file terkait sistem. Dalam mode multi-node, harus melakukan mounting cloud disk (atau NFS) untuk mendukung akses bersama antar node. Jika tidak, local storage tidak akan disinkronkan secara otomatis dan tidak dapat digunakan dengan benar.
Saat menggunakan deployment Kubernetes, silakan merujuk ke section Deployment Kubernetes: Shared Storage.
Load Balancing
Cluster mode membutuhkan load balancer untuk distribusi request, serta health check dan failover instance aplikasi. Bagian ini dipilih dan dikonfigurasi sendiri sesuai kebutuhan operasional tim.
Sebagai contoh dengan self-hosted Nginx, tambahkan konten berikut di file konfigurasi:
Yang berarti melakukan reverse proxy dan mendistribusikan request ke node server yang berbeda untuk diproses.
Middleware load balancing yang disediakan oleh cloud service provider lain dapat merujuk ke dokumentasi konfigurasi yang disediakan provider tersebut.
Konfigurasi Environment Variable
Semua node dalam cluster harus menggunakan konfigurasi environment variable yang sama. Selain environment variable dasar NocoBase, environment variable berikut yang terkait dengan middleware juga perlu dikonfigurasi.
Multi-Core Mode
Saat aplikasi berjalan di node multi-core, multi-core mode pada node dapat diaktifkan:
Jika men-deploy pod aplikasi di Kubernetes, Anda dapat mengabaikan konfigurasi ini, dan mengontrol jumlah instance aplikasi melalui jumlah replika pod.
Cache
Sync Signal
Distributed Lock
Message Queue
Worker ID Allocator
Karena beberapa tabel sistem di NocoBase menggunakan globally unique ID sebagai primary key, Worker ID allocator diperlukan untuk memastikan setiap instance aplikasi dalam cluster mendapat Worker ID unik, sehingga menghindari masalah primary key conflict. Saat ini Worker ID dirancang dalam rentang 0-31, artinya aplikasi yang sama mendukung maksimal 32 node berjalan bersamaan. Tentang desain globally unique ID, lihat @nocobase/snowflake-id
Biasanya, adapter terkait dapat menggunakan instance Redis yang sama, tetapi sebaiknya menggunakan database yang berbeda untuk menghindari kemungkinan key conflict, contohnya:
Pada tahap saat ini setiap plugin menggunakan konfigurasi environment variable Redis sendiri-sendiri, di masa depan akan dipertimbangkan untuk menggunakan REDIS_URL sebagai konfigurasi fallback secara terpadu.
Jika menggunakan Kubernetes untuk mengelola cluster, environment variable di atas dapat dikonfigurasi di ConfigMap atau Secret. Untuk lebih banyak konten terkait, lihat Deployment Kubernetes.
Setelah semua persiapan di atas selesai, Anda dapat melanjutkan ke Alur Operasi untuk terus mengelola instance aplikasi.

