본문 바로가기
CLOUD/AWS

AWS elasticloadblancer 개념

by Rainbound-IT 2022. 2. 15.
반응형

만약 클라우드에 많은 서버가 존재하고 (EC2) 그들이 end-user에게 같은 서비스를 제공한다고 생각해보자. 우리가 naver.com 에 접속할 때 모든 유저가 하나의 서버로 접속하지 않는 것처럼, 실제로 존재하는 많은 서비스가 많은 서버를 두고 하나의 도메인 address를 이용해서 분배를 시키게 된다. 이러한 네트워크를 분배하는 기능을 가진 것을 로드발런스라고 한다. AWS 클라우드에 제공하는 load balancing 서비스를 Elastic Load Balancing이라고 한다. 물론 로드발런싱을 instance에서 직접할 수도 있는데, VM에 Nginx를 설치하고 해당 웹서버에 의해서 네트워크 트래픽에 근거하여 분배를 시킬수도 있는데, 여기서 말하는 ELB는 일종의 서비스 개념이라고 생각하면 된다. 

EC2에서 하나 혹은 복수의 AZ (Availability Zone)에 해당하는 네트워크안에서 ELB사용이 가능하다. ELB가 제공하는 서비스에 대해서 알아보도록 하자.
1. HTTP, HTTPS, TCP, SSL traffic 등을 분배시킬 수 있다. 
2. CNAME 이나 DNS 모두 제공이 가능하며 각 EC2의 health checking 역시 가능하다.
3. Auto scaling이 되며 부족한 resource에 대해서 직접 처리하여 up/down을 처리한다.

Load Balancer Type
- Internet-facing Load Balancers
이름에서 느껴지는 것처럼 인터넷에 연결되는 발런서를 뜻한다. 인터넷으로부터 요청을 받아서 각기 다른 EC2로 분배해주는 역할을 한다. 로드발런서에 해당되는 IP 역시 일반적으로 DNS name을 통해서 입력받게 되며 DNS server가 IP로 binding을 해주게 된다. (IPv4만 지워되며 EC2-Classic은 IPv4, IPv6 모두를 지원한다.) 
- Internal Load Balancers
만약 private subnet에 연결되어 있는 많은 서버에 연결될때 사용된다. 예를 들어 4개의 앱서버가 있고 4개의 DB 서버가 있을 경우에 각각의 앱서버에 DB서버가 하나씩 물려있는 구조는 위험도가 크다. 4개의 서버가 로드발런서를 통해서 DB 서버 중 하나에 접속하는 구조를 갖게 되면 리스크가 줄어들며 이 역할을 하는 것이 Internal Local Balancer이다. 
- HTTPS Load Balancers
SSL/TLS protocol, HTTPS 를 통해서 양단을 암호화하는 방식의 로드바런싱을 할 수도 있다. 이미 정의된 SSL certificates를 로드발런서에 설치하여 사용할 수 있다. 
- Listeners
로드 발런서는 반드시 하나 이상의 Listener가 configured 되어야 한다. Listener는 HTTP, HTTPS, TCP, SSL 을 모두 지원하며 L4 (TCP/IP connection 단계의 로드발런싱), L7 (HTTPS, HTTP 를 통해서 application layer에 의해서 분배한다) 모두를 지원한다. 

Load Balancing Configuration

Idle Connection Timeout
client가 load balancer를 통해서 연결을 요청할 때 both connection (from client to server, from server to client)의 불량을 체크하여 타임아웃을 정할 수 있다. 기본적으로 60초가 설정되어 있으며 파일이 전달되는 도중에도 60초가 넘어가면 connection을 중단시킨다. 만약 keep-alive option을 enable시키면 다른 connection으로 넘어갈 경우에 기존의 session을 가지고 가게 할 수 있다.
Cross-Zone Load Balancing
같은 AZ 뿐만 아니라 서로 다른 AZ에서도 로드발런싱을 할 수 있게해주는 기능이다. 만약 AZ를 다르게 가져가면 fault tolerance를 높일 수 있게 된다. 
Connection Draining
Connection Draining은 deregistering이나 unhealthy된 instance에 더이상의 requesting을 보내지 않도록 해주는 기능이므로 일반적으로 on으로 해놓아야한다. time out을 정해놓으면 (1-3600 seconds) connection을 시도해서 예를 들어 300초인 경우, 300초동안 connection이 유효한 상태로 돌아오지 않으면 해당 isntance를 불능으로 처리하여 연결 요청을 하지 않게 된다. 
Sticky Sessions
이 기능은 user의 session을 특정 instance로 붙여놓는 것을 뜻한다. user가 session을 유지한 상태라면 모든 요청을 하나의 instance로 유지하는 기능을 뜻한다. 만일 application이 session cookie를 가지고 있는 상태라면 하나의 instance로 sessionㅇㄹ 고정시켜서 해당 cookie를 지속적으로 사용할 수 있게 한다.
Health Checking
ELB는 health checking을 지원하는데, InService, OutOfSerivce인지를 알려주게 된다. user의 session이 요청이 없다고 하더라도 load balancer가 ping을 보내게 되어 주기적으로 instance가 정상적인지를 체크하고 상태를 인지하고 알려주게 된다. 

 

 

https://m.blog.naver.com/ijoos/221545031458

 

AWS ELB (Elastic Load Balancing)

만약 클라우드에 많은 서버가 존재하고 (EC2) 그들이 end-user에게 같은 서비스를 제공한다고 생각해보자...

blog.naver.com

 

반응형

'CLOUD > AWS' 카테고리의 다른 글

AWS spotinstance 란? 스팟 인스턴스  (0) 2022.02.17
전용호스트 전용인스턴스 차이  (0) 2022.02.17
AWS ElasticSearch kibana(VPC외부에서 접속)  (0) 2022.02.14
codedeploy 에러로그  (0) 2022.02.09
rds 생성 에러  (0) 2022.02.07

댓글