01.들어가기 전
내가 작업했던 것들을 좀더 기록하는 습관을 ,,, 가지고자 열심히 써보려고한다!
기존에 작업했을 때는 https로 배포하면서 자연스럽게 구글링하고 찾아보면서 aws 서비스 로드밸런서를 사용하였는데,,,
대충 트랙픽 분산과 가용성을 높이기 위함은 알고있지만 정확하게 적어보면 좋을 것 같다!
+) 도메인을 구매하게 되면 -> 인증서를 발급 하기전 이 도메인 소유에 대한 인증을 해야함: route53
Route53 : 가용성과 확장성이 뛰어난 클라우드 DNS(Domain Name System) 웹서비스
(이 과정에서 호스팅 영역 생성해 도메인을 인증)
02. ACM(AWS Certificate Manager) 인증서 발급 과정
이제 내 도메인에 대한 보안 인증서를 발급 받는 것! -> SSL(TSL) 인증서
1. SSL 인증서란?
- 브라우저 또는 사용자의 컴퓨터와 서버 또는 웹사이트 간에 암호화도니 연결을 수립하는데 사용
- SSL연결은 인증되지 않은 사용자의 방해로부터 각 방문(세션) 중에 교환된 중요 데이터를 보호
- 인터넷 블우저와 서버 사이에 보안 계층을 배치하는 것 => 인터넷 환경 내의 데이터를 보호하는 것을 뜻
- https url이면 인증서로 보호된다~ 의미~
2. SSL 작동 원리
- 클라이언트가 '안녕하세요' 메시지 보냄
- 서버가 '안녕하세요'라고 클라이언트에게 응답(SSL 인증서 및 공개키와 함께)
- 클라이언트가 프리마스터 시크릿 생성(서버로 받은 공개키를 사용해서)
- 서버에서 세션 키 생성(프리마스터로 대칭키 생성 -> 클라이언트에 전송)
- 서버가 프리마스터 시크릿 해독(서버는 비공개키와 공개키 모두 가지고 있기에 프리마스터 해독 가능)
- 대칭 암호화 설정 -> 연결이 보안됨
ACM : SSL/TLS 인증서 프로비저닝, 관리 및 배포 해주는 서비스
이후 발급받은 인증서로 Target Group 을 생성하고, Load Balancer도 리다이렉트 규칙도 설정(http요청을 https로 리다이렉트)
-> Load Balancer의 health check까지 통과하여
->EC2에 접근하는 요청을 리다이렉트해서 https로 연결하는 최종 과정!
03.로드밸런서(Load Balancer)
로드밸런서란?
네트워크 트래픽을 분산시켜주는 기술로, 여러대의 서버나 하드웨어 장비를 통해서 트랙픽을 분산 시켜주는 것!
- AWSd에서도 로드밸런서 서비스를 지원해주는데,
- Amazon Elastic Load Balancing으로 ELB!
- EC2뿐만 아니라 컨테이너(ECS), AWS Lamda 등으로 다양한 서비스와 연계하여 부하를 분배해 주는 서비스
- 기본적으로 round robin 방식으로 트래픽을 분산
그렇다면 로드밸런서는 어떤 기능을 제공할까?
1. 부하 분산 처리
- Load(부하) Balancing(분산) : 컴퓨터 네트워크 기술의 일종으로 둘 혹은 셋 이상의 중앙처리장치 혹은 저장 장치와 같은 컴퓨터 자원들에게 작업을 나누는 것을 의미
2. 엔드포인트 역할 제공
- 스케일 아웃에 대한 하나의 엔드포인트를 제공
+)스케일링이란?
- 인스턴스 혹은 컴퓨팅 파워를 닐리는 것!
- 스케일 업과 스케일 아웃의 두가지 방법이 있다
- 스케일 업이란?
- 인스턴스의 성능을 N배 늘려야할 상황이 온다면, 말 그대로 N배 큰 인스턴스를 사용하여 성능을 올리는 것
- 성능과 비용이 비례하지 않다!
- 스케일 아웃이란?
- 스케일 업의 물리적인 문제를 해결하는 것! => 규모를 늘리는 것
- 여러개 장착해서 성능을 올려보는 개념
- 클라우드 환경에서는 scale out을 염두해두고 설계하자! (수요에 따라 인스턴스 수 유연하게!)
- 스케일 인이란?
- scale out 으로 늘린 인스턴스를 다시 줄인느 행위
- 오토스케일링이란?
- scale out을 자동화(auto) 하기 위해 나온 서비스
- 애플리케이션을 모니터링하고 요량을 자동으로 조정하는 역할
- 최대한 저렴한 비용으로 안정적으로 예측 가능한 성능을 유지
03. 로드밸런서로 Health Check 하려면?
- 타겟 그룹 1개
- HTTPS요청시 -> 리스너가 캐치 -> HTTPS를 거친 후 로드밸런싱을 통해 본래 사용하던 HTTP 포트(타겟 그룹)로 요청
- HTTP 요청 -> 리스너가 캐치 -> HTTPS로 리다이렉션
-> 즉 여기서는 보안그룹 HTTP, HTTPS 요청 모두 열어줘야한다!
로드밸런서 생성을 하려면 -> ALB, NLB, GLB 종류가 있는데 그 부분은 다음에 좀더 다뤄보도록하겠습니당
04. 어떤 방식으로 ELB의 요청 처리 과정이 있을까?

- 사용자가 로드밸런서에 접근하기 위해 Amazon의 DNS 서버에 로드밸런서의 도메인 해석을 요청
- Amazon의 DNS 서버가 로드밸런서 노드 IP 리스트를 사용자에게 전달
- 사용자는 전달받은 IP 중 하나를 선택하여 로드밸런서에 접근(+ Port 입력)
- 사용자는 로드밸런서의 (Port가 일치하는) 리스너에 접근하게 되며 리스너는 이 요청을 받아들여 적절한 대상그룹으로 전달
- 리스너로부터 전달받은 요청을 EC2가 처리한 후 다시 사용자에게 반환
사실 어떤 실습 과정을 적은 것은 아니고,, 머리 속에 아는 내용들을 좀더 찾아보면서 과정을 정리해봤습니다!
[출처]
https://inpa.tistory.com/entry/AWS-📚-ELB-Elastic-Load-Balancer-개념-원리-구축-세팅-CLB-ALB-NLB-GLB