Bagaimana cara menjaga beberapa server dalam file sinkronisasi bijaksana?

3

Saat ini saya mengelola sekelompok server PHP-FPM, yang semuanya cenderung tidak sinkron satu sama lain. Aplikasi yang saya gunakan di atas server aplikasi (Magento) memungkinkan admin untuk memodifikasi berbagai file pada sistem, tetapi sekarang situs tersebut dalam kumpulan yang diatur untuk memodifikasi file hanya memodifikasinya pada satu contoh (pada salah satu server aplikasi) dari berbagai mesin di cluster.

Apakah ada aplikasi open-source untuk Linux yang memungkinkan saya untuk menjaga semua server ini tetap sinkron? Saya tidak punya masalah dengan membuat instance VM kecil yang dapat mendengarkan perubahan dari mesin untuk disinkronkan. Secara teori, aplikasi yang sempurna akan memiliki klien kecil yang berjalan pada setiap mesin untuk disinkronkan, yang akan berbicara dengan server master yang kemudian akan memutuskan bagaimana / apa yang akan disinkronkan dari setiap mesin.

Saya sudah memeriksa kemungkinan menjalankan file server terpusat, tetapi sayangnya server aplikasi saya tersebar antara EC2 dan mesin fisik, yang membuat ini tidak mungkin dilakukan. Karena ada beberapa server aplikasi (beberapa di antaranya dibuat secara dinamis tergantung pada beban situs), hanya menyiapkan tugas cs rsync tidak efisien karena tugas cron harus dimodifikasi pada setiap mesin untuk mengirim file satu sama lain mesin di cluster, dan itu hanya akan menjadi sejumlah besar transfer data yang tidak perlu / koneksi ssh.

GForceSys
sumber
3
Gunakan repositori git.
Michael Hampton
1
Bagaimana dengan server NFS?
mdpc
1
Untuk repositori git, saya mencari lebih banyak untuk sesuatu yang akan segera mengubah semua sistem yang terhubung setelah perubahan terjadi. - Adapun server NFS, karena mesin di-host pada subnet yang berbeda (dan berbagai wilayah negara), latensi di antara mereka terlalu besar.
GForceSys
NFS harus bekerja dengan baik pada subnet yang berbeda, tetapi latensi mungkin menjadi masalah. NFSv4 menawarkan NFS yang baik melalui TCP, yang dapat membantu pada WAN. Namun, saya sepenuhnya memahami kekhawatiran Anda. Kami menemukan bahwa NFS melalui WAN berkualitas tinggi masih akan memiliki masalah, dan NFS melalui Internet akan memiliki lebih banyak masalah.
Stefan Lasiewski
Berapa banyak server di cluster Anda?
Stefan Lasiewski

Jawaban:

5

Anda mungkin ingin mempertimbangkan untuk menggunakan Wayang atau CFEngine untuk membuat perubahan pada server. Alat-alat seperti ini memungkinkan Anda membuat perubahan terkontrol ke semua server. Mereka banyak membantu menjaga konfigurasi beberapa server tetap sinkron.

BillThor
sumber
3

Lihatlah GlusterFS. AFAIK tersedia di EC2.

Ini replikasi / mirroring berbasis file, dan cukup mudah untuk setup. File berada di direktori lokal di sistem file lokal dari node.

Khususnya dalam kasus Anda, Anda dapat mengatur mirror antara semua server aplikasi dan dengan aman mengakses direktori lokal ini untuk membaca agar dapat bekerja di sekitar overhead FUSE (tetapi Anda harus menulis melalui mount glusterfs, sehingga file direplikasi pada semua node).

