Dengan pohon file besar yang saya maksud adalah sekitar 200 ribu file, dan terus bertambah setiap saat. Namun, sejumlah kecil file sedang diubah dalam jam tertentu.
Dengan bidirectional saya maksudkan bahwa perubahan dapat terjadi di kedua server dan perlu didorong ke yang lain, sehingga rsync tampaknya tidak sesuai.
Maksud saya adalah bahwa kedua server sama-sama berada di pusat data, tetapi secara geografis jauh dari satu sama lain. Saat ini hanya ada 2 server, tetapi itu dapat berkembang seiring waktu.
Secara real-time, boleh saja ada sedikit latensi antara sinkronisasi, tetapi menjalankan cron setiap 1-2 menit sepertinya tidak benar, karena sebagian kecil file dapat berubah dalam jam tertentu, apalagi menit.
EDIT : Ini berjalan di VPS jadi saya mungkin terbatas pada jenis hal-hal tingkat kernel yang bisa saya lakukan. Juga, VPS tidak kaya sumber daya, jadi saya akan menghindar dari solusi yang membutuhkan banyak ram (seperti Gluster?).
Apa pendekatan terbaik / paling "diterima" untuk menyelesaikan ini? Sepertinya ini akan menjadi kebutuhan bersama, tetapi saya belum dapat menemukan pendekatan yang diterima secara umum, yang mengejutkan. (Saya mencari keamanan massa. :)
Saya telah menemukan lsyncd untuk memicu sinkronisasi di tingkat perubahan sistem file. Tampaknya pintar meskipun tidak super umum, dan saya agak bingung dengan berbagai pendekatan lsyncd. Ada hanya menggunakan lsyncd dengan rsync, tetapi tampaknya ini bisa rapuh untuk dua arah karena rsync tidak memiliki gagasan tentang memori (mis. Untuk mengetahui apakah file yang dihapus pada A harus dihapus pada B atau apakah itu file baru pada B yang harus disalin ke A). lipsync tampaknya hanya implementasi lsyncd + rsync, kan?
Lalu ada yang menggunakan lsyncd dengan csync2 , seperti ini: https://icicimov.github.io/blog/devops/File-system-sync-with-Csync2-and-Lsyncd/ ... Saya condong ke arah pendekatan ini, tetapi csync2 sedikit aneh, meskipun saya berhasil melakukan tes. Saya sebagian besar khawatir bahwa saya belum dapat menemukan banyak konfirmasi komunitas dari metode ini.
Orang-orang di sini tampaknya sangat menyukai Unison, tetapi tampaknya itu tidak lagi dalam pengembangan aktif dan tidak jelas bahwa ia memiliki pemicu otomatis seperti lsyncd.
Saya telah melihat Gluster yang disebutkan, tetapi mungkin berlebihan untuk apa yang saya butuhkan?
UPDATE: fyi- Saya akhirnya pergi dengan solusi asli yang saya sebutkan: lsyncd + csync2. Tampaknya bekerja dengan cukup baik, dan saya suka pendekatan arsitektural untuk memiliki server yang sangat longgar, sehingga masing-masing server dapat beroperasi tanpa batasnya sendiri terlepas dari kualitas tautan di antara mereka.
Jawaban:
DRBD dalam mode Dual-primer dengan Proxy adalah opsi.
sumber
Daripada menyinkronkan, mengapa tidak berbagi sistem file yang sama melalui NFS?
sumber
Menerapkan sistem file terdistribusi mungkin lebih baik daripada meretas ini bersama-sama dengan alat dan skrip, terutama jika cluster server akan tumbuh. Anda juga dapat menangani simpul yang jatuh dengan lebih baik.
Saya tidak berpikir Gluster (atau AFS) sama sekali berlebihan.
sumber
Dalam kasus Anda, saya akan merekomendasikan kombinasi DRBD dalam mode dual-primer dan gfs atau ocfs.
Kekurangan dari DRBD dalam dual-primer adalah bahwa itu akan berjalan dalam mode sinkron. Tetapi kecepatan tulis sepertinya tidak penting di sini, kan?
Alternatif untuk DRBD mungkin Soft-Raid1 menggunakan banyak (2+) iSCSI-Target - tapi saya lebih suka DRBD dengan dua node.
sumber
Seperti ditunjukkan di atas, banyak solusi tersedia, masing-masing dengan kelebihan dan kekurangannya.
Saya pikir saya akan mempertimbangkan menempatkan seluruh pohon di bawah kontrol versi ( Subversion , misalnya) dan secara berkala memeriksa / memperbarui dari kedua server dalam pekerjaan cron.
sumber
Baru saja mengakhiri sedikit pencarian tentang hal yang sama, aku akan pergi dengan kesal. Namun, saya belum melakukan atau menemukan tes kinerja apa pun.
sumber