2023-12-02 12:00:19
728x90
728x90

이번 글에서 구성할 아키텍처

1. 로드 밸런서란?

사용자가 늘어나면 1대의 웹 서버로는 요청을 깔끔하게 처리할 수 없는 시점이 온다. 이럴 때는 웹 서버를 여러 대 준비해서 성능을 높이는 방법을 이용할 수 있다. 이렇게 성능을 향상하는 방식을 스케일 아웃(scale-out)이라 부른다. 그러나 단순히 웹 서버만 늘리면 송신 대상지의 PC브라우저나 모바일에서는 새로운 웹 서버를 자동으로 이용하지 못한다. 따라서 스케일 아웃을 할 때는 서비스를 제공하는 측에서 무언가의 시스템을 추가로 제공해야 한다.

 

1.1. 로드 밸런서의 역할

로드 밸런서는 이러한 스케일 아웃을 수행하는 방법의 하나다. 로드 밸런서의 주요 역할로는 다음과 같은 세 가지를 꼽을 수 있다.

  • 요청 분산: 인터넷으로부터 전송된 요청을 여러 웹 서버에 균등하게 분산
  • SSL 처리: 송수신하는 테이터를 암호화 처리. 인터넷으로부터의 접근 중, 안전하게 정보를 보내기 위해 HTTPS라는 프로토콜로 통신할 때가 있는데 이 통신에서 SSL을 이용한다.

  • 부정 요청 대응: 올바른 요청이 아닌, 예상치 못한 작동을 일으키는 부정한 요청이 들어올 가능성을 대응

1.2. AWS에서 제공하는 로드 밸런서

1.2.1. Application Load Balancer(ALB) : HTTP나 HTTPS를 이용한 접근을 분산하는 데 최적화된 로드 밸런서

1.2.2. Network Load Balancer : 기본적인 분산처리 기능만을 제공하지만, 다양한 통신 프로토콜에 대응하는 로드 밸런서

1.2.3. Classic Load Balancer : ALB나 Network Load Balancer가 등자하기 전에 쓰이던 오래전의 로드 밸런서

 

2. 로드 밸런서 설정 항목

항목
이름 my-elb
VPC my-vpc
가용 영역 my-subnet-public01
my--subnet-public02
보안 그룹 default
my-sg-elb
대상
그룹
이름 my-tg
프로토콜 HTTP
포트 3000
등록 완료 타깃 my-ec2-web01
my-ec2-web02

 

2. 로드 밸런서 생성하기

EC2 서비스 -> Load Balancing -> Load Balancers -> Create load balancer

로드 밸런서 타입은 ALB

로드밸런서 설정 항목대로 로드밸런서 네임 입력

VPC 지정 및 가용 영역 지정, Subnet은 public01,02로 지정

보안 그룹은 만들었던 my-sg-elb 그룹과 default

타겟 그룹을 지정하기 전에 만들어 둔게 없으니 Create target group로 이동

타겟 타입은 인스턴스, 타겟 그룹 이름 입력

설정 항목대로 3000번 포트 입력

Health check 프로토콜은 HTTP, 경로는 최상위 디렉토리 -> Next

타겟 인스턴스 지정, my-ec2-web01,02 지정 후 Include as pending below

화면 아래로 가서 Create target group

다시 로드밸런서 생성 콘솔로 돌아와서 타겟 그룹 새로고침 후 생성한 타겟 그룹 지정 

하단 Create load balancer

CMD창을 2개 켜서 ssh web01,02에 접속해서 최상위 디렉토리에 index.html을 만든다 만드는 이유는 위에 Health check 프로토콜은 HTTP이고 경로는 최상위 디렉토리이기 때문이다.

index.html 내용 간단하게

아마존 리눅스 2에 미리 설치된 파이썬을 이용해 HTTP 서버를 기동한다.

EC2 서비스 -> Load Balancing -> Target Groups -> 타겟 그룹 체크 박스 -> Helath status가 Healthy 상태인지 확인 바뀌는데 시간이 조금 걸린다.

728x90