CI CD InfraStructure/Jenkins

[Jenkins] Multi nodes 구성 (Master/Slave)

유혁스쿨 2023. 7. 12. 14:54
728x90
반응형

Jenkins 서버에 새로운 Worker노드를 추가해서 Master노드가 가지고있는 작업을 분할하는 환경을 구축한다.

 

지금까지 단일서버로 구성한 환경에서 사용해왔다 이것을 Jenkins Master라고 부른다.

Jenkins Master에서 사용자 요청에 의해 빌드/배포 하는 작업을 자신에게 추가된 다른 Slave Node에 작업을 요청함으로써 업무에 대한 분담을 처리하는 구조이다.

 

Slave는 Windows Linux Docker컨테이너 형태로 구성할 수 있다.

 

  • Remote에서 실행될 수 있는 Jenkins의 Wokrer node
  • Jenkins Master의 요청을 받아 처리
  • Master로 부터 전달된 Job 실행

 

jenkins-node1 Docker 서버 실행

docker run --privileged --name jenkins-node1 -itd -p 30022:22 -e container=docker -v /sys/fs/cgroup:/sys/fs/cgroup --cgroupns=host edowon0623/docker:latest /usr/sbin/init

 

 

 

Docker 서버에 JDK 설치

 

clear명령

# yum install -y ncurses git

 

 

설치 가능한 jdk 검색

# yum list java*jdk-devel

 

 

11버전 설치

# yum install -y java-11-openjdk-devel.x86_64

 

 

Jenkis Master 서버 구동

새로운 명령프롬트를 열고 아래 명령어를 실행한다.

> docker exec -it jenkins-server bash

 

 

jenkins-node1 서버의  host ip address를 확인한다.

# hostname -i

 

 

JenkinsMaster 서버에서 해당 서버로 접속 시도

$ ssh root@172.17.0.4

 

 

현재 가지고 있는 node1서버의 패스워드 key값 복사

# exit

$ ssh-keygen

 

$ ssh-copy-id root@172.17.0.4

 

Master서버에서 node1서버에 접속시 패스워드 없이 바로 접속이 가능해진다.

 

Jenkins에서 Node 등록

 

1. node관리 이동

Jenkins관리 - Nodes and Clouds 

 

 

2. 우측 상단의 New Nodes 버튼 클릭

 

 

3. Node 이름 입력 및 Permanene Agent 선택 후 Create

 

4. Number of executors : 동시에 작업할 수 있는 Job의 갯수를 5로 지정

 

 

5. Remote root directory 설정

Jenkins Node1 서버에서 해당 디렉토리를 생성해야한다.

 

 

6. Labels 

다른 쪽에 있는 Jenkins 프로젝트가 지금 추가하고 있는 Node를 지정할 때 사용할 일종의 키값

 

 

7. Usage : Use this node as much as possible 선택

 Jenkins마스터가 해당 노드를 어떤 규칙에 의해서 선택할지 - 선택 가능한 상태면 선택 가능하도록 설정

 

 

8. Launch method : Launch agents via SSH 선택

 

 

9. Host 및 Credentials 추가

host : JenkinsMaster에서 JenkinsNode1로 접속할 때 사용했던 ip Address 입력

Credentials 추가

(password는 계속 사용해온 대문자P로 시작하는 password를 입력해준다.)

 

 

생성한 Credential로 선택한다.

 

10. Port 지정

Host Key Verification Strategy란 밑의 고급 버튼을 클릭하고 22를 입력한다.

 

전체 설정 확인 후 저장

 

생성된 Node 목록 확인

 

 

slave1을 클릭후 다시 돌아오면 정상적으로 생성되었다면 Architecture정보가 출력된다.

 

 


프로젝트 빌드해보기

빌드 할 프로젝트의 구성에서 설정

위와 같이 설정하면 해당 프로젝트를 slave1 노드에서만 빌드하겠다는 의미이다.

728x90
반응형