CS/데이터베이스
Cloud - 운영 환경 구성 4
RangA
2023. 6. 17. 22:12
Security Group
보안 그룹(Security Group)
- AWS에서 임대한 인스턴스의 가상 방화벽
- 인바운드(Inbound)와 아웃바운드(Outbound)에 대한 규칙을 설정할 수 있음
- 인바운드 : 인스턴스로 들어가는 트래픽
- EC2 인스턴스로 들어오는 트래픽에 대한 규칙
- 인바운드 규칙에 허용되지 않은 규칙은 인스턴스로 접근하지 못하도록 필터링
- EC2 인스턴스를 생성하면 기본적으로 SSH 접속을 위한 SSH 규칙만 생성되어 있음
- 아웃바운드 : 인스턴스에서 나가는 트래픽
- EC2 인스턴스에서 나가는 트래픽에 대한 규칙
- EC2 인스턴스를 생성하면 기본적으로 나가는 모든 트래픽을 허용
- 인바운드 : 인스턴스로 들어가는 트래픽
- 인스턴스 탭의 우측에서 해당 인스턴스가 어떤 보안그룹에 속해 있는지 확인할 수 있음
- 보안그룹 탭에서 인스턴스 탭에서 확인한 보안그룹을 클릭하면 해당 보안그룹의 규칙을 설정할 수 있음
- 인바운드 규칙을 설정
- 인바운드 규칙은 필요에 따라 규칙을 추가하고 제거하는 과정이 자유로움
- 규칙 추가 버튼을 눌러 규칙을 추가할 수 있음
- EC2 인스턴스에서 실행중인 서버가 인터넷에서 요청을 받을수 있도록 인바운드 규칙을 설정해야 함
- 인바운드유형과 이때 허락하는 포트의 범위를 지정해야 함
- 보안그룹은 소스에 따라 인바운드/아웃바운드 요청을 허락할 수도, 거절할 수도 있음
- '규칙 저장' 버튼을 누르면 보안 그룹을 설정하는 과정이 완료됨
- 인바운드 규칙 수정을 완료하면 8080 포트로 접속 할 수 있는 것을 브라우저에서 확인 할 수 있음
Shell Script
Shell Script
java -jar build/libs/[서버 코드 디렉터리]-0.0.1-SNAPSHOT.jar
- 해당 명령어로 실행하였을 때 foreground에서 동작을 해서 실행시킨 창을 항상 열어놔야 하는 단점이 있으며, Jenkins 같은 곳에서 배포된 jar파일을 실행했을 때도 문제가 되기도 함
- 만약 애플리케이션이 background에서 실행도 가능해야 하고 애플리케이션이 제대로 실행되고 있는지 체크를 해야 한다면 이를 편하게 하기 위한 실행 스크립트를 만들어야 함
- 이 때 사용되는 것이 Shell Script
- 셀 스크립트는 셀이나 명령 중 인터프리터에서 돌아가도록 작성된 스크립트
- 운영체제를 위한 스크립트라고 생각하면 됨
- 셸 스크립트에 경우 한번 작성하면 재작성하는 일이 매우 적음
Spring Boout 백 그라운드 실행
- 셸 스크립트는 실행 명령을 미리 작성해 둔 것이어서 ".sh"라는 파일 형태로 만들어 사용함
$ nano restart.sh // 에디터로 파일을 생성한 후 아래 내용을 붙여넣기 함
================================================================================
#!/bin/bash
# [서버 코드 디렉터리]-0.0.1-SNAPSHOT.jar가 실행 중이라면 프로세스를 종료합니다.
ps -ef | grep "[서버 코드 디렉터리]-0.0.1-SNAPSHOT.jar" | grep -v grep | awk '{print $2}' | xargs kill -9 2> /dev/null
# 종료 이력을 파악하여 적절한 문구를 출력합니다.
if [ $? -eq 0 ];then
echo "my-application Stop Success"
else
echo "my-application Not Running"
fi
# [서버 코드 디렉터리]-0.0.1-SNAPSHOT.jar를 다시 실행하기 위한 과정을 진행합니다.
echo "my-application Restart!"
echo $1
# nohup 명령어를 통해 백그라운드에서 [서버 코드 디렉터리]-0.0.1-SNAPSHOT.jar를 실행합니다.
nohup java -jar build/libs/[서버 코드 디렉터리]-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev > /dev/null 2>&1 &
- 리눅스에 위와 같이 파일을 저장하고, 아래 명령어를 통해 실행 권한을 부여함
chmod 755 restart.sh
- 위 명령어를 수행하였으면 아래 명령어를 통해 실행이 가능함
- 경우에 따라 권한 이슈로 실행되지 않는 경우가 있는데, 이 경우 sudo를 붙여 실행하면 오류 없이 실행이 됨
./restart.sh
- 위의 셸 스크립트는 [서버 코드 디렉터리]-0.0.1-SNAPSHOT.jar를 종료하고, 다시 실행하는 과정이 적혀 있음
- 빌드 후 빌드 결과물을 실행할 때에, 이미 동일한 프로젝트가 실행 중인 경우 해당 프로세스를 종료(kill)한 후 실행하도록 작성되었음
- 위의 코드는 각 단계를 매우 간단하게 적어놓았기 때문에 애플리케이션 실행에 대한 모든 로그를 남기진 않음
- 셸 스크립트를 실행한 후 서버가 실행되지 않는다면 빌드 여부, 빌드 결과물 이름과 셸 스크립트 비교, 셸 스크립트 전체가 저장되어 있는지, 셸 스크립트의 저장 위치에서 빌드 파일에 접근이 가능한지 수동으로 확인해야 함