Sinkronisasi file waktu-nyata


22

Apakah ada alat yang tersedia untuk menyinkronkan file antara dua atau lebih server linux segera setelah menulis file di disk? The rsyncperintah tidak sesuai dengan saya tentang hal ini, karena jika saya set rsyncdi cron, waktu minimum saya bisa mengatur adalah 1 menit, tapi saya membutuhkannya secara real-time.


2
Apakah Anda memerlukan sinkronisasi dari satu server baca-tulis ke satu atau lebih server baca-saja, atau apakah Anda memerlukan sinkronisasi dua arah (dengan propagasi di kedua arah), atau n-arah? Jika Anda menginginkan dua / n-arah, bagaimana Anda menyelesaikan konflik?
Gilles 'SANGAT berhenti menjadi jahat'

Jawaban:


18

Belum pernah menggunakannya sendiri tetapi membacanya baru-baru ini. Ada daemon yang dipanggil lsyncd, yang saya duga melakukan apa yang Anda butuhkan.

Baca lebih lanjut di SINI


2
IMHO, ini harus menjadi jawaban yang diterima. lsyncdmenggunakan inotify& harus menjadi yang tercepat di level fs. Lebih banyak di github.com/axkibe/lsyncd . Dari halaman itu: Lsyncd menyaksikan antarmuka pemantau acara direktori pohon lokal (inotify atau fsevents). Ini mengumpulkan dan menggabungkan acara selama beberapa detik dan kemudian memunculkan satu (atau lebih) proses untuk menyinkronkan perubahan. Secara default ini adalah rsync. Dengan demikian, Lsyncd adalah solusi cermin langsung berbobot ringan yang relatif mudah dipasang tanpa memerlukan sistem file baru atau memblokir perangkat dan tidak menghambat kinerja sistem file lokal.
SACHIN GARG

5

Inotify-tools

Menyediakan antarmuka untuk inotify, terdiri dari:

inotifywait

Perintah ini hanya memblokir untuk acara inotify, membuatnya sesuai untuk digunakan dalam skrip shell. Itu dapat menonton set file dan direktori, dan dapat secara rekursif menonton seluruh pohon direktori.

inotifywatch

Perintah ini mengumpulkan statistik penggunaan sistem file dan jumlah keluaran dari setiap peristiwa tidak sah.


4

Sinkronisasi file secara realtime antara beberapa server dalam mode multi-master

Ada alat yang baik yang dipanggil lsyncduntuk menyinkronkan file antara beberapa server secara real time. Di sini saya sudah mencoba dengan dua server.

Host: Server1 dan Server2

OS yang Digunakan: CentOS 7

Instal paket di bawah ini di kedua server.

# yum install -y epel-release
# yum -y install lua lua-devel pkgconfig gcc asciidoc lsyncd

buat ssh-key di kedua server dan tambahkan ke authorized_keysfile. [tambahkan kunci publik dari server1 ke server2'sauthorized_keys dan kunci publik server2 ke authorized_keysfile server1 ]

Konfigurasi server1

Buka /etc/lsyncd.confdan beri komentar konfigurasi default menggunakan --di awal baris dan tambahkan konfigurasi di bawah ini ke file.

settings {
  logfile = "/var/log/lsyncd/lsyncd.log",
  delay = 1
}
sync {
  default.rsync,
  source="/home/test/public_html/",
  target="server2:/home/test/public_html/",
  rsync = {
    compress = true,
    acls = true,
    verbose = true,
    owner = true,
    group = true,
    perms = true,
    rsh = "/usr/bin/ssh -p 22 -o StrictHostKeyChecking=no"
  }
}

Ubah IP target menjadi target parameter .

Anda dapat mengubah delay parameter sesuai kebutuhan Anda. Ini sudah diatur 1 detik.

Sekarang buat direktori log.

# mkdir -p /var/log/lsyncd

Aktifkan lsyncdlayanan untuk memulai secara otomatis.

# systemctl enable lsyncd.service

Mulai layanan.

# systemctl start lsyncd.service

Konfigurasi Server2

Ikuti konfigurasi yang sama dengan Server1 dan ubah target IP.

Sekarang sinkronisasi diatur.

Anda dapat memeriksa aktivitas dari tailf /var/log/lsyncd/lsyncd.log

Terima kasih kepada MelBurslan untuk sarannya.


Parameter keterlambatan dalam fungsi pengaturan tidak valid. Gunakan variabel maxDelays sebagai gantinya. Saya telah mengimplementasikan alat ini. Sangat kuat.
Hasanuzzaman Sattar

3

Sinkronisasi mungkin menjadi opsi. Ini sangat cepat, transfer dienkripsi dan ada klien untuk berbagai platform. Ini menggunakan "inotify" untuk menyinkronkan file yang diubah secara instan.


2

Anda perlu melakukan pendekatan dengan solusi tipe sistem file yang dikelompokkan - sinkronisasi sederhana antara kedua mesin tidak akan memberikan respons waktu nyata.


Sebenarnya server-server itu ada di AWS. Jadi kita tidak bisa mendapatkan lingkungan cluster! Apakah tidak ada cara lain?
Sourav

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.