Dosyaları Birden Çok Sunucuya Dağıtma


11

Sunucu-1 adresinde bir dosya depomuz var /srv/www. Sonra N sayıda sunucumuz var. Sunucu-1'in dosyalarını /srv/wwwtüm sunuculara olabildiğince hızlı ve verimli bir şekilde dağıtabilmesini istiyoruz.

Rsync gibi bir şey var mı, ancak tek bir hedef belirtmek yerine, hedef kümesini (N sunucuları) belirtmek yerine?

gitİşe yarayacağını düşünüyordum , ama biz de itmek için birden fazla uzaktan kumanda belirtebilir miyiz?

En iyi çözüm nedir, N sunucularının sonunda yüzlerce kişiye ulaşabileceğini varsayarsak.


2
Bir ağ dosya sisteminin mümkün olmadığını varsayıyorum?
cjc

stackoverflow.com/questions/849308/… için birden çok uzaktan kumandaya itme hile. Yüzlerce konuda emin değilim.
cjc

Yanıtlar:


14

Eh, hem Heyecan ve Facebook yeni kod devir dağıtmak için kendi kümelerde bittorrent kullanmaya başladılar. Bunu yaparak, eski okul merkezileştirilmiş dağıtım yöntemlerine kıyasla çok kısa bir sürede on binlerce sunucuya kod gönderebilirler.

Henüz bu ölçekte görünmüyorsunuz, ancak dağıtım sisteminizi tasarlamanın, yakın zamanda bir darboğaz olmayacağını kanıtlayacak şekilde bir zararı yoktur.


1
Bittorrent'i nasıl kullanıyorlar?
Dragos

3
Bağlantı verdiğim makalelere bakın.
EEAA

@EEAA twitter bağlantısı kopuk
gprasant

@gprasant düzeltildi.
EEAA

7

Gittiğiniz ölçekler için git önermiyorum. İşe yarayabilir, ancak şahsen bu modeli getirme konusunda kullanmanın bazı kusurlarını görüyorum.

Bunun en iyi nasıl yapılacağını belirleyen birkaç şey var:

  1. Bir deponun ne kadar büyük bir kısmının paylaşılması gerekiyor.
  2. Ne kadar hızlı birleşmek gerekiyor.

Mükemmel yakınsama ve maksimum hız için NFSv4 gibi bir ağ dosya sistemi kullanmanız gerekir. Bildiğim kümelenmiş dosya sistemleri 'yüzlerce' düğümle ölçeklenmediğinden, bir ağ dosya sistemi olmalıdır. Bu kendi zorluklarını sunar, ancak dosyalar NFS kafasında güncellendiğinde yakınsamaya ulaşacağınız anlamına gelir.

Hızlı yakınsama için bazı rsync oyunlarını kullanabilirsiniz. Eğer rsync arka plan programı CPU'ya bağlıysa, kesinlikle birkaç tane rsync sunucusunu haproxy gibi bir yük dengeleyicinin arkasına koyabilirsiniz. Bunu veri çekmek için cron işleri ile birleştirin (veya kod güncellemelerini tetiklemek için başka bir yöntem) ve yakınlaşmayı oldukça hızlı bir şekilde vurabilirsiniz.

Yukarıdakilerin her ikisi için, merkezi depoyu maksimum verim için 10GbE bağlantılarına koymak iyi bir fikir olacaktır.

Diğer bir seçenek ise, sunucularınıza güncellemeleri göndermek için merkezi depodan çalıştırıldığı bir push-rsync'dir. Yukarıdakilerden herhangi biri kadar hızlı birleşmez, ancak dahili bant genişliğinize daha uygun olur. Daha iyi hız için bölünmüş aralıkları zorlayan birden çok ana bilgisayar kullanın.


1

rdist sizin için çalışabilir.


1
Bu teorik olarak soruyu cevaplayabilse de , cevabın temel kısımlarını buraya dahil etmek ve referans için bağlantı sağlamak tercih edilir.
Mark Henderson

-1

[bağlı] Kwatee ( http://www.kwatee.net ) kullanarak istediğiniz sayıda sunucuya dağıtabilirsiniz. Dağıtımlar artımlıdır (yalnızca değiştirilen dosyalar iletilir) ve çok hızlı olacak şekilde paralelleştirilebilir. Ayrıca Kwatee'yi yük dengeleyiciden haberdar olacak şekilde yapılandırabilirsiniz, böylece güncellemeler sırasında sunucuların LB'den kaldırılıp yeniden takılır. Dağıtım parametrelerini yapılandırmak için bir grafik arayüz vardır ve dağıtımlar GUI aracılığıyla manuel olarak tetiklenebilir veya python komutları kullanılarak otomatik hale getirilebilir.


oyu açıklamak ister misiniz?
mac

1
Sadece kendi ürününü pezevenklemek için siteye katılmak genellikle buralarda inişli çıkışlar kazanır.
ceejayoz

Ne olursa olsun, dürüst ve şeffaf cevaplar için çok
mac
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.