본문 바로가기

Cloud + Infra

[AWS] ALB로 EC2 인스턴스 번갈아 접속하기

구성할 아키텍처

 


 

1️⃣ VPC 생성

VPC : 가상 사설망

CIDR 표기법으로 해당 네트워크 영역을 지정

 

 

2️⃣ Subnet 생성

subnet : 서브넷은 VPC의 IP 주소 범위이다. VPC 안에 서브넷을 여러 개 추가하여 내부를 논리적으로 쪼갠다. Subnet은 각 AZ에서 Public subnet 하나와 Private 서브넷 하나로 나눈다.

 

 

3️⃣ IGW 생성

Public 서브넷은 외부에서 내부로의 접근이 가능해야 한다. 이는 Internet Gateway: IGW와 연결하여 Private 서브넷으로 들어오고 나갈 수 있는 통로가 되도록한다.

여기서 IGW는 EC2 인스턴스와 인터넷 사이 통신을 가능하도록 하는 역할이다.

즉, 트래픽이 외부에서 들어오고 외부로 나가는 것을 가능하게 하는 역할

 

 

4️⃣ Routing Table 생성

네트워크 통신이 이루어질 때, 데이터들은 라우터를 거쳐가게 된다. 라우터는 해당 데이터들의 경로를 지정해주는 역할을 하고, 경로들을 라우팅 테이블에 저장시킨다. 데이터들은 라우팅 테이블의 저장되어있는 경로를 따라 원하는 목적지를 찾아가게 된다.

Routing-table for Public-subnet

  • 모든 트래픽이 IGW를 통해 외부와 연결됨을 확인
  • 두개의 Public-subnet과 연결됨을 확인

Routing-table for Private-subnet

  • 두개의 Private-subnet과 연결됨을 확인

 

⛔️ Public Routing-table에 0.0.0.0/0 열어주기

  • 이거 때문에 ssh 접속이 되지 않았었음
  • 0.0.0.0/0 = 모든 IP, 네트워크에 액세스할 수 있는 곳이면 어디에서나 접근 가능을 의미
    • 라우팅 테이블에서 사용되는 경우, 기본 게이트웨이를 식별하는데 0.0.0.0에 대한 경로가 기본 경로

 

 

서브넷 연결

pub, prv 라우팅테이블에 해당하는 서브넷 연결

Public 도 마찬가지

 

VPC에 IGW연결

 

 

 

5️⃣ ALB, WAS, WEB 서버를 위한 보안그룹 생성

웹 접속이므로 HTTP 유형 80 포트로 모두 접속

SSH 접속이 가능하도록

 

⛔️ 내 IP가 바뀔경우, SSH 접속 불가

보안그룹 다시 설정해줘야함!

 

 

6️⃣ EC2 인스턴스 생성

EC2 : 클라우드의 가상서버

📌 WEB 서버 - 정적인 컨텐츠 (HTML, CSS, Image 등)을 요청받아 처리
📌 WAS 서버 - 동적인 컨텐츠 (JSP, ASP, PHP 등)을 요청받아 처리 - WEB 서버와 DBMS 사이에서 동작하는 미들웨어로써, 컨테이너 기반으로 동작

1. 키페어 생성

2. WEB VM 생성

WEB1
WEB2

📌 t3a.micro
- 프리티어를 쓰는 경우에는 t2 계열의 인스턴스가 추천되지만, 프리티어를 쓰는게 아니라면 성능, 비용 절감의 효과에 따라 t3 계열 인스턴스가 더 추천된다.
- t3계열의 경우 t3와 t3a가 나눠지는데, 두 계열 성능은 크게 다르지 않고 가격은 t3a가 더 싸다.

 

 

 

7️⃣ ALB 생성

ALB ?

OSI 모델의 7계층인 애플리케이션 계층에서 작동

웹 서비스에 걸리는 부하를 분산해주는 로드 밸런서 → 안정성과 고가용성을 높임

HTTP(웹 서버) 접속을 분산시키기 위해 ALB 생성

1. target group 구성

2. ALB 생성

 

 

3. Scheme 설정

  • LB를 생성하면 선택한 Subnet에 LB Node가 생성된다.
  • 인터넷을 통해 웹 서버에 접근해야하는 경우, Private Subnet을 선택해버리면 Load Balancer Node가 Private Subnet에 생성되기 때문에 외부와 통신할 수 없는 상황이 발생하여 웹 서버에 접근할 수 없다.

 

 

 

 

8️⃣ 테스트 및 결과

ALB를 만들고 EC2와 연결됨을 확인하는 테스트

web1, web2 인스턴스 둘다 각각 ssh 접속 및 nginx 설치 및 실행을 진행

1. ssh 접속

ssh -i [키페어 파일 경로] [username]@[인스턴스 public ip주소]

# ssh -i "lena-key.pem" ubuntu@3.34.97.134
ssh -i "lena-key.pem" ubuntu@3.36.130.208

2. nginx 설치 및 실행

# nginx 설치
sudo apt install nginx

# nginx 시작
sudo service nginx start

# 시작 상태 확인
sudo service nginx status

3. public ip로 접속하여 확인

4. ALB로 접속하여 확인

  • ALB가 정상적으로 active되는지 확인 (provisioning → active)

  • 표시된 DNS로 접속

  • 새로고침할때마다 동일한 DNS에서 web1, web2 인스턴스가 번갈아가며 접속되어짐