DevOps/Jenkins

Jenkins Master-Slave 노드 설정

알로그 2018. 7. 27. 16:10
반응형

팀에서 하나의 서버에서 젠킨스를 운용했었는데, 점차 Job들이 많이 생기고 사용자가 늘어나면서 많은 부하가 걸리게 되었다.

가령 누군가 빌드를 돌리고 있으면 다른 자동화 작업이 빌드 Job이 끝날때까지 pending 되었다.

이를 해결하기 위해 젠킨스에서 마스터와 슬레이브 정책을 사용할 수 있다는것을 알게 되었고, 이에 대해 정리하고자 한다.

 

마스터와 슬레이브 노드를 분류하여, 마스터 노드에서는 SCM 툴(gerrit, bitbucket 등)에서 폴링(트리거) 또는 결과를 report하는 용도로 사용하고 실제 부하가 걸리는 작업들은 모두 슬레이브 노드에서 실행하게 한다.

따라서 마스터 노드는 단순히 스케쥴링하고 로드 밸런싱하는 역할을 하고 실제 부하가 걸리는 작업들은 슬레이브 노드로 적절히 분산할 수 있다.

 

그리고 또 하나의 강점으로 다른 OS를 슬레이브 노드로 설정하여, OS에 의존적인 일들을 수행할 수 있다.

가령 마스터가 노드가 있고 슬레이브 노드로 윈도우, 우분투, 맥을 설정하여 모든 OS에 따른 빌드를 수행할 수 있다.

 

<마스터노드 설정>

마스터 노드의 젠킨스로 접속하여 젠킨스 관리에서 노드 관리로 들어가서 신규노드를 추가해준다.

이때 슬레이브와 설정하는 방법이 여러가지 있는데, Java Web Start를 사용하는게 가장 편하다. 그외에 ssh방법도 있음.

만약 Java Web Start가 보이지 않는 경우 Global security 셋팅에 들어가서 TCP port for JNLP agent 값을 랜덤으로 설정하면 된다.

노드를 추가하고, 추가 한 노드를 다시 클릭하면 Connect agent to Jenkins one of these ways가 나타나는데, 이걸 슬레이브 노드에 설정해주면 된다.

 

 

<슬레이브 노드 설정>

위에서 언급한것처럼 마스터노드에서 추가한 노드를 보면 agent 연결방법이 나오는데, 브라우저를 통해서 설정하거나 명령어로 설정하는 방법이 있다. 나는 슬레이브 노드가 클라우드 우분투 버전이라 명령어 java -jar 를 통해 설정했다.

 * 슬레이브 노드 설정시 터미널 종료하면 같이 종료되기 때문에 백그라운드로 실행해야 한다. nohup 명령어를 통해 백그라운드로 실행함

 

 

마스터 노드와 슬레이브 노드 설정이 끝나면, Jenkins Job에서 Restrict where this project can be run을 체크한 후 설정한 슬레이브 노드 이름을 작성하면 slave 노드에서 수행되도록 job을 설정할 수 있다.

반응형

'DevOps > Jenkins' 카테고리의 다른 글

젠킨스(Jenkins) 유용한 기능  (0) 2020.02.09
Windows Jenkins에서 bash 사용  (1) 2020.01.29
젠킨스(Jenkins) 설치  (0) 2020.01.28
Jenkins home directory 변경  (0) 2020.01.03
Jenkins - Gerrit 연동  (0) 2018.07.18