Як правильно масштабувати Дженкінс?


27

У моєму проекті у нас є один сервер AWS під управлінням Jenkins Master + 1 раб Дженкінса (2 виконавці) ... і нам потрібно більше.
Щоб збільшити потужність нарощування, у нас є три варіанти:

  1. Масштабування : Збільште екземпляр AWS та додайте більше виконавців.
  2. Масштабування : Збільште екземпляр AWS та додайте ще один підлеглий процес.
  3. Масштаб : Створіть інший екземпляр AWS за допомогою раба jenkins та підключіть його до майстра

Ми хочемо зробити 2., оскільки ми у великій організації, і наш нинішній Майстер Дженкінса вже має доступ до кожного місця, яке йому потрібно. Варіант 3. "Новий сервер" є складним, оскільки йому потрібно більше бюрократичних схвалень, які потребуватимуть тижнів.

Тому мої запитання:

  • Чи є якісь технічні проблеми у варіанті 2? . Може, виконавці кожного раба-дженкіна не знають про інших виконавців-рабів?
  • Взагалі, який найкращий підхід до масштабування Дженкінса? Масштабування або масштабування?

У вас виникне невміння, зміна типу екземпляра може бути проблематичною, якщо ви перейдете на інший тип апаратного забезпечення, оскільки ваш об'єм доведеться створити резервну копію та відновити в новому екземплярі.
Тенсібай

2
Чому б не номер 3? Звичайний спосіб відправки робіт до Дженкінса - це освоєння. А на підставі певних критеріїв майстер відправить його безперешкодно до відповідного раба
Ромео Нінов

FWIW, вам також потрібно проаналізувати структуру збирання, щоб побачити, як вона використовує ресурси машини машини збирання - збільшення масштабу може не допомогти - я зіткнувся з випадками, коли час збірки для двох паралельних збірок на одній машині був довшим, ніж комбінований час збірки ті ж самі 2 збірки, що виконуються послідовно, не перекриваючись. У такому випадку №3 дійсно буде єдиним доступним практичним варіантом.
Дан Корнілеску

Я погоджуюся з тим, що №3 краще, але у мене немає аргументів на це чи аргументів проти №1 та №2 ...
Оскар Фолі

Якщо у вас є можливість у вашому оточенні, я б подумав про ефемерне рішення. Побачивши, що ви вже перебуваєте в AWS, ви могли легко піднімати машини вгору та вниз по мірі необхідності, обробляючи навантаження. wiki.jenkins.io/display/JENKINS/Amazon+EC2+Plugin
vega

Відповіді:


11

Немає принципових технічних проблем із керуванням кількома рабами-джинсами на одній машині. Насправді запуск декількох рабів на одній машині перераховує кілька вагомих причин для цього:

Хоча правильне використання виконавців значною мірою заперечує потребу в декількох еквівалентних випадках на одній машині, є деякі унікальні випадки використання:

  • Вам потрібно більше налаштування між налаштованими вузлами. Скажімо, у вас є один набір вузлів, який потрібно використовувати якомога більше, а інший вузол, який потрібно використовувати лише за потреби.
  • У вас може бути кілька головних установок Дженкінса, які будують різні речі, і тому ця конфігурація дозволить вам мати рабів для більше одного майстра в одній коробці. Правильно, з Дженкінсом ви справді можете служити двом господарям.
  • Ви можете скористатися простотою запуску / зупинки / заміни віртуальних машин, можливо, спільно з плагінами Jenkins, такими як плагін Libvirt Slaves .
  • Ви хочете максимізувати інвестиції та використання обладнання, одночасно мінімізуючи експлуатаційні витрати (наприклад, витрати на корисні послуги для запуску холостих холопів).

Загалом , переважання масштабування є кращим, насамперед, тому що можливість нарощування масштабів зазвичай обмежена типами / розмірами доступних фізичних ресурсів.

Зокрема, для збільшення потужності збірки я рекомендую проаналізувати фактичну збірку, щоб визначити, як вона використовує машинні ресурси, які / де є її вузькі місця та які обмеження масштабування підвищує, щоб виявити, якщо масштабування навіть допомагає.

Наприклад, я стикався з випадками, коли час збірки для двох паралельних збірок на одній машині був довшим, ніж комбінований час збірки для тих же 2-х збірок, що виконуються послідовно (не перекриваючись) на одній машині. У такому випадку я б навіть не розглядав масштабування, оскільки це фактично зменшить загальну будівельну потужність.



3

Я думаю, ви не повинні робити жодного;)

Добре начебто. Я думаю, що вам потрібно більше виконавців, можливо, ваші будівлі справді ресурсомісткі? Я б працював принаймні 4, але ми працюємо від 6 до 8 залежно від роботи. Мені подобається відповідати # ядер до виконавців. Тож ви, можливо, захочете масштабувати свої вузли, я думаю, ми використовуємо велику M4 для наших 4-8 виконавців.

Я також думаю, що вам слід розширити масштаб, але ви повинні зробити це розумно. Дженкінс має плагін для автоматичного масштабування на AWS залежно від того, що знаходиться в черзі збирання. В основному ви кажете йому, скільки робочих місць і скільки часу чекають, перш ніж він стане рабом і відправить завдання новому рабу. Ви також можете встановити максимальну кількість рабів, мінімальну кількість і т.д.


2

Я міг би змінити масштаб, замість того, щоб збільшувати масштаб, ідучи до варіанту 3. Ми створили налаштування, в якому всі агенти Дженкінса працюють на ECS (користувацький докер на основі Дженкінса) з групою автоматичного масштабування. У нас всі майстри Дженкінса спілкуються з ECS, таким чином, ділиться навантаженням на ECS, і немає необхідності відтворювати майстра Дженкінса у вправі масштабування.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.