Classic Load Balancers (v1)
- TCP (4계층), HTTP & HTTPS (7계층)을 지원
- 상태 확인 (Health checks) 도 TCP 기반이거나 HTTP 기반
- 클래식 로드 밸런서는 호스트 명에 고정되어 있음
예) XXX.region.elb.amazionaws.com - 예) HTTP listenser에서 클래식 로드 밸런서에 연결하는 클라이언트로
내부적으로 해당 CLB는 EC2 인스턴스에 트래픽을 리디렉션
<CLB 실습>
- CLB를 생성하기 위해 인스턴스 실행
Amazon Linux 2 - t2.micro - 사용자 데이터 입력 - 새 보안 그룹 (SSH, HTTP) - 인스턴스 시작
#!/bin/bash
# Use this for your user data (script without newlines)
# install httpd (Linux 2 version)
yum update -y
yum install -y httpd.x86_64
systemctl start httpd.service
systemctl enable httpd.service
echo "Hello World from $(hostname -f)" > /var/www/html/index.html
- 로드 밸런서 콘솔에서 첫 번째 로드 밸런서 생성
네 가지 옵션이 가능
1) 애플리케이션 로드 밸런서
2) 네트워크 로드 밸런서
3) 게이트웨이 로드 밸런서
4) 클래식 로드 밸런서
이 중에서 클래식 로드 밸런서 생성 클릭
이름을 my-demo-clb로 하여 MyDefault VPC 내에 생성하며 CLB가 HTTP 트래픽을 허용할 수 있게 포트 80을 허용
이럴 경우 포트 80을 통해 EC2 인스턴스로 가게 됨
다음으로 보안 그룹 설정으로 클래식 로드 밸런서를 위한 새로운 보안 그룹인 my-first-load-balancer-sg를 생성하여
모든 곳에서 오는 HTTP 트래픽을 허용하기 위해 HTTP 유형의 포트 80을 열어줌
이때 클래식 로드 밸런서는 IPv6를 지원하지 않기 때문에 IPv6 없이 0.0.0.0/0만 나타남
상태 검사를 지정하기 위해 상태 확인은 HTTP 프로토콜과 80번 포트에 있는 EC2 인스턴스를 확인하며, 경로는 /index.html
그러므로 이것이 정상 작동하는지 보기 위해 EC2의 public IP에 /index.html을 붙여 열게 되면 Hello World라는 문구가 표시
상태 확인에는 타임아웃을 4초로 구성하고 상태 확인 빈도는 5초로 지정하며
2회의 실패를 할 경우 인스턴스를 비정상으로 판단하게 하며, 3회의 성공을 할 경우 인스턴스를 정상으로 간주하도록 변경
이 후 상태 확인에 방금 생성한 EC2 인스턴스를 추가한 후 생성
- 클래스 로드 밸런서 작동 확인
주소창에 클래식 로드 밸런서의 DNS 이름을 입력해 열어 주면 EC2 인스턴스에서 Hello World를 표시해주므로
클래식 로드 밸런서가 제대로 작동하고 있다는 뜻
만약 보안 그룹에서 HTTP 규칙들을 제거하면
해당 보안 그룹에 유효한 포트 80이 없어 인스턴스의 상태가 비정상이므로 공공 인터넷은 물론 개인 인터넷에서도 접근을 차단
- 보안 그룹을 통한 보안 강화
위의 경우 EC2 인스턴스로의 접속이 직접적으로도, 클래식 로드 밸런서를 통해서도 가능하므로
이런 경우를 위해 보안 그룹 내의 설정을 통해 보안을 강화할 수 있음
EC2 인스턴스의 보안 그룹에서 인바운드 규칙을 80번 포트에서 HTTP를 허용하도록 지정하되 모든 주소를 허용하는 게 아니라,
로드 밸런서의 보안 그룹에서만 허용하도록 하여 ELB는 인스턴스에 접근이 가능하지만, 유저들은 인스턴스 접근을 차단함
이 후 Pulic IP를 다시 열게 되면 무한 로딩이 되는 것을 볼 수 있음
- 다수의 인스턴스를 통해 로드 밸런서의 진정한 파워 보기
EC2에서 원래 존재하던 인스턴스를 우클릭한 후, 인스턴스 시작을 눌러 이전과 모두 동일하게 두 개의 인스턴스 생성
이제 세 개의 EC2 인스턴스를 가지며 각 인스턴스들은 Hello World 문구를 가지게 됨
이 인스턴스들을 클래식 로드 밸런서에서 인스턴스 편집을 통해 추가 등록하면 클래식 로드 밸런서가 세 개의 인스턴스가 등록됨
이로 인해 새로 고침을 할 때마다 새로운 EC2 인스턴스가 응답하기 때문에 매번 새로운 개인 IP가 Hello World를 띄우게 됨
즉, 브라우저를 새로 고침할 때마다 요청이 다른 EC2 인스턴스로 보내진다는 뜻으로 로드 밸런서가 요청을 분산시키고 있다는 것
- 다음 새로운 로드 밸런서 생성을 위해 EC2 인스턴스는 놔두고 CLB만 삭제
'Cloud > AWS' 카테고리의 다른 글
[SAA] NLB (0) | 2022.03.04 |
---|---|
[SAA] ALB (0) | 2022.03.04 |
[SAA] ELB 개요 (0) | 2022.03.03 |
[SAA] 고가용성 및 스케일링성 (0) | 2022.03.02 |
[SAA] EBS vs EFS (0) | 2022.01.24 |