2014-07-06 30 views
7

Próbuję przeskalować Jenkinsa do dużej organizacji. Czy istnieje sposób, aby wielu mistrzów Jenkins dzieliło pulę niewolników? Na przykład, gdybym miał 200 Jenkins Masters i chciałbym, żeby mieli ten sam zestaw 50 niewolników Linux.Wiele programów Jenkins Masters korzystających ze współużytkowanego puli niewolników

Oznacza to, że zakładając, że każda jednostka podrzędna ma tylko jeden executor, jeśli Master A przesyła zadanie do puli slave i działa na Slave 1, jeśli Master B przesyła zadanie do puli slave, spróbuje uruchomić jeden z innych wolnych niewolników, ponieważ Slave 1 jest już zajęty.

Wiem, że wiele urządzeń master może współużytkować pojedyncze urządzenie podrzędne, jeśli skonfigurowałem urządzenie podrzędne, aby miał nowy obszar roboczy i executor dla każdego mastera. Jednak chcę mieć możliwość ustawienia slave raz, zamiast posiadania slave.jar działającego na slave dla każdego master.

Cloudbees Op Center wydaje się zapewniać tę funkcjonalność, ale szuka sposobu, aby to zrobić z wersją Open Source. Jeśli nie, jak trudne byłoby rozszerzenie Jenkinsa o tę funkcjonalność? Mam doświadczenie programistyczne w Javie i wykonałem niewielką pracę nad rozwojem wtyczek Jenkins.

Dzięki,

Odpowiedz

8

Jak już zauważył, że nie jest trudno podzielić między niewolnikami panów, właśnie konfiguracji wielu obszarów roboczych i każdego mistrza zainstaluje swój własny niewolnik jar. Sztuką jest prawidłowe udostępnianie zasobów.

Jednym z takich menedżerów zasobów jest Apache Mesos. Istnieje Jenkins Mesos plugin umożliwiający tworzenie urządzeń podrzędnych w zarządzanym klastrze.

Takie podejście jest bardzo nowy i Ebay już na blogu o tym, jak oni rozwinęła swoją konfigurację Jenkins używać Mesos:

Nadzieja to pomaga.

+0

Dzięki temu wygląda to naprawdę interesująco. Jeszcze nie zagłębiałem się w to, ale wydaje się, że to zgadza się z wieloma rzeczami, które chcemy robić. Pogłębię się w to jeszcze bardziej, dzięki jeszcze raz. – mpstack

+0

@ mark-oconnor Po dwóch kolejnych latach, czy możesz potwierdzić, że podejście Mesos nadal działa i skaluje się dobrze w produkcji? Jakieś rzeczy, o które trzeba się martwić? – sorin

+0

@sorin Dwa lata to całe życie w technologii :-) Obecnie uruchamiam Jenkinsa jako kontener na Kubernetes, z wtyczką Kubernetes do uruchamiania zadań niewolniczych. –

2

Istnieje Gearman Plugin opracowany przez Open Stack do obsługi udostępniania slaves przez wiele wzorców.

+2

Niestety zapewnia ogromne obciążenie i nasz mistrz Jenkinsa z ~ 2000 zleceń i 32 niewolnikami przestał odpowiadać, kiedy włączyliśmy wtyczkę. Mówi się też, że nie działa z projektami Matrix. –

0

Gdyby to był ja, ustawiłbym wszystkich mistrzów z wtyczką chmurową dla niewolników. Na przykład można zainstalować kubernetes plugin lub nomad plugin i podłączyć wszystkie wzorce do tego samego klastra lub klastra nomadów. Nomad lub Kubernetes zajmie się zarządzaniem zasobami, a wzorce będą przekazywać zadania tylko do współużytkowanej puli zasobów. Ta koncepcja może być łatwo zastosowana do innych dostawców usług w chmurze, takich jak AWS, ale do IMHO, jeśli chcesz tylko utworzyć pulę zasobów dla swoich mistrzów jenkins od początku, koczownik jest najprostszą opcją.