О кластере Дженкинс
Когда несколько задач выполняются на Jenkins одновременно, производительность одной машины может стать узким местом.Использование кластера Jenkins может эффективно решить эту проблему.Разрешение нескольким машинам обрабатывать эти задачи одновременно может распределить нагрузку.Децентрализация , давайте сегодня быстро построим кластер Jenkins, версия Jenkins 2.190.2;
Как быстро построить кластер
Использование Docker может сэкономить большую часть подготовительной работы, вам нужно только установить docker на компьютер с Linux, а затем завершить построение кластера с помощью нескольких команд и операций;
Информация об окружающей среде
Всего в реальной боевой обстановке используется три компьютера, и их настройки одинаковы, а именно:
- Операционная система: CentOS Linux версии 7.6.1810
- Брандмауэр выключен
- докер: 1.13.1
Информация для трех компьютеров выглядит следующим образом:
Имя процессора | айпи адрес | эффект |
---|---|---|
master | 192.168.133.131 | Главный узел кластера Jenkins, предоставляющий веб-сервисы. |
agent1 | 192.168.133.132 | Узел задания № 1 кластера Jenkins, метка — maven. |
agent2 | 192.168.133.133 | Второй рабочий узел кластера Jenkins, метка — gradle |
Рекомендуется, чтобы память узла агента 2 была больше 4 ГБ, поскольку фактическая работа в следующей статье будет использовать агент 2 для компиляции и построения фреймворка Spring, что требует немного большей памяти;
Готов к работе
- Все последующие операции ведутся под root-аккаунтами;
- Создайте папку /usr/local/jenkins на каждом компьютере
Создать мастер Дженкинса
- Войдите на главную машину и выполните следующую команду:
docker run \
-u root \
-idt \
--name master \
-p 8080:8080 \
-p 50000:50000 \
-v /usr/local/jenkins:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
jenkinsci/blueocean:1.19.0
- Выполните docker logs master, в консоли отобразится ключ входа jenkins, как показано в красном поле на следующем рисунке:
- Введите адрес в браузере: http://192.168.133.131:8080 для отображения страницы входа в Jenkins, как показано на рисунке ниже, введите скопированный ключ входа в красное поле для входа:
- Выберите для установки рекомендуемые плагины:
- Дождитесь завершения онлайн-установки плагина:
- Следующим шагом является создание администратора и использование URL-адреса экземпляра.Я не буду здесь много говорить.Вы можете решить в соответствии с реальной ситуацией;
На данный момент настроен мастер Jenkins, а затем агент1 и агент2 добавляются в кластер в качестве рабочих узлов;
присоединиться к агенту 1
- Чтобы добавить новый узел на веб-страницу Jenkins, выполните следующие действия: сначала войдите на страницу управления узлом:
- Как показано ниже, добавьте новый узел с именем agent1:
- Следующие сведения об узле показаны на рисунке ниже.Обратите внимание, что содержимое четырех красных полей должно соответствовать рисунку:
- После успешного сохранения отобразится список машин, как показано на рисунке ниже Красный крестик на значке указывает на то, что машина не в сети (агент1 в это время не подключен), нажмите на красное поле:
- Как показано на рисунке ниже, команда в красном поле — это команда запуска агента1, и машина, выполняющая эту команду, присоединится к кластеру как агент1:
- Обратите внимание, что agent.jar в красном поле на картинке выше — это ссылка для скачивания файла с именем agent.jar Загрузите этот файл в каталог /usr/local/jenkins на компьютере с агентом1;
- Войдите на компьютер с агентом1 через ssh и выполните следующую команду, чтобы добавить агент1 в кластер Jenkins:
docker run \
-u root \
-idt \
--name agent \
-v /usr/local/jenkins:/usr/local/jenkins \
bolingcavalry/openjdk-with-sshpass:8u232 \
java -jar /usr/local/jenkins/agent.jar \
-jnlpUrl http://192.168.133.131:8080/computer/agent1/slave-agent.jnlp \
-secret 44c3e8d1531754b8655b53294bbde6dd99b3aaa91a250092d0d3425534ae1058 \
-workDir "/usr/local/jenkins"
Вторая половина приведенной выше команды, а именно java -jar ......, является командой запуска агента1 в красном поле на предыдущем рисунке, единственное, что нужно изменить, это изменить файл agent.jar на абсолютный путь /usr /местный/Дженкинс/агент .jar
- Образ приведенной выше команды bolingcavalry/openjdk-with-sshpass:8u232.Содержимое Dockerfile выглядит следующим образом.Видно, что оно очень простое.То есть sshpass устанавливается в образ OpenJDK.Такой Контейнер может нести пароль удаленной машины при выполнении команды ssh без использования Ждать, пока пользователь введет пароль, что удобно для сценария оболочки для выполнения команды ssh:
FROM openjdk:8u232
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install --assume-yes sshpass
- Перейдите на веб-страницу Jenkins, чтобы просмотреть список узлов, как показано на рисунке ниже, вы можете видеть, что агент1 был успешно добавлен:
присоединиться к агенту2
Способ присоединения агента 2 к кластеру в основном такой же, как и у агента 1, за исключением следующих двух моментов:
- Создайте узел на странице Jenkins с именем agent2.
- Метка агента2 — gradle, как показано в красном поле ниже:
- В этот момент агент2 также успешно добавлен:
На этом этапе кластер Jenkins построен, и два узла имеют разные метки.Следующая статья«Конвейерный бой под кластером Дженкинс», мы создаем конвейерные задачи в этой кластерной среде и назначаем их разным узлам через метки, чтобы добиться параллельного выполнения нескольких узлов;