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/www
ke 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 git
mungkin berhasil, tetapi bisakah kita menentukan beberapa remote untuk mendorong juga?
Apa solusi terbaik, dengan asumsi server N akhirnya dapat mencapai ratusan.
rsync
deployment
git
Justin
sumber
sumber
Jawaban:
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.
sumber
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:
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.
sumber
rdist mungkin bekerja untuk Anda.
sumber
[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.
sumber