Jenkins düzgün şekilde nasıl ölçeklenir?


27

Projemde Jenkins Master + 1 Jenkins slave (2 uygulayıcı) çalışan bir AWS sunucumuz var ... ve daha fazlasına ihtiyacımız var
Yapma gücümüzü artırmak için üç seçeneğimiz var:

  1. Ölçeklendir : AWS örneğini büyütün ve daha fazla uygulayıcı ekleyin.
  2. Ölçeklendir : AWS örneğini büyütün ve başka bir jenkins kölesi işlemi ekleyin.
  3. Ölçeklendir : Jenkins slave ile başka bir AWS örneği oluşturun ve bunu master'a bağlayın

2. Büyük bir organizasyondayken ve şu anki Jenkins Master'ımızın ihtiyaç duyduğu her yere erişimi olduğu için yapmak istiyoruz. Seçenek 3. "Yeni sunucu" haftalar sürecek daha bürokratik onaylara ihtiyaç duyduğundan karmaşıktır.

Yani benim sorularım:

  • Seçenek 2'de herhangi bir teknik sorun var mı? . Belki de her jenkins kölesinin uygulayıcıları diğer köle uygulayıcıların farkında değillerdir?
  • Genel olarak, Jenkins'i ölçeklendirmek için en iyi yaklaşım hangisidir? Ölçeklendirme mi, ölçeklendirme mi?

Yeni bir durumda biriminizin yedeklenmesi ve geri yüklenmesi gerekeceğinden, farklı bir donanım türüne geçerseniz bir örnek türünü değiştirmek sorunlu olabilir.
Tensibai

2
Neden 3 numara değil? Jenkins'e iş göndermenin genel yolu ustalaşmak. Ve bazı kriterlere göre usta uygun köleye sorunsuz gönderecek
Romeo Ninov

FWIW, ayrıca yapı makinesinin kaynaklarını nasıl kullandığını görmek için yapı yapınızı analiz etmeniz gerekiyor - ölçeklendirme yardımcı olmayabilir - aynı makinede 2 paralel derleme için derleme süresinin birleştirilmiş derleme sürelerinden daha uzun olduğu durumlarla karşılaştım aynı 2 yapı, üst üste binmeyen, sırayla yürütülür. Bu durumda, # 3 gerçekten mevcut olan tek pratik seçenek olacaktır.
Dan Cornilescu

# 3'ün daha iyi olduğu konusunda hemfikirim ama bununla ilgili tartışmam ya da # 1 ve # 2'ye karşı tartışmalarım yok ...
Oscar Foley

Çevrenizde bir fırsatınız varsa, geçici bir çözüm ararım. Zaten AWS’de olduğunuzu görünce, iş yükünü tutarken makineleri gerektiği gibi kolayca yukarı ve aşağı getirebilirsiniz. wiki.jenkins.io/display/JENKINS/Amazon+EC2+Plugin
casey vega

Yanıtlar:


11

Aynı makinede birden fazla jenkin kölesi çalıştırmak için hiçbir temel teknik sorun yoktur . Aslında , Aynı Makine Üzerinde Birden Fazla Slave Çalıştırmak , bunu yapmak için birkaç iyi neden sunar:

Yürütücülerin doğru kullanımı, aynı makinede birden fazla köle örneğine duyulan ihtiyacı büyük ölçüde ortadan kaldırırken, dikkate alınması gereken bazı benzersiz durumlar vardır:

  • Yapılandırılan düğümler arasında daha fazla yapılandırılabilirlik istiyorsunuz. Diyelim ki mümkün olduğunca kullanılacak bir düğümünüz ve yalnızca gerektiğinde kullanılacak diğer düğümünüz var.
  • Farklı şeyler inşa eden birden fazla Jenkins master kurulumunuz olabilir ve bu yüzden bu konfigürasyon aynı kutuda birden fazla master için slave bulundurmanıza izin verir. Bu doğru, Jenkins ile gerçekten iki ustaya hizmet edebilirsin.
  • Sanal makinelerin başlatılması / durdurulması / değiştirilmesinin kolaylığını, belki de Libvirt Slaves Plugin gibi Jenkins eklentileriyle birlikte kullanmak isteyebilirsiniz .
  • İşletme yatırımınızı ve kullanımınızı en üst düzeye çıkarmak, aynı zamanda işletme maliyetini azaltmak (örneğin, boşta çalışan köle işletmek için hizmet giderleri).

Genel olarak ölçeklendirme tercih edilir, çünkü ölçeklendirme kabiliyeti tipik olarak mevcut fiziksel kaynakların türleri / boyutları ile sınırlıdır.

Özellikle inşa gücünü artırmak için, makine kaynaklarını nasıl kullandığını, darboğazlarının nerede olduğunu ve ölçeklendirmenin bile yardımcı olabileceğini ortaya çıkarmak için hangi ölçeklenebilirlik sınırlarını ortaya çıkardığını belirlemek için gerçek yapınızın analizini öneririm .

Örneğin, aynı makinede 2 paralel yapı için inşa süresinin, aynı makinede sırayla (örtüşmeyen) gerçekleştirilen aynı 2 yapının birleşik yapım sürelerinden daha uzun olduğu durumlarla karşılaştım. Böyle bir durumda , genel inşaat kapasitesini azaltacağı için, ölçeklendirmeyi bile düşünmemeliydim .



3

Ben de yapmamalısınız bence;)

İyi gibi. Daha fazla uygulayıcıya ihtiyacın olduğunu düşünüyorum, belki de yapımların gerçekten kaynak yoğundur? En az 4 koşardım ama işlere bağlı olarak 6-8 koşarız. Çekirdeklerin uzmanlarıyla eşleşmesini seviyorum. Böylece düğümlerinizi büyütmek isteyebilirsiniz, bence 4-8 uygulayıcılarımız için büyük bir M4 kullanıyoruz.

Ayrıca ölçeklendirmelisin ama bunu akıllıca yapmalısın. Jenkins, yapım kuyruğunda ne olduğuna bağlı olarak AWS'yi otomatik olarak büyütmek için bir eklentiye sahiptir . Temelde ne kadar iş olduğunu ve ne kadar süre beklediğini bir köleye kadar bekletip işleri yeni köleye gönderdiğini söylersin. Ayrıca maksimum köle miktarı, minimum miktar vb.


2

Seçenek 3 için ölçeklendirme yerine ölçeklenebilirim. Bir ECS'de (özel Docker tabanlı Jenkins) çalışan tüm Jenkins temsilcilerinin otomatik ölçeklendirme grubu ile çalıştığı bir kurulum yaptık. Tüm Jenkins master'larımız ECS ile iletişim kurar, böylece iş yükünü ECS'de paylaşırız ve Jenkins master'ı ölçeklendirme alıştırmasında yeniden yaratmaya gerek yoktur.

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.