소프트웨어

[AWS/EC2] 인스턴스와 및 도메인 연결 과정 가이드

TaeGyeong Lee 2023. 2. 13. 16:57

여러 번 했지만 매번 까먹는 것 같습니다. AWS 계정을 생성하고 EC2 인스턴스 생성, Route53 도메인 신청을 완료한 이후의 구축 과정입니다.

탄력적 IP (ElasticIP) 생성

생성한 EC2 인스턴스에 탄력적 IP를 생성하여 연결해보겠습니다. 탄력적 IP는 각 인스턴스에 1:1로 연결해야 합니다.

EC2 -> 네트워크 및 보안 -> 탄력적 IP -> 탄력적 IP 주소 할당을 선택합니다.

 

기본 설정을 건드리지 않고 할당을 선택합니다.

 

할당이 가능한 탄력적 IP가 생성되었습니다. 작업 -> 탄력적 IP 주소 연결을 선택합니다.

 

생성한 EC2 인스턴스 및 EC2 인스턴스의 프라이빗 IP 주소를 선택하고 연결 을 선택합니다.

 

생성한 EC2 인스턴스와 탄력적 IP 할당을 완료하였습니다.


ELB 타겟 그룹 만들기

이제 ELB 타겟 그룹을 만들어 보겠습니다. 저는 이미 만들어 둔 게 여러 개 있네요.

EC2 -> 로드 밸런싱 -> 대상 그룹 -> Create Target Group을 선택합니다.

 

Target group name만 설정하고 나머지는 기본값으로 한 후 다음을 선택합니다.

 

EC2 인스턴스를 체크한 후 Include as pending below 를 선택합니다.

 

pending 목록에 해당 인스턴스가 pending 상태로 추가된 것을 확인할 수 있습니다. Create Target Group 를 선택하여 타겟 그룹 생성을 완료합니다.

 

ELB 타겟 그룹을 정상적으로 생성하였습니다. 위의 단계를 통해 생성한 ELB 타겟 그룹이 요청을 받았을 때 EC2 인스턴스의 80번 포트로 포워딩하도록 설정하였습니다.


ELB 생성

위에서 생성한 ELB Target Group을 통해 ELB를 생성해 보겠습니다.

 

Application Load Balancer 생성을 선택합니다.

 

Load balancer name 와 Mapping 4개 모두 체크, 보안 그룹 선택합니다. Listeners and routing 에서 80 포트에 대한 ELB 타겟 그룹을 위에서 생성한 타겟 그룹으로 지정합니다. 이후 하단의 Create Load Balancer를 클릭합니다.


Route53 도메인과 ELB 연결

Route53 -> 호스팅 영역 -> 생성한 도메인을 선택합니다.

 

레코드 생성을 선택합니다.

 

단순 라우팅을 선택합니다. 빠른 레코드 생성일 경우 마법사로 전환을 클릭해주세요.

 

레코드 이름에 아무것도 입력하지 않고 레코드 유형은 A - IPv4.. 사진과 같이 위에서 생성한 로드밸런서를 선택합니다. 세팅이 완료되면 단순 레코드 정의를 선택해주세요.

스크린샷에 잘못된 내용이 있습니다!
레코드 이름을 * 이 아닌 아무것도 입력하지 마세요.

 

레코드 정의가 완료되면 레코드 생성을 선택합니다.


ACM으로 도메인에 대한 SSL 인증서 생성

ACM에서 인증서 요청을 선택합니다.

 

퍼블릭 인증서 요청을 선택하고 다음을 선택합니다.

 

완전히 정규화된 도메인 이름에 도메인을 입력한 후 요청을 선택합니다.

 

요청한 도메인에 대한 인증서가 검증 대기 중인 것을 확인할 수 있습니다. 인증서 ID 링크를 선택합니다.

 

Route53에서 레코드 생성을 선택합니다.

 

레코드 생성을 선택합니다.

레코드 생성에 오류가 발생하는 경우 Route53 콘솔로 들어가서 수동으로 CNAME을 생성하세요.
레코드 생성 -> 단순 라우팅 생성 -> 레코드 이름(CNAME 이름), 레코드 유형(CNAME), 값/트래픽 라우팅 대상(이 호스팅 영역에 다른 레코드에 대한 별칭), 레코드 선택(CNAME 값) -> 단순 레코드 정의

도메인 인증을 위한 CNAME 추가까지 완료했습니다. 발급됨 상태가 될 때까지 기다려 주세요.


로드 밸런서 리스닝 추가

로드밸런서 -> 생성한 로드밸런서 선택 -> 리스너 -> 리스너 추가를 선택합니다.

 

Protocol : HTTPS (443) 설정 후 default action을 foward to 로드밸런싱 타겟으로 지정해주세요. Secure listener settings에선 아무거나 선택해도 괜찮습니다. Default SSL/TLS certificate에 위에서 발급받은 인증서를 선택해 주세요.

 

이제 80포트에 접속을 시도하면 443 포트로 리다이렉트하도록 설정해주겠습니다. HTTP : 80 규칙 -> 규칙 보기/편집을 선택합니다. 아래와 같이 편집 아이콘을 선택해주세요.

 

아래와 같이 443포트로 리다이렉트 되도록 규칙을 편집 후 업데이트를 선택합니다.

이로써 모든 세팅이 완료되었습니다. Route53, ACM, ELB, 탄력적 IP를 통해 EC2 인스턴스에서 80 포트를 열었습니다.

80포트 어플리케이션을 구동하는 것을 추천하지 않습니다.
EC2 인스턴스에서 ngix 등의 프록시 서버를 구축하는 것을 추천합니다.

참고) 우분투 서버 포트 포워딩

Node.js 서버 어플리케이션의 경우 80 포트 어플리케이션 구동을 할 수 없습니다. 따라서 어플리케이션을 다른 포트로 구동한 다음 우분투 서버에서 80포트 요청 시 서버 어플레케이션 포트로 포워딩 하도록 설정해 보겠습니다.

포트 포워딩 목록 조회

sudo iptables -t nat -L --line-numbers

80 포트 포워딩 추가

sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 포워딩받는포트

포트 포워딩 삭제

sudo iptables -t nat -D PREROUTING 포워딩테이블넘버