Dokumen ini diterjemahkan oleh AI. Untuk ketidakakuratan apa pun, silakan lihat versi bahasa Inggris
Sebelum menerapkan aplikasi klaster, Anda perlu menyelesaikan persiapan berikut.
Menjalankan aplikasi NocoBase dalam mode klaster memerlukan dukungan dari plugin berikut:
| Fungsi | Plugin |
|---|---|
| Adaptor cache | Bawaan |
| Adaptor sinyal sinkronisasi | @nocobase/plugin-pubsub-adapter-redis |
| Adaptor antrean pesan | @nocobase/plugin-queue-adapter-redis atau @nocobase/plugin-queue-adapter-rabbitmq |
| Adaptor kunci terdistribusi | @nocobase/plugin-lock-adapter-redis |
| Alokator Worker ID | @nocobase/plugin-workerid-allocator-redis |
Pertama, pastikan Anda telah memperoleh lisensi untuk plugin di atas (Anda dapat membeli lisensi plugin yang sesuai melalui platform layanan plugin komersial).
Komponen sistem lainnya, selain dari instans aplikasi itu sendiri, dapat dipilih oleh personel operasional berdasarkan kebutuhan operasional tim.
Karena mode klaster saat ini hanya menargetkan instans aplikasi, basis data sementara hanya mendukung satu node. Jika Anda memiliki arsitektur basis data seperti master-slave, Anda perlu mengimplementasikannya sendiri melalui middleware dan memastikan transparansi terhadap aplikasi NocoBase.
Mode klaster NocoBase bergantung pada beberapa middleware untuk mencapai komunikasi dan koordinasi antar-klaster, termasuk:
Ketika semua komponen middleware menggunakan Redis, Anda dapat memulai satu layanan Redis di dalam jaringan internal klaster (atau Kubernetes). Atau, Anda dapat mengaktifkan layanan Redis terpisah untuk setiap fungsi (cache, sinyal sinkronisasi, antrean pesan, dan kunci terdistribusi).
Rekomendasi Versi
NocoBase perlu menggunakan direktori storage untuk menyimpan file terkait sistem. Dalam mode multi-node, Anda harus memasang disk cloud (atau NFS) untuk mendukung akses bersama antar-node. Jika tidak, penyimpanan lokal tidak akan disinkronkan secara otomatis, dan tidak akan berfungsi dengan baik.
Saat menerapkan dengan Kubernetes, silakan merujuk ke bagian Penerapan Kubernetes: Penyimpanan Bersama.
Mode klaster memerlukan penyeimbang beban untuk mendistribusikan permintaan, serta untuk pemeriksaan kesehatan dan failover instans aplikasi. Bagian ini harus dipilih dan dikonfigurasi sesuai dengan kebutuhan operasional tim.
Mengambil Nginx yang di-host sendiri sebagai contoh, tambahkan konten berikut ke file konfigurasi:
Ini berarti permintaan di-proxy balik dan didistribusikan ke node server yang berbeda untuk diproses.
Untuk middleware penyeimbangan beban yang disediakan oleh penyedia layanan cloud lainnya, silakan merujuk ke dokumentasi konfigurasi yang disediakan oleh penyedia tertentu.
Semua node dalam klaster harus menggunakan konfigurasi variabel lingkungan yang sama. Selain variabel lingkungan dasar NocoBase, variabel lingkungan terkait middleware berikut juga perlu dikonfigurasi.
Ketika aplikasi berjalan pada node multi-core, Anda dapat mengaktifkan mode multi-core node:
Jika Anda menerapkan pod aplikasi di Kubernetes, Anda dapat mengabaikan konfigurasi ini dan mengontrol jumlah instans aplikasi melalui jumlah replika pod.
Beberapa koleksi sistem di NocoBase menggunakan ID unik global sebagai kunci utama. Untuk mencegah konflik kunci utama di seluruh klaster, setiap instans aplikasi harus mendapatkan Worker ID yang unik melalui Alokator Worker ID. Rentang Worker ID saat ini adalah 0–31, yang berarti setiap aplikasi dapat menjalankan hingga 32 node secara bersamaan. Untuk detail tentang desain ID unik global, lihat @nocobase/snowflake-id
Biasanya, adaptor terkait dapat menggunakan instans Redis yang sama, tetapi sebaiknya gunakan basis data yang berbeda untuk menghindari potensi masalah konflik kunci, misalnya:
Saat ini, setiap plugin menggunakan konfigurasi variabel lingkungan Redis-nya sendiri. Di masa mendatang, kami mungkin akan mempertimbangkan untuk menggunakan REDIS_URL secara terpadu sebagai konfigurasi cadangan.
Jika Anda menggunakan Kubernetes untuk mengelola klaster, Anda dapat mengonfigurasi variabel lingkungan di atas dalam ConfigMap atau Secret. Untuk konten terkait lainnya, Anda dapat merujuk ke Penerapan Kubernetes.
Setelah semua persiapan di atas selesai, Anda dapat melanjutkan ke Operasi untuk terus mengelola instans aplikasi.