※ 컨테이너 띄울 때 고정 IP 추가해서 실행시키기

send-host에서 진행 (여기서 send-host가 프론트 리버스프록시 서버)

# 각 컨테이너에서 진행
# apt update
# apt install nano -y
# apt install systemctl
# nano /etc/nginx/nginx.conf

http { } 안에 위 코드 추가

만약 위 코드 작성 후 접속 실패 시 해당 파일의 맨 마지막 줄 지워주기

# systemctl reload nginx
# systemctl restart nginx.service
# systemctl status nginx.service

 

 

※ 전체적인 토폴로지 구성

 

external-net을 sendhost(프론트) 컨테이너에 연결

ifconfig로 확인해보면 172.21(external) 대역이 잘 추가된 것을 확인할 수 있다.

 

 

1. nginx 인스턴스 생성

# 필요한 패키지 설치
# apt-get update
# apt-get install -y curl gnupg2 ca-certificates lsb-release

# ubuntui-keyring 패키지 설치
# apt-get install -y ubuntu-keyring

# nginx.list 파일 생성
# curl -s https://nginx.org/keys/nginx_signing.key | gpg --dearmor | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg > /dev/null
# 다운로드 키 올바른지 확인
# gpg --dry-run --quiet --no-keyring --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg

# 저장소 설정 (안정 버전)
# echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" | sudo tee /etc/apt/sources.list.d/nginx.list
# apt-get update

# nginx 설치
# apt-get update
# apt-get install -y nginx
# nginx -v
# systemctl start nginx

위와 같이 잘 접속되는 것을 확인할 수 있다.

 

 

2. 로드밸런싱 하도록 엔진엑스 설정 바꾸기

 

 

 

 

 

 

 

 

 

 

'네트워크캠퍼스 > JENKINS' 카테고리의 다른 글

로드밸런싱  (1) 2024.02.27
Jenkins를 활용한 무중단배포  (0) 2024.02.26
ssh 설정 및 배포 파이프라인 초기 구축  (0) 2024.02.23
Jenkins 환경설정  (0) 2024.02.23

# apt update
# apt install openssh-server
# apt install nano
# nano -l /etc/ssh/sshd_config  # 14, 38, 57라인 주석해제
# service ssh restart
# apt install openjdk-17-jdk -y
# apt install vim -y

무중단 배포를 위한 여러 서버를 생성하기 위해 위와 같은 절차를 수행한다.

Home > Manage Jenkins > System에서 위와 같이 jenkins-worker2를 추가해준다.

또한, stress_test_deploy의 설정에서 jenkins-worker2를 추가해준다. Exec command에는 jenkins-worker에서 작성했던 구문을 넣어준다.

 

 

 

 

 

 

 

 

'네트워크캠퍼스 > JENKINS' 카테고리의 다른 글

로드밸런싱  (1) 2024.02.27
nginx를 이용한 리버스 프록시  (0) 2024.02.27
ssh 설정 및 배포 파이프라인 초기 구축  (0) 2024.02.23
Jenkins 환경설정  (0) 2024.02.23
# ssh-keygen -t rsa -f ~/.ssh/id_rsa

먼저, ssh로 연결하기 위해서 위 명령어를 이용하여 ssh키를 발급한다.

위에서 확인한 공개키/개인키의 주소로 이동한 후 조회해보면 위와 같이 공개키와 개인키를 확인할 수 있다.

Jenkins는 개인키로 발급하고, 발급된 서명을 각 가상 PC에서 공개키로 검증하게 하므로 공개키 정보를 확인해야 한다.

해당키를 위와 같이 확인할 수 있고, 이 공개키를 잘 저장해둔다.

# apt install openssh-server
# nano -l /etc/ssh/sshd_config
# service ssh restart

또한, Jenkins-worker 인스턴스에서 위 명령어를 이용해 해당 파일을 수정해준다. 해당 파일의 14번, 38번, 57번 주석을 해제한다.

