Saya bertanya-tanya apakah mungkin untuk mirror dua server, seperti Anda dapat mengunggah file ke satu server dan mereka akan mendorong ke server lain, dll. Saya lebih penasaran untuk mirroring file, itu tidak harus mencerminkan manajemen paket dan pengaturan (Tapi itu juga keren!)
8
Jawaban:
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:
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.
sumber
Pada dasarnya Anda memiliki 3 kemungkinan:
sumber
cron + rsync = direktori / file yang dicerminkan
sumber
Tergantung pada kasus penggunaan khusus Anda - Anda dapat menggunakan sesuatu yang mirip dengan DRBD http://www.drbd.org/
sumber
Jika Anda mencoba membangun solusi cadangan di sini (yang telah saya lakukan secara pribadi dalam pengaturan yang hampir sama) berhati-hatilah. Ada banyak hal yang berbeda yang harus Anda backup, salah satu (yang bisa dibilang) adalah penghapusan akedental terbesar - setiap sistem replikasi langsung hanya akan meniru penghapusan, dan tidak memberikan keamanan. Untuk replikasi harian ini berfungsi, tetapi jawaban yang cukup lemah. Coba RSnapshot.
Serempak mungkin bekerja untuk Anda, tetapi saya tidak memiliki pengalaman pribadi.
Menjalankan Rsync di kedua arah dengan flag aproprate dapat bekerja, tetapi memiliki masalah yang agak rumit tentang bagaimana menangani file yang dihapus, tanpa penanganan khusus, itu hanya mengembalikan file, yang baik-baik saja jika Anda tidak pernah menghapus apa pun seperti saya, tetapi sedikit sebaliknya miskin. Itu juga melakukan hal-hal aneh jika file dipindahkan.
Apa pun yang Anda lakukan, jika situasi apa pun dapat muncul di mana file dapat diedit secara bersamaan di kedua ujungnya, Anda memiliki masalah. serentak adalah satu-satunya solusi yang saya tahu yang dapat menangani ini bahkan dekat dengan memuaskan.
sumber
Jika itu satu arah (maksud saya, selalu dari satu server ke satu server lain, tetapi tidak sebaliknya) Anda bisa menggunakan
incron
. Itu seperti cron tetapi berdasarkan peristiwa filesystem.Setiap kali file dibuat atau diubah, itu akan memicu scp atau rsync ke server lain.
Bi-directional memiliki masalah loop :).
sumber
itu tergantung pada kebutuhan Anda ..... saya punya setup yang sangat "murah dan mudah" untuk webserver berkerumun.
saya hanya punya satu "fileserver" (NFS) di mana semua webserver me-mount dirs berikut:
sederhana dan bekerja mati
sumber
clonezilla juga bisa melihat yang menggunakan rsync
sumber