Master 서버와 Slave 서버는 서로 다른 2개의 서버에서 진행하였습니다.
Master 서버는 jenkins가 구동되고 있는 서버이며 Slave 서버는 jenkins가 설치되어 있지 않습니다.(Java JDK는 설치)
Master / Slave 분산 구성하기 전에 초기 설정이 되어 있지 않다면 이전 글을 참고해주세요.
이전글 : 2020/03/08 - [Web] - jenkins 초기 설정
1. Master(마스터) 서버에 공개키와 개인키 생성(RSA 키 생성)
- Master 서버와 Slave 서버를 ssh 통신할 수 있도록 ssh 키 설정을 한다.
- 먼저 마스터 서버(jenkins가 실제 작동하고 있는 서버)에 공개키와 개인키를 생성한다.
- 통상 홈 디렉토리에 .ssh 폴더를 생성하여 진행한다.
- $ssh-keygen -t rsa 명령어를 통해 키를 생성
( * 여러가지 질문이 나오지만 다 엔터를 눌러 넘어갑니다.)
## 홈 디렉토리로 이동
$cd ~
## .ssh 폴더 생성
$mkdir .ssh (홈 디렉토리로 이동했을 때) 또는 $mkdir ~/.ssh
## RSA 키 생성
$ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/~/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /~/.ssh/id_rsa.
Your public key has been saved in /~/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:~~~ [username]@[hostname]
The key's randomart image is:
+---[RSA 2048]----+
| *+=..=++.|
| . . EO+*O *. |
| . o=.*o.O |
| . O.. |
| . S + |
| o . .o |
| o . .o.o . |
| . .o+ o |
| .+o. |
+----[SHA256]-----+
## 생성된 공개키 확인
$cat id_rsa.pub
ssh-rsa AAAAB~~~~~~~~~~~~~~~~~~ [username]@[hostname]
## 생성된 비밀키 확인
$cat id_rsa
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZ~~~~~~~~~~~~~~~~~~~~~
....
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-----END OPENSSH PRIVATE KEY-----
2. Slave(슬레이브) 서버에 Master 서버에서 만든 공개키 등록
- Slave 서버에서 Master 서버에서 SSH 접속을 허용해야 접속이 가능하므로 Master 서버에서 생성한 공개키를 등록한다.
- Slave 서버에도 홈 디렉토리에 .ssh 폴더를 생성한다.
- .ssh 폴더에 authorized_keys 파일을 만들어 Master 서버에서 만든 공개키를 넣어 준다.
## Slave 서버에서 홈 디렉토리 이동
$cd ~
## .ssh 폴더 생성
$mkdir .ssh (홈 디렉토리로 이동했을 때) 또는 $mkdir ~/.ssh
## authorized_keys 생성
$vi authorized_keys
ssh-rsa AAAAB~~~~~~~~~~~~~~~~~~ [username]@[hostname]
####### 간단한 vi 편집기 사용법 #######
1. 콘솔창/터미널창 에서 [$vi 파일명]으로 파일 생성
2. esc 누르고 i 입력 후 편집 시작
3. 작성 후 esc 누르고 :wq!(저장한다는 뜻) 입력 후 엔터
##################################
## authorized_keys 확인
$cat authorized_keys
3. jenkins 홈페이지에 비밀키 등록
- jenkins 메인 -> Credentials -> System -> Global credentials (unrestricted)
- 화면 좌측에 [Add Credentials] 클릭
- 각각의 정보를 입력합니다.
kind | SSH를 통해 접속할 것이므로 SSH Username with private key 선택 |
ID | 원하시는 아무 이름 작성 |
Description | 설정하는 Credentials 설명 |
Username | 접속하려는 Slave 서버의 계정(username) |
Private Key | Master 서버에서 생성한 비밀키 입력($cat id_rsa 하여 나온 값 전체) |
- 등록완료
4. Slave Node 추가
- jenkins 메인 -> jenkins 관리 -> 노드 관리 -> 신규 노드
- 노드명을 작성 후 Permanenent Agent 체크 후 OK 클릭
- 각 정보를 입력
Name | Slave Node 이름 |
Description | (선택사항) 설명란 |
# of executors | 1 |
Remote root directory | Credentials 등록할 때 입력한 username의 기본 폴더 (즉, slave 서버에서 사용할 디렉토리) |
Labels | Item 등록에 필요(예제에서는 사용하지 않았습니다.) |
Usage | Use this node as much as possible (체크) |
Launch method | Launch slave via SSH - Host : 접속할 Slave 서버 IP 주소 - Credentials : 3번에서 등록한 것 선택 - Host Key Verification Strategy : Known hosts file Vertification Strategy - PORT : 고급 버튼을 클릭하면 나오는데, 기본은 22입니다. (따로 포트번호를 설정하지 않는다면 변경하지 않는다.) |
Availability | Keep this agent online as much as possible |
- 작성이 완료되었다면 "Save" 버튼을 누른다.
5. Slave Node 추가 완료
- 아래와 같이 나오면 slave node(노드)가 추가된 것이다.
- 만약 그림과 같이 나오지 않고, 모니터에 빨간색 X가 있다면 연결이 실패한 것입니다.
- Slave Node 클릭 -> 로그 -> 에러코드 확인
- 에러코드를 확인 후 재설정을 해주시면 됩니다.
'Infra > jenkins' 카테고리의 다른 글
jenkins JOB(Item) 생성 - Gradle 사용 (0) | 2020.03.15 |
---|---|
jenkins 초기 설정 (0) | 2020.03.08 |
jenkins 설치하기(Window, tomcat war 배포) (0) | 2020.03.04 |