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-01172.31.0.16/28X
my-web-sub-02172.31.0.32/28X
my-was-sub-01172.31.0.48/28X
my-was-sub-02172.31.0.64/28X
my-bastion172.31.0.0/28탄력적 IP

생성된 서브넷(my-web-sub-01)

AWS 보안 그룹 설정

보안그룹 이름인바운드 규칙 허용설명
my-alb-sg-0180 from anywhereALB의 보안그룹
my-nlb-sg-018080 from web-sg-01NLB의 보안그룹
web-sg-0180 from my-alb-sg-01WEB이 되는 인스턴스의 보안 그룹
was-sg-018080 from my-nlb-sg-01WAS가 되는 인스턴스의 보안 그룹
Bastion-sgssh 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-01HTTP 허용 from anywheremy-web-group-01
my-nlb-018080 허용 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를 연동시켰다.

Leave a Reply

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다