WEB : NginX 1.25
WAS : Tomcat 10.1.17
사용한 AWS 리소스
- VM 인스턴스
- ALB
- NLB
- VPC
구현 하려는 아키텍쳐

네트워크 설정 개요
기존 디폴트 VPC를 그대로 사용하고 서브넷의 범위를 나누어 주었다.
VPC : 기존 디폴트 VPC 사용
리전 : ap-northeast-2 (서울)
서브넷 | IPv4 CIDR | 공인IP |
my-web-sub-01 | 172.31.0.16/28 | X |
my-web-sub-02 | 172.31.0.32/28 | X |
my-was-sub-01 | 172.31.0.48/28 | X |
my-was-sub-02 | 172.31.0.64/28 | X |
my-bastion | 172.31.0.0/28 | 탄력적 IP |

생성된 서브넷(my-web-sub-01)
AWS 보안 그룹 설정
보안그룹 이름 | 인바운드 규칙 허용 | 설명 |
my-alb-sg-01 | 80 from anywhere | ALB의 보안그룹 |
my-nlb-sg-01 | 8080 from web-sg-01 | NLB의 보안그룹 |
web-sg-01 | 80 from my-alb-sg-01 | WEB이 되는 인스턴스의 보안 그룹 |
was-sg-01 | 8080 from my-nlb-sg-01 | WAS가 되는 인스턴스의 보안 그룹 |
Bastion-sg | ssh from anywhere | 배스천(점프 서버)의 보안 그룹 |
VM 생성 목록

WEB, WAS, 배스천 서버를 각각 생성했다. OS와 머신유형은 모두 동일하다.
OS : RHEL8
머신 유형 : t2.micro
my-web-01에 NginX 1.25를, my-was-01에 Tomcat10.1.17을 설치하였다.
미들웨어 설치에 대한 내용은
https://jparkk.tistory.com/m/40
https://jparkk.tistory.com/m/41
위의 두 링크를 참고하여 실시하였다.
로드밸런서 생성 내용
로드 밸런서 이름 | 보안그룹 규칙 | 대상 그룹 |
my-alb-01 | HTTP 허용 from anywhere | my-web-group-01 |
my-nlb-01 | 8080 허용 from web-sg-01(WEB 인스턴스의 보안 그룹) | my-was-tg-01 |

생성된 ALB 콘솔 화면

ALB의 대상그룹 콘솔 화면. 80포트로 상태 검사가 정상인 모습(NginX 실행 시)

생성된NLB 콘솔 화면

마찬가지로 대상그룹 안에있는 VM에 설치된 Tomcat을 실행하면 헬스체크가 정상으로 뜬다.
WEB과 WAS 대상그룹이 다 헬스체크가 떳다면 내부에서 연동은 제대로 되었다는 뜻이다.
배스천으로 WEB, WAS 접속
그럼 어떻게 배스천 호스트로 WEB, WAS 인스턴스에 접속을 해 어떻게 저렇게 연동을 시켰는지 보여주겠다.
연동 과정
배스천 호스트에는 일단 키페어가 할당되어있다. 이 키페어를 할당을 해주면, 본인의 로컬 컴퓨터에 이 키페어의 개인키인 .pem 파일이 다운로드 된다. 본인은 이 .pem 파일을 적당한 디렉토리에 옮겨놨다.
필자가 만든 키 페어 이름은 forPJ이다.
본인 컴퓨터는 Window 11이므로 윈도우 기준으로 설명한다.
명령 터미널 창이나 윈도우 Powershell을 띄워서 ssh -i .pem파일 위치 ec2-user@<점프 서버 ip 주소>를 입력하고 엔터를 누른다.
ssh -i C:/path/to/forPJ.pem file ec2-user@<점프 서버 ip 주소>

점프 서버에 .pem 키를 옮기고, 권한을 설정해준 뒤, WEB, WAS가 되는 ssh 접속을 해준다.
vi forPJ.pem
chmod 400 forPJ.pem
ssh -i forPJ.pem ec2-user@<프라이빗 EC2 인스턴스 주소>

WEB 인스턴스에 접속한 CLI 화면 모습이다. WAS인스턴스에 접속하고 싶으면 IP 주소만 바꿔주면 끝
WEB 인스턴스에서 nginx.conf 파일 수정
vi /usr/local/nginx/conf/nginx.conf
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
proxy_pass http://<NLB의 DNS 주소>:8080;
}

그리고 각각의 인스턴스에서 Tomcat과 NginX를 실행해주면 된다.

WAS EC2 인스턴스에서 Tomcat 실행

WEB EC2 인스턴스에서 NginX 실행
웹 브라우저에 ALB의 DNS 주소를 입력한다.
최종 연동 결과

AWS 에서 WEB과 WAS를 연동시켰다.