$ docker run -d -it --net jenkins-net --name jenkins-worker ubuntu:22.04
$ docker exec -it jenkins-worker bash
# apt update
# apt-get install vim
# apt-get install nano
# su jihyun

Jenkins가 관리할 가상 PC를 하나 더 생성해 준 후 ~/.ssh 경로에 authorized_keys 파일을 만들어준다.

.ssh 폴더는 700, authrized_keys 파일은 600으로 권한을 설정한 후 authorized 파일에 복사한 공개키를 저장해준다.

위와 같이 잘 복사된 것을 확인할 수 있다.

 

Jenkins 서버에서 ssh를 활용한 스크립트 전달이 가능하도록 플러그인을 설치해야 한다.

플러그인에서 publish 검색 후 public over ssh를 설치한다.

Manage Jenkins > System 창 하단의 Publish over SSH란으로 이동한 후 Key 부분에 아까 생성한 개인키를 붙여넣는다.

 

SSH Servers 추가를 눌러 하단에 확장시킬 수 있는 창을 이용하여 아래 그림과 같이 Jenkins가 관리한 가상 PC 정보를 입력해준다.

① Name에는 식별 가능한 이름을 작성한다.

② Hostname에는 비공인 IP를 넣어준다.

jenkins-worker의 ip를 확인 후 아래 사진의 Hostname 부분에 입력해준다.

③ Username에는 우분투 계정명을 적어준다. 

④ Remote Directory에는 홈 디렉토리를 사용한다.

우측 하단의 Test Configuration으로 확인하여 Success가 뜨면 테스트 접근에 성공한 것이다.

 

※ ssh 접근 오류가 발생하는 경우

# apt install openssh-server
# nano -l /etc/ssh/sshd_config    # 14, 38, 57 주석 해제
# service ssh start

 

 

배포 스크립트는 Item이라는 단위로 관리된다.

New Item에서 Freestyle project를 이용한다.

하단의 post-build action을 위 항목으로 선택해준다.

고급에서 Verbose output in console을 체크해야 좀 더 자세하게 로그를 볼 수 있다.

Exec command에 수행할 명령어를 작성해준다.

저장 후 콘솔 output을 확인해보면 해당 인스턴스에서 ls -a 명령을 수행한 결과를 확인할 수 있다.

위와 같이 해당 인스턴스에서 입력했을 때와 같은 결과인 것을 확인할 수 있다.

 

 

스트레스 테스트용 스프링 어플리케이션 jar(war) 배포 해보기

먼저, 위와 같이 gradlew 파일이 보이는 지점으로 이동한다.

./gradlew build 명령어를 이용해 빌드를 수행한다. (기존 build가 있다면 ./gradlew clean build)

위와 같이 BUILD SUCCESSFUL 문구를 확인할 수 있다.

dir로 확인해보면 아까는 없었던 builld 폴더가 생성된 것을 확인할 수 있다.

build > libs 폴더에 jar(혹은 war) 파일이 생성된 것을 볼 수 있다.

위와 같이 java -jar [파일명] 명령을 내리면 위와 같이 잘 접속되는 것을 확인할 수 있다.

이런 방식으로 만들어진 애플리케이션을 배포할 수 있다.

 

 

위 프로세스를 젠킨스에 구축하기

더보기

* 배포 파이프라인 구축 가이드라인 *

1. 깃허브 등의 클라우드 레포지토리에서 클론

2. 클린 및 빌드 수행

3. 빌드된 파일을 서버에서 구동

먼저, 젠킨스에서 새로운 아이템을 freestyle로 생성해준다.

위와 같이 ssh 추가 한 후 고급에서 verbose를 선택해준다.

