File Synchronization in Cluster
File Synchronization Between Several Application Servers in a Cluster #
Seiring dengan meningkatnya trafik ke proyek kamu, performa aplikasi juga perlu ditingkatkan agar tetap bisa mengikuti permintaan. Memang, platform ini secara otomatis menyediakan ruang ekstra melalui vertical scaling sesuai batas yang ditetapkan. Tapi, seiring bertambahnya popularitas layananmu, kemungkinan besar Kamu akan butuh menambah jumlah node — alias melakukan horizontal scaling.
Namun, untuk banyak aplikasi populer seperti WordPress, Drupal, Joomla, Liferay, Redmine, dan sejenisnya, mendistribusikan aplikasi ke beberapa instance web server bisa jadi masalah. Hal ini karena file yang diunggah pengguna biasanya hanya tersimpan di node tempat upload dilakukan, sehingga node lain tidak memiliki file tersebut — menyebabkan data tidak sinkron.
Untuk mengatasi masalah itu, platform ini menyediakan add-on khusus bernama File Synchronization, yang bertujuan menjaga file upload tetap sinkron di semua instance web server. Menariknya, sinkronisasi ini bisa diterapkan di dalam satu environment dengan node horizontal scale, atau di dua environment berbeda, meskipun stack atau aplikasinya tidak sama.
File Synchronization Add-on Implementation #
Add-on ini menggunakan kombinasi dari lsyncd daemon – memonitor perubahan file, cron utility – untuk tugas terjadwal, dan inotify – hanya memicu sinkronisasi saat ada perubahan file nyata. Pendekatan ini jauh lebih ringan bagi CPU dibanding sinkronisasi terus-menerus, tapi tetap menjaga data kamu selalu terbarui, hemat resource, dan mudah digunakan.
Add-on File Sync bisa diinstal pada semua application server stack yang dikelola oleh platform, kecuali Docker containers.
Sebelum pemasangan, kamu akan diminta memilih folder yang ingin disinkronkan. Dengan begitu, hanya bagian tertentu dari file sistem aplikasi yang memang perlu sinkronisasi yang akan diproses — lebih efisien. Nantinya, hanya perubahan dalam direktori yang dipilih (pada salah satu instance server aplikasi) yang akan memicu proses sinkronisasi.
Di bawah ini akan kami jelaskan mengenai langkah-langkah untuk melakukan sinkronisasi file ini.
Install Aplikasi #
Untuk contoh ini, kita akan menggunakan WordPress, yang dideploy dalam satu environment berisi dua server aplikasi NGINX + PHP.
💡 TIP
Instruksi di bawah ini juga sepenuhnya berlaku untuk aplikasi lain yang serupa, seperti Drupal, Joomla, Liferay, Redmine, dan sebagainya — baik yang berbasis Java, PHP, Ruby, maupun bahasa pemrograman lain yang didukung platform.
1. Kamu bisa menginstal aplikasi WordPress secara manual, atau gunakan paket satu klik (one-click package) yang tersedia di Marketplace untuk melakukan deploy secara otomatis dan lebih cepat.
Klik Install, lalu isi detail yang dibutuhkan seperti, environment name, display name (alias), versi PHP, fitur tambahan.
Konfirmasi instalasi dan tunggu sebentar hingga muncul pesan berisi data login admin. Informasi ini juga akan dikirim ke email kamu secara otomatis.
2. Klik Change Environment Topology, lalu gunakan tombol + di bagian Horizontal Scaling untuk menambahkan satu lagi application server node.
Dengan begitu, Kamu sudah membuat cluster WordPress yang siap digunakan untuk uji coba sinkronisasi file antar-node.
Jika sudah, klik “Apply”.
💡 TIP
Dengan mengikuti panduan di dokumentasi ini, Kamu bisa dengan mudah menambahkan application server tambahan, mengaktifkan high availability, atau bahkan mengatur solusi cluster secara penuh. Dalam contoh ini, kita cukup menambahkan satu server aplikasi lagi ke environment. Namun, jika Kamu ingin skenario yang lebih kompleks dan siap produksi, kamu bisa langsung konfigurasi solusi cluster lengkap untuk WordPress kamu agar lebih stabil, skalabel, dan tahan gangguan.
Test File Upload Without Synchronization #
1. Akses Admin Panel WordPress
Tambahkan /wp-login.php di akhir domain environmentmu, contohnya:
https://nama-environmentmu.jh-beon.cloud/wp-login.php
Lalu, login menggunakan kredensial admin yang sudah Kamu terima lewat email saat instalasi tadi.
2. Setelah berhasil login, lakukan beberapa perubahan pada situs WordPress kamu
Sebagai contoh kita upload gambar ke menu Media.
3. Sekarang, kembali ke dashboard app.jagoan.cloud, lalu klik tombol Config yang ada di sebelah layer App Server (application server).
4. Arahkan ke direktori webroot dengan cara : dari Favorites → ROOT → wp-content. Lakukan ini pada kedua node di layer aplikasi, lalu bandingkan isinya.
📝 NOTE
Lokasi direktori tempat file hasil upload disimpan tergantung dari aplikasi yang kamu gunakan. Berikut daftar folder upload untuk beberapa aplikasi populer:
- WordPress → webroot/ROOT/wp-content
- Drupal → webroot/ROOT/sites
- Joomla → webroot/ROOT/images
- Liferay → webroot/home/liferay/data
Pastikan Kamu memilih direktori yang tepat saat mengaktifkan fitur File Synchronization, agar sinkronisasi berjalan sesuai dengan struktur file aplikasi yang kamu pakai.
Seperti yang bisa Kamu lihat, salah satu instance app server (misalnya Node ID 54502) memiliki file baru di direktori uploads, sedangkan instance lainnya (misalnya Node ID 54505) belum memiliki file tersebut.
Apply File Synchronization #
Untuk menyinkronkan konten antar node di dalam cluster, maka kita perlu mengaktifkan add-on File Synchronization.
1. Temukan dan install addon File Synchronization pada menu Marketplace.
2. Pada kotak dialog yang muncul setelah Kamu klik Install, Kamu perlu mengatur beberapa parameter sinkronisasi tambahan :
Di bagian ini, kamu perlu menentukan apakah proses File Synchronization akan dijalankan dalam satu environment (seperti contoh pada tutorial ini) atau antara dua environment berbeda (tersedia sebagai opsi tambahan di formulir).
- Sync path : Path folder yang ingin disinkronkan, relatif terhadap direktori webroot.
Contoh: /ROOT/wp-content untuk WordPress. - Sync delay (sec) : Waktu jeda antar proses sinkronisasi, dalam detik. Misal: 10 untuk delay 10 detik.
- Environment name : Pilih environment tempat kamu ingin mengaktifkan sinkronisasi, dari daftar yang tersedia.
- Nodes : Layer application server akan terisi otomatis setelah environment dipilih. Kamu tinggal pilih node-node yang akan disinkronkan.
Jika sudah Kamu konfigurasi, klik Install.
💡 TIP
Untuk menjalankan sinkronisasi antar dua environment berbeda, kamu perlu menginstal add-on File Synchronization di web server masing-masing environment.Pastikan kamu memilih opsi “Two environments synchronization” pada saat instalasi, lalu lakukan konfigurasi pada kedua environment secara terpisah.Berikut parameter tambahan yang harus diisi:
- 2nd Environment IP: Alamat IP dari salah satu application server node di environment kedua. Gunakan internal IP jika kedua environment berjalan di platform dan region yang sama. Gunakan external IP jika berada di region/platform yang berbeda.
- Password (opsional): Jika ingin mengamankan sinkronisasi, kamu bisa mengatur password. Pastikan password ini sama di kedua environment agar proses sinkronisasi berhasil.
3. Setelah proses instalasi selesai, akan muncul notifikasi instalasi selesai
4. Pada tahap ini Kamu bisa cek file yang sudah kamu upload di kedua node
💡 TIP
Jika kamu melakukan perubahan pada topologi environment dengan menambahkan app server baru, add-on File Synchronization akan secara otomatis menerapkan sinkronisasi file ke node baru tersebut.
📝 NOTE
Jika di dalam direktori yang disinkronkan terdapat mount point (misalnya mount dari storage eksternal), Kamu perlu mengecualikannya dari proses sinkronisasi agar tidak terjadi error atau konflik.Berikut ini langkah yang perlu dilakukan:
- Edit file konfigurasi sinkronisasi
- Buka file berikut di setiap node:
<sync_path>/lsyncd/etc/lsyncd.conf
- Tambahkan path mount point tersebut ke dalam daftar exception, agar tidak ikut disinkronkan oleh lsyncd.
- Restart proses sinkronisasi secara manual
Jalankan perintah berikut di masing-masing node :
for pid in $(ps aux | grep 'rsync\|lsyncd' | awk '!/grep/{print $2}'); do kill -9 $pid; done
Command ini akan mematikan semua proses rsync dan lsyncd yang sedang aktif. Setelah itu, service akan otomatis berjalan kembali dengan pengaturan terbaru.
Sinkronisasi file akan berjalan otomatis setiap kali kamu menambahkan atau mengubah apa pun di WordPress-mu (atau aplikasi lain yang kamu gunakan). Dengan begitu, data di semua server akan selalu identik dan up-to-date, tanpa perlu intervensi manual.
Check Log #
Proses sinkronisasi bisa Kamu monitor melalui file log yang terletak di direktori berikut pada web server: webroot/lsyncd/var/log
Informasi paling penting terkait proses sinkronisasi dapat kamu temukan di dua file utama berikut:
- lsyncd.log – berisi catatan detail semua aktivitas sinkronisasi, termasuk file yang diubah, waktu sinkronisasi, dan event yang terjadi.
- lsyncd.status – menunjukkan status terkini dari proses sinkronisasi, seperti node mana yang aktif, apakah sinkronisasi berhasil, atau sedang berlangsung.
Semoga panduan ini membantu kamu ya!
Powered by BetterDocs