DevOps/AWS

[AWS] 로드밸런서 (L4, L7)의 동작원리와 ALB 사용하기

세리둥절 2023. 3. 30. 14:37
반응형

로드밸런싱 ELB = Elastic Load Balancer

지금이야 유명하지 않으니까 한두명이 들어오겠지만, 클라이언트 수가 늘어났을 때 서버가 하나만 있으면 감당하기가 어렵다
t2.micro 서버로는...

1) 서버 자체의 용량을 올릴 수 있다
2) t2.micro 서버를 여러개 써서 트래픽을 분산시킬 수 있다

=> 1번이 훨씬 비싸다. 저렴한거 여러개 쓰는게 비용대비 효과가 좋다

 

 

종류가 2가지가 있다 L4와 L7

요즘에는 L4보다는 L7을 많이 쓰고, L7을 Application Load Balancer라고 ALB라고 많이 부른다
스마트하게 분기해야하는 경우가 점점 더 많아지고 있다

< L4 > Classic Load Balancer라고 부르기도 한다

 

< L7 > 

 

 

ALB 사용하기 전에 대상 그룹 만들기

대상 그룹 = EC2 서버들의 집합체
EC2 화면에서 왼쪽 아래에 "대상 그룹"이라고 있다
지금은 상관이 없는데 마이크로서비스를 하게 되면 대상 그룹별로 지정하게 된다

우리가 어디 포트로 보낼지 결정하고 create target group 만들자

헬스체크도 해야한다. 한 번 두드려봐야되겠다. 문제가 있으면 여기로는 보내면 안되겠다

 

 

대상 그룹과 로드밸런서를 연결하기

1. EC2 화면 밑에 로드밸런서 생성하기를 누른다.
2. ALB 선택
3. 유저가 80번 포트로 요청을 하면 로드밸런서가 대상그룹안에 있는 애들을 확인하고 8000번 포트로 보내준다는 뜻이다
4. 기존 대상 그룹을 선택해서 아까 선택했던 대상 그룹과 연결
5. 생성 누르기

 

새로운 DNS로 들어가보자

로드밸런서에 부여된 DNS 뒤에다가 :80 붙이고 들어가보면 만들어놓은 웹사이트가 등장한다
만약에 에러가 나서 안된다면 프로젝트로 들어가서 Allowed Host에 부여받은 DNS를 추가하고 다시 배포해야한다

하지만 지금은 사실상 인스턴스를 1개만 쓰고 있기 때문에 Load Balancing을 전혀 하고 있지 않은 상황이 된다

 

 

설정값이 동일한 인스턴스를 여러개로 복제해야 한다 (이미지를 생성한다)

 

 

 

이미지를 생성한 후 이미지에 해당하는 EC2를 더 만든다

이미지 -> 시작하기를 눌러서 동일한 EC2를 만든다

 

 

 

대상 그룹에서 Register Targets

방금 만들었던 EC2를 대상 그룹에서 추가해줄 수 있다

 

 

 

ALB Rule을 설정해서 인스턴스 분기하기

 

Sticky Session

EC2 서버 하나만 있다고 가정한다. 
로드밸런싱을 하면 문제가 생길 수 있는데, 유저가 1번 EC2에서 세션값을 남겼는데, 다시 접속하면 다른 EC2로 연결될 수 있다.
세션이 박혀있지가 않아서 다시 로그아웃이 되어버린다 ^^;;;

따라서 세션값을 EC2에 저장하지 말고 EC2 앞에 저장해두고, 세션이 있으면 일정 기간 동안                 똑같은 곳으로 보내주자~

반응형