rm -rf swu_stresstest_example                                       # 혹시 기존에 클론뜬 폴더가 존재한다면 삭제
git clone https://github.com/dev-library/swu_stresstest_example.git # 클론하기
cd swu_stresstest_example                                           # 작업 폴더를 받아온 폴더로 이동
chmod 544 ./gradlew                                                 # gradlew의 권한을 바꿔서 실행가능하게 변경
./gradlew clean build                                               # 클린 및 빌드를 통해 jar파일 생성
java -jar ./build/libs/spring_rest-0.0.1-SNAPSHOT.jar               # 생성된 jar파일로 서버 실행

 

이와 같이 터미널창에서 빌드할 때 사용할 구문을 적어주면 된다.

빌드를 해보면 클론까지는 성공했으니 java가 없다는 오류를 볼 수 있다.

# apt install openjdk-17-jdk -y
# java -version

위 명령을 통해 자바를 설치할 수 있다.

젠킨스에서 다시 빌드해보면 빌드가 잘 되고, 위와 같이 잘 접속되는 것을 확인해볼 수 있다.

 

※ 돌고 있던 스프링부트 어플리케이션 종료는 ps -ef나 kill 등의 명령어로 종료시킬 수 있다.

해당 구문을 스크립트 파이프라인 상단에 배치하면 새로운 배포 시작 전에 무조건 프로세스를 종료시키면서 시작할 수 있다.

'네트워크캠퍼스 > JENKINS' 카테고리의 다른 글

로드밸런싱  (1) 2024.02.27
nginx를 이용한 리버스 프록시  (0) 2024.02.27
Jenkins를 활용한 무중단배포  (0) 2024.02.26
Jenkins 환경설정  (0) 2024.02.23

1. Jenkins란?

지속적인 통합 및 배포를 지원하는 오픈소스 자동화 도구로 소스코드의 변경사항을 자동으로 빌드, 테스트, 배포 가능

→ 개발자들이 코드 변경 사항을 더 빠르게 통합하고, 자주 테스트하며 빠르게 배포할 수 있도록 돕는 것이 목적

1) Jenkins 주요 특징

① 지속적 통합

② 지속적 배포

③ 유연한 플러그인 시스템

④ 스크립트 기반 파이프라인

⑤ 분산 빌드

⑥ 강력한 커뮤니티 및 생태계

 

2. Jenkins 환경설정

컨테이너로 진행하기 위해 위와 같이 네트워크와 도커를 생성한 후 진행한다.

 

1) JAVA 설치

Jenkins는 Java 응용 프로그램으로 Java 8 이상을 설치해야 한다.

$ sudo apt update
$ sudo apt install openjdk-17-jdk
$ java -version    # 자바 버전 확인

 

2) Jenkins 설치

① Jenkins 레포지토리 추가

$ curl -fsSL https://pkg.jenkins.io/debian/jenkins.io-2023.key | sudo tee /usr/share/keyrings/jenkins-keyring.asc > /dev/null
$ echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] https://pkg.jenkins.io/debian binary/ | sudo tee /etc/apt/sources.list.d/jenkins.list > /dev/null

 

② Jenkins 최신 버전 설치

$ sudo apt update
$ sudo apt install jenkins
$ systemctl status jenkins    # 서비스 상태 확인

 

※ 사실 docker의 Jenkins 이미지를 받아서 컨테이너로 띄워도 된다.

 

3) Jenkins 설정

localhost:9090으로 접속해보면 위와 같은 페이지가 나온다.

위 페이지에 있는 경로파일을 조회하여 나온 암호(32글자)를 붙여넣어준다.

권장 플러그인 설치 상자를 클릭하면 설치 프로세스가 즉시 시작된다.

위와 같이 정보들을 입력하여 admin 사용자를 설정한다.

위와 같이 Jenkins URL을 설정하라는 창이 뜨고, 필드는 자동으로 생성된 URL로 채워진다.

위와 같은 창이 뜨면 설정이 완료된 것이고, start using Jenkins 버튼을 클릭하면 이전 단계 중 하나에서 만든 관리 사용자로 로그인한 Jenkins 대시보드로 리디렉션된다.

+ Recent posts