728x90
728x90
Network Load Balancer 네트워크 로드 밸런서는 TCP 기반의 로드 밸런서이다. 즉, 4계층 로드 밸런서로 TCP 나 UDP 트래픽을 받아서 인스턴스로 라우팅한다. 초당 수백만개의 요청을 처리할 수 있고, ALB 보다 레이턴시(대기시간)가 짧다. NLB 는 가용 영역 당 하나의 고정 IP 를 가지며, 탄력적 IP 할당을 지원한다. 즉 애플리케이션을 위한 전용 IP 구성을 할 수 있다는 뜻이다. NLB 를 사용할 때는 진짜 엄청난 성능을 원할 경우 사용한다. 즉, TCP 나 UDP 레벨의 트래픽을 원할 경우 NLB 는 프리티어를 지원하지 않는다. 네트워크 로드 밸런서는 4계층 즉, TCP 기반의 트래픽을 분산시킨다. ALB 처럼 타겟 그룹을 가질 수 있고, 특정 타겟 그룹으로 리다이렉션하는 ..
Application Load Balancer 실습 HTTP 와 HTTPS 유형의 Application Load Balancer 를 만들어보자. Application Load Balancer 가 어떻게 작동하는지 볼 수 있는 AWS 서비스가 있다. EC2 서비스로 들어와서 로드 밸런서 콘솔창으로 이동, 로드 밸런서를 생성해보자 Application Load Balancer 를 클릭하고 Create 버튼을 클릭한다. 이름과 스키마 IP address type 을 정하고 network mapping 을 지정하는 등 각종 설정을 할 수 있다. 이름은 DemoALB 로 짓는다. Schema 스키마에서는 Internet-facing 과 Internal 을 설정할 수 있는데, Internet-facing 로드 밸런..
Application Load Balancer 7계층 (HTTP) 로드 밸런서이다. 여러 가상 머신에서 여러 HTTP 애플리케이션으로 로드 밸런싱이 가능하다. (target groups) 동일한 가상 머신의 여러 애플리케이션으로 로드 밸런싱이 가능하다. (ex: ECS) HTTP/2 와 Websocket 을 지원한다. HTTP 에서 HTTPS 로 리다이렉션을 할 수 있다. 루트 라우팅을 지원한다. URL 기반의 라우팅이 가능, 예를 들어 example.com/users 와 example.com/posts 가 있을 때 /users 와 /posts 는 서로 다른 경로를 가진다. 그래서 이 둘을 다른 타겟 그룹으로 리다이렉션할 수 있다. URL 호스트명 기반의 라우팅이 가능, 에를 들어 로드 밸런서가 one...
Classic Load Balancer(CLB) CLB 는 TCP (4 계층), HTTP & HTTPS (7 계층) 프로토콜을 지원한다. 헬스 체크 또한 TCP 또는 HTTP 프로토콜 기반이다. 클래식 로드 밸런서는 호스트명이 고정되어 있다는 것이다. ex) XXX.region.elb.amazonaws.com HTTP listener 로 클래식 로드 밸런서에 연결하는 클라이언트와 CLB 를 통해 인스턴스에 트래픽을 리다이렉션하는 작업을 진행할 것이다. 클래식 로드 밸런서를 만들기 전에 인스턴스를 생성한다. 사용자 데이터에는 아래 처럼 작성한다. #!/bin/bash sudo yum update -y sudo yum install -y httpd sudo systemctl start httpd sudo s..
Elastic Load Balancing 로드 밸런싱이 도대체 뭘까? 로드 밸런서는 여러 백엔드 서버나 다운 스트림된 EC2 인스턴스나 수신된 트래픽을 전달하는 서버가 하나로 묶여서 ELB 에 연결된다. 그러면 Elastic Load Balancer 는 사용자가 몰려서 트래픽이 엄청나게 많이 발생할 경우 하나의 인스턴스에 트래픽이 몰리지 않게 각각의 인스턴스로 트래픽을 균형있게 분산시켜 준다. 이게 로드 밸런서가 하는 역할이다!!! 로드 밸런서는 여러 다운 스트림 인스턴스들에 대해 트래픽을 분산시켜 주고, DNS 를 앱(인스턴스)과 연결시켜 로드밸런서와 연결시켜준다. 또한, SSL 인증서를 제공해줘서 HTTPS 를 사용중인 웹 사이트와 연결할 수 있다. 여러 가용 영역에 걸쳐서 사용되기 때문에 고가용성을..
고가용성 및 스케일링성 확장성이란느 것 애플리케이션이 더 큰 부하를 감당할 수 있도록 적응하는 것을 뜻한다. 수직적 확장성과 수평적 확정성(탄력성) 이 존재한다. 확정성과 고가용성은 연결되어 있지만 의미는 서로 다르다. 수직적 확장 수직적 확장이란 하드웨어 자체를 업그레이드 하는 것이다. 예를 들어 데이터베이스(RDS, Elastic Cache)나 비분산 시스템을 사용하면서 하드웨어 자체에 한계를 느껴, t2.micro 인스턴스 유형에서 t2.large 로 인스턴스를 업그레이드하는 것, 이게 수직적 확장이다. 아래처럼 체급 자체를 키워버리는 것.. 수평적 확장 수평적 확장이란 인스턴스의 갯수를 증가시키는 방법이다. 이런 방식은 분산 시스템이란 것을 알 수 있다. 일반적으로 웹 애플리케이션을 사용할 때 주..