Itu sangat tergantung pada pekerjaan yang dihadapi.
Mengapa Anda perlu mirroring file. Apakah Anda ingin memperbarui sesuatu seperti repositori situs web atau konten yang biasanya diperbarui secara berkala? Atau apakah Anda memerlukan sinkronisasi data waktu nyata?
Untuk mirroring asinkron file secara berkala, biasanya cukup untuk memiliki Staging Area tempat Anda mengunggah semua data. Dan dari mana Anda mendistribusikannya ke Server. Dalam kasus Anda - dengan dua server - Anda dapat membuat beberapa pementasan fileshare di srv1 ke tempat Anda mentransfer data (melalui FTP, NFS, DAV, SFTP, dll.) Dan kemudian memiliki cronjob rsync file ke direktori "live" dari srv1 dan srv2. Cara termudah untuk menggunakan rsync dalam kasus itu adalah dengan menghasilkan ssh keypair yang akan Anda gunakan untuk transfer data dan yang diotorisasi pada semua server di cluster Anda.
Contoh:
srv1:/data/staging/ <= is where you upload your data
srv1:/data/production/ <= is where your servers get their production data from
srv2:/data/production/
srv1$ cat /etc/cron.d/syncdata.cron
=====
*/5 * * * * syncuser rsync -a --delete /data/staging/ /data/production/
*/5 * * * * syncuser rsync -az --delete -e ssh /data/staging/ srv2:/data/production/
=====
Ini seharusnya memberi Anda ide dasar. Tentu saja Anda ingin membungkus panggilan rsync dalam beberapa skrip dan menerapkan penguncian yang tepat sehingga tidak berjalan dua kali seandainya sinkronisasi membutuhkan waktu lebih dari 5 menit, dll. Selain itu, tak perlu dikatakan bahwa area pementasan tidak wajib. Anda mungkin juga menyinkronkan srv1: produksi ke srv2: produksi secara langsung. Hanya dari srv2 yang dapat menampilkan data yang lebih lama 5 menit dari pada srv1. Yang mungkin menjadi masalah, tergantung pada bagaimana Anda menyeimbangkan antara keduanya.
Cara lain untuk mendistribusikan file secara tidak sinkron adalah dengan mengemasnya sebagai rpm atau dalam file deb Anda. Letakkan ini di repositori pusat dan minta mereka menginstal / memperbarui melalui sesuatu seperti cfengine, monyet atau solusi berbasis bus pesan diy. Ini memiliki efek samping yang bagus dari versi data yang digunakan tetapi hanya cocok untuk jumlah data yang lebih kecil yang Anda hasilkan dan gunakan sendiri (seperti versi perangkat lunak Anda sendiri). Anda tidak akan mau mendistribusikan TB data dengan ini dan juga itu tidak cocok untuk mencerminkan konten yang berubah dengan frekuensi tinggi, seperti setiap menit.
Jika Anda perlu mereplikasi data dalam waktu dekat tetapi tidak selalu sinkron daripada memanggil cron setiap kali Anda dapat menggunakan beberapa metode berbasis inotify seperti incron yang telah disebutkan untuk memanggil skrip sinkronisasi Anda. Kemungkinan lain adalah menggunakan Gamin (yang juga menggunakan inotify jika ada di Kernel) dan menulis daemon sinkronisasi kecil Anda sendiri. Terakhir tetapi tidak kalah pentingnya, jika semua file diunggah ke satu server melalui mis. SFTP Anda mungkin memeriksa apakah SFTP Server Anda memungkinkan Anda menentukan kait yang dipanggil setelah peristiwa tertentu, seperti unggahan file. Dengan begitu Anda bisa memberi tahu Server Anda untuk memicu skrip sinkronisasi Anda setiap kali data baru diunggah.
Jika Anda membutuhkan mirroring data real time sinkron, sistem file cluster mungkin sudah berurutan. DRDB telah dinamai. Ini sangat bagus untuk replikasi pada tingkat blok dan sering digunakan untuk pengaturan MySQL yang tersedia tinggi. Anda mungkin juga ingin melihat GFS2, OCFS2, Luster dan GlusterFS. Meskipun Lustre dan GlusterFS tidak benar-benar cocok untuk dua pengaturan Server.