Sergej Alikov
sumber
Bukankah GlusterFS pada dasarnya adalah sistem file jaringan? Saya takut menggunakan sistem file jaringan karena throughput konyol yang mereka pakai pada sistem. Mengingat ini, saya mencari sesuatu yang lebih mirip Dropbox, di mana hanya file selektif yang disinkronkan dan setiap permintaan tidak harus memuat file melalui jaringan.
GForceSys
1
Anda mungkin ingin setidaknya menguji solusi ini. Sepertinya solusi termudah dan paling dapat diandalkan. Anda selalu dapat berhenti menggunakannya jika memakan terlalu banyak throughput.
Aglassman
GlusterFS lebih tentang didistribusikan daripada sistem file jaringan. Untuk kasus Anda - saya yakin layak untuk dicoba. Anda dapat mengatur mirror di semua server Anda dan itu akan menyinkronkan file, bukan memblokir perangkat.
Sergej Alikov
1
Kelemahan utama - ini adalah FUSE filesystem, jadi penalti kinerja berlaku. Tetapi dalam kasus Anda, Anda dapat menggunakan trik - mengakses file pada node secara langsung untuk dibaca (tidak ada penalti), dan menulis kepada mereka melalui mountpoint glusterfs.
Sergej Alikov
@SergejAlikov selamat datang di Stack Overflow dan terima kasih telah menjawab. Perluas sedikit jawaban Anda dan beri tahu kami bagaimana itu bisa membantu menjawab pertanyaan. Silakan baca kotak pemberitahuan di atas yang mengatakan Kami sedang mencari jawaban panjang yang memberikan beberapa penjelasan dan konteks. Jangan hanya memberikan jawaban satu baris: tolong jelaskan mengapa Anda merekomendasikannya sebagai solusi. Jawaban yang tidak menjelaskan apa pun akan dihapus. Lihat Subjektif Bagus, Subjektif Buruk untuk informasi lebih lanjut.
Stefan Lasiewski
0

Menjadi sangat akrab, saya tidak mengetahui adanya instalasi Magneto yang membuat perubahan pada file atau direktori melalui penggunaan normal selain

./var/cache   <-- should be on a distributed cache like Redis or Memcache
./var/report  <-- doesn't need to be network replicated
./var/log     <-- doesn't need to be network replicated
./var/locks   <-- the admin node should operate on a single server
./var/session <-- should be on a distributed cache like Redis or Memcache
./media/catalog/product/cache <-- doesn't need to be network replicated

Bagaimanapun, sistem file jaringan seperti NFS tidak akan menjadi pilihan yang solid - kecuali Anda memiliki pengalaman luas dalam mengamankan dan menyetelnya melalui WAN.

Replikasi blok jaringan, mis. Gluster / DRBD juga bukan pilihan yang baik. Performa lemah untuk Gluster (dan kompleks untuk dikonfigurasikan) dan DRBD harus menggunakan sistem file multi-master seperti OCFS2 - tidak ideal.

Rilis Magento yang lebih baru juga mendukung penyimpanan DB untuk media, untuk alasan yang tepat ini - meskipun ini di luar yang kurang ideal dan hanya Bukan Ide Yang Baik.

Perangkat lunak kontrol versi (Git / SVN) akan memenuhi persyaratan tingkat kode Anda. Anda dapat dengan mudah menambahkan kait ke mesin pementasan Anda untuk melakukan tarikan ganda tanpa sentuhan pada sistem produksi. Tetapi tidak akan memenuhi untuk upload admin (gambar dll.).

Masuk akal jika FAR lebih praktis untuk mengarahkan ulang semua lalu lintas admin dan peluncuran produksi ke satu node - kemudian replikasi dari sumber itu ke node yang tersisa.

Lipsync adalah aplikasi yang akan memenuhi tuntutan "gaya Dropbox" Anda dan melakukan perubahan dan dan bila perlu. Kami telah menggunakannya dengan kelompok Magento pada beberapa kesempatan.

Ben Lessani - Sonassi
sumber
Sepertinya ketika Anda memiliki cache halaman penuh diaktifkan. Anda perlu melakukan sinkronisasi ./media/catalog/product/cachedi semua server.
Damodar Bashyal