Menyebarkan File Ke Beberapa Server


11

Kami memiliki repositori pusat file di katakan server-1 di /srv/www. Kemudian kami memiliki sejumlah N server juga. Kami ingin server-1 dapat menyebarkan file-nya /srv/wwwke semua server secepat dan seefisien mungkin.

Apakah ada sesuatu seperti rsync, tetapi alih-alih menentukan target tunggal, menentukan cluster (N server) dari target?

Saya berpikir gitmungkin berhasil, tetapi bisakah kita menentukan beberapa remote untuk mendorong juga?

Apa solusi terbaik, dengan asumsi server N akhirnya dapat mencapai ratusan.


2
Saya menganggap sistem file jaringan tidak mungkin?
cjc

stackoverflow.com/questions/849308/… untuk trik git untuk mendorong ke beberapa remote. Namun, tidak yakin tentang ratusan.
cjc

Jawaban:


14

Yah, baik Twitter maupun Facebook sudah mulai menggunakan bittorrent di kluster mereka untuk mendistribusikan revs kode baru. Dengan melakukan ini, mereka dapat mendorong kode ke puluhan ribu server dalam waktu yang sangat singkat dibandingkan dengan metode penyebaran terpusat sekolah lama.

Kedengarannya Anda belum dalam skala itu, tetapi tidak ada salahnya merancang sistem penempatan Anda sehingga tidak akan terbukti menjadi hambatan dalam waktu dekat.


1
Bagaimana mereka menggunakan bittorrent?
Dragos

3
Lihat artikel yang saya tautkan.
EEAA

@EEAA tautan twitter rusak
gprasant

@pengguna tetap.
EEAA

7

Saya tidak merekomendasikan git untuk skala yang Anda ajak bicara. Ini bisa berhasil, tetapi saya pribadi melihat beberapa defisit dengan menggunakan model itu untuk mengambil.

Ada beberapa hal yang menentukan cara terbaik untuk melakukannya:

  1. Seberapa besar repo perlu dibagikan.
  2. Seberapa cepat perlu konvergen.

Untuk konvergensi yang sempurna, dan kecepatan maksimum Anda harus menggunakan sistem file jaringan, seperti NFSv4. Filesystem cluster yang saya tahu tentang jangan skala ke 'ratusan' node, jadi itu harus sistem file jaringan. Ini menyajikan tantangannya sendiri, tetapi itu berarti bahwa Anda akan mencapai konvergensi saat file diperbarui pada kepala NFS.

Untuk konvergensi cepat, Anda dapat menggunakan beberapa tipu daya rsync. Jika daemon rsync pada akhirnya terikat dengan CPU, Anda tentu dapat menempatkan beberapa-tiga server rsync di belakang loadbalancer seperti haproxy. Pasangan itu dengan pekerjaan cron untuk menarik data (atau metode lain untuk memicu pembaruan kode) dan Anda dapat mencapai konvergensi dengan cukup cepat.

Untuk kedua hal di atas, mungkin ide yang baik untuk menempatkan repositori pusat pada tautan 10GbE untuk throughput maksimum.

Alternatif adalah push-rsync, di mana dijalankan dari repo pusat untuk mendorong pembaruan ke server Anda. Ini tidak akan menyatu secepat salah satu di atas, tetapi akan lebih bersahabat dengan bandwidth internal Anda. Gunakan beberapa host yang mendorong rentang yang dibagi untuk kecepatan yang lebih baik.


1

rdist mungkin bekerja untuk Anda.


1
Sementara ini secara teoritis dapat menjawab pertanyaan, akan lebih baik untuk memasukkan bagian-bagian penting dari jawaban di sini, dan menyediakan tautan untuk referensi.
Mark Henderson

-1

[berafiliasi] Menggunakan Kwatee ( http://www.kwatee.net ) Anda dapat menggunakan sebanyak mungkin server. Penyebaran bersifat inkremental (hanya file yang dimodifikasi yang dikirimkan) dan dapat diparalelkan sehingga sangat cepat. Anda juga dapat mengonfigurasi Kwatee agar menjadi penyeimbang beban agar server dihapus dari LB selama pembaruan dan kemudian dimasukkan kembali. Ada antarmuka grafis untuk mengkonfigurasi parameter penyebaran dan kemudian penyebaran dapat dipicu secara manual melalui GUI atau otomatis menggunakan perintah python.


mau menjelaskan suara turun?
mac

1
Bergabung dengan situs hanya untuk germo produk sendiri sering mengumpulkan downvotes di sekitar sini.
ceejayoz

Apapun, begitu banyak untuk jawaban yang jujur ​​dan transparan
mac
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.