개발/Jenkins

[Jenkins] 분산 빌드 환경: 마스터 서버와 에이전트 서버

nourzoo 2024. 11. 29. 08:39

평소와 같이 젠킨스 창을 열어서 테스트 하려는데... 갑자기

 

페이지 연결이 안 된다...?

원인은 젠킨스 Agent 서버가 꺼져있었다는 것이었다!

 

분산 빌드

빌드 작업을 여러 서버에서 분산시켜 처리하는 방식

Master Node & Agent Node 로 구성

잡을 생성해서 소스코드를 빌드하면 Jenkins의 기본 구조에서는 마스터 서버가 빌드를 처리하지만, 빌드 작업이 많아지거나 리소스가 부족할 때 분산 빌드를 통해 성능을 개선하고 효율적으로 빌드 프로세스를 처리할 수 있음.

가린건 보안 이슈...

 

 

Master Node

Jenkins의 관리와 UI를 담당한다.
빌드를 직접 실행하지 않고, 에이전트 서버에 빌드를 맡긴다.
사용자 인터페이스를 제공하고 빌드 큐를 관리한다.

 

Slave(Agent) Node

마스터 서버에서 지정한 빌드 작업을 실제로 실행하는 서버
마스터 서버의 명령을 받아서 빌드를 실행한다.
각 에이전트는 특정 환경(특정 OS, 특정 소프트웨어 등)을 설정할 수 있어서 다양한 환경에서 빌드를 실행할 수 있다.
ex) Windows 에이전트와 Linux 에이전트를 설정하여, 다양한 OS에서의 빌드를 동시에 처리할 수 있다.

 

환경 구축도

Build 흐름

- Jenkins가 설치된 Master Node에서 어떤 작업을 할 것인지를 Job에 작성한다.

- 작성한 Job에서 Build를 실행할 Slave Node를 설정한다.

- 빌드가 실행되면 Job에서 설정한 Remote Repository(GitHub)에서 소스코드를 Pull 하고 build가 실행된다.

 

 

따라서 Agent 서버가 꺼지면?

빌드 대기 상태

특정 에이전트에만 특정 빌드가 할당되어 있다면? Agent가 꺼지면 빌드는 대기 상태에 들어간다.

ex) Windows 전용 빌드를 Windows 에이전트에서만 실행할 수 있다면, Windows 에이전트가 꺼지면 Windows 빌드는 마스터에서 처리할 수 없다.

 

빌드 실패

Jenkins는 해당 에이전트에서 진행 중인 빌드를 계속할 수 없고 빌드가 실패할 수 있다.

Jenkins는 해당 작업을 다시 시도하려고 할 수 있지만, 에이전트가 복구될 때까지 빌드를 진행할 수 없다.