* AWS ALB(Application Load Balancer) 종류 2가지
1. Internet-facing ALB: 외부 인터넷(퍼블릭 IP)요청 라우팅
2. Internal ALB: VPC 내부의 요청(프라이빗 IP) 만 라우팅
실습 내용
1. 외부 로드 밸런서(Internet-facing ALB)를 이용하여 퍼블릭 인스턴스 라우팅하기.
2. 내부 로드 밸런서(Internal ALB)를 이용하여 프라이빗 인스턴스 라우팅하기.

외부 로드 밸런서(Internet-facing ALB)를 이용하여 퍼블릭 인스턴스 라우팅하기
1. 서울 리전의 가용영역 2a, 2c 각각 인스턴스 생성

* 인스턴스 생성 시 사용자 데이터에 아래와 같은 코드를 입력하여 httpd를 손쉽게 실행하고, index.html에 hostname을 띄움
#!/bin/bash
yum install -y httpd
systemctl start httpd
systemctl enable httpd
echo $HOSTNAME > /var/www/html/index.html
2. 대상 그룹 생성 (web-tg)

대상 그룹을 생성하면, 아래와 같이 상태 확인(Health Check)을 하게 된다.
로드밸런서가 올바르게 라우팅 하기 위해서는 서버가 살았는지 죽었는지 꼭 확인을 해줘야하는데, AWS에서는 대상 그룹에서 인스턴스의 상태를 확인하여 라우팅하게 된다.
아직 로드밸런서에 연결하지 않았기 때문에 사용되지 않음이라고 표시되는 것을 확인하 수 있다.

3. ALB 생성

퍼블릭 인스턴스는 외부(인터넷)에 요청을 하고 응답을 받기 때문에, 인터넷 경계(Internet-facing)를 선택해준다.

현재 2a, 2c 두 개의 가용영역에 트래픽을 라우팅할 예정이다.

생성한 인스턴스의 보안 그룹을 선택한다. 나는 web-01, web-02의 보안 그룹인 elb-test-1-sg, elb-test-2-sg를 선택하였다.

아까 생성한 대상 그룹을 로드밸런서에 등록한다.

로드밸런서를 생성하게 되면
대상 그룹에 등록되 인스턴스의 상태는 초기화로 바뀌어있는 것을 확인할 수 있다!

인스턴스를 실행하고 시간이 지나면 정상이라고 뜬다.

!!! 보안 그룹, 라우팅 테이블 등등 모든 요소가 완벽하게 설정이 되어있음에도 불구하고 가끔 Unhealthy 403이 뜨는 경우가 있는데, 그럴 때는 index.html 파일이 존재하는지 꼭 확인해볼 것!!!! http 서버는 /var/www/html 디렉터리 안에 index.html이 존재해야 서버가 정상적으로 작동된다고 인식한다.
4. 로드밸런서 라우팅 테스트
로드밸런서를 이용하여 접속하기 위해서는 DNS Name을 이용하면 된다.
index.html에 각 서버의 호스트네임을 띄우도록 작성했기 때문에, 새로고침을 하면 서로 다른 ip를 갖고 있는 것을 알 수 있다. 이는 로드밸런서가 타겟 그룹에 등록된 인스턴스들에게 올바르게 라우팅하고 있다는 뜻이다.


내부 로드 밸런서(Internal ALB)를 이용하여 프라이빗 인스턴스 라우팅하기
1. 서울 리전의 가용영역 2a, 2c 각각 인스턴스 생성

2. ssh 터널링 위한 Bastion host 생성

3. 대상 그룹 생성

4. 로드밸런서 생성
프라이빗 서브넷에 라우팅해야 하기 때문에 내부 로드 밸런서를 선택한다.

VPC, 가용 영역 선택

타겟 그룹 설정 후 로드 밸런서 생성 완료

5. 내부 로드 밸런서 라우팅 테스트
프라이빗 서브넷에 생성한 인스턴스 접속을 위해 bastion 인스턴스를 사용하여 8001, 8002 포트를 열어준다.
putty 사용 시, SSH > Tunnels에서 터널링 작업을 진행할 수 있다.

cmd에서 netstat -na | more 명령어를 통해 8001, 8002 포트가 열렸는지 확인할 수 있다.

새로운 putty 창을 열고 해당 ip와 포트로 접속한다.
* Bastion을 이용한 SSH 터널링 접속 방법이 궁금하다면 아래의 포스트를 확인해주세요!
Bastion Host를 이용한 SSH 터널링 참고 포스팅: https://wooinge.tistory.com/12
NAT Gateway를 연결하여 httpd 서버를 서치하고 httpd를 실행한다.
private-01, private-02에 접속하여 /var/www/html/index.html을 생성하면 대상 그룹에서의 상태가 정상으로 표시된다.

프라이빗 서브넷은 외부 요청을 통해 접속할 수 없기 때문에 bastion host에서 curl 명령을 이용해야 한다.
'curl http://<로드 밸런서 DNS> '를 입력하면 라우팅이 잘 되고 있는 것을 확인할 수 있다!

'클라우드 컴퓨팅 > AWS 실습' 카테고리의 다른 글
[AWS] EC2 인스턴스 프라이빗 키 분실 시 대처 방법 (0) | 2025.02.03 |
---|---|
IAM 계정 생성 및 권한 설정 (0) | 2024.07.17 |
AWS EC2 Windows FTP server 제작 실습 (0) | 2024.07.15 |
[24.07.11] VPC 피어링(Virtual Private Cloud Peering) 생성/연결 및 통신 실습 (0) | 2024.07.11 |
[24.07.11] scp, ssh 터널링 이용하여 private subnet 접속 및 NAT Gateway 실습 (0) | 2024.07.10 |