-
AWS ELB - Elastic Load Balancer생활코딩 AWS 2022. 4. 6. 17:16
===
거대하고 변덕스러운 트래픽이 몰려오고 있을 때, 하나의 큰 컴퓨터가 아니라, 여러대의 작은 컴퓨터가 힘을 합쳐서 트래픽을 감당할 수 있다면 얼마나 좋을까요? 그렇게 하면 트래픽의 양에 따라서 컴퓨터의 수를 조절해서 비용을 절감할 수 있습니다. 또 하나의 큰 컴퓨터로는 감당할 수 없는 처리량도 넉넉하게 처리할 수 있습니다.
Amazon Web Services 분산 컴퓨팅의 핵심 서비스인 Elastic Load Balancer
===
분산을 하기 위해 저 접속들을 받을 수 있는 Load Balancer라고 하는게 필요하다. 얘가 적당히 분배하고(EC2에), 서버는 다시 로드밸런서로 응답을 쏴준다
===
로드밸런서는 EC2에 있다
이걸 쓰려면 결국엔 EC2인스턴스가 있어야한다
인스턴스 만들기
1.
2.
t2.nano
3.
인스턴스 하나
4.
스토리지는 기본값
5.
보안그룹
HTTP의 80번 포트 개방
6.
검토시작, 키페어 얻어놓은 상태로
생성!
===
이걸로
이 인스턴스에 Apache2와 php를 설치
sudo apt update;
sudo apt install apache2 php
브라우저에서 이 머신의 IP로 접속해보기.
잘나오면
sudo vim /var/www/html/index.php
: php를 이용해서 현재 우리가 실행하고 있는 웹페이지가 어떤 내부 IP를 갖고 있는지 출력
여러대의 컴퓨터가 로드밸런서에 접속하면, 각각의 컴퓨터를 구분하기 위해 IP를 화면에 출력해주면 편하니까
이게 인스턴스의
퍼블릭이 아닌 프라이빗이 출력되고 있다
===
이렇게 하나로 운영하다가 부족해진 상황.
이때 우리는 로드밸런서를 웹서버 앞에 둬서 부하를 분산시킬 수 있다.
로드밸런서도 일종의 웹서버인데, 얘는 트래픽이 아무리 많이 들어와도 살아있을거라고 생각하면 되는 친구다
신경써야할건 port
사용자들은 로드밸런서의 고유한 도메인으로 들어오고 그때 81번 포트로 들어온다.
로드밸런서는 각각의 인스턴스의 80번 포트로 = 80번 포트에 리스닝하고 있는 웹서버로 트래픽을 보내줌
===
이때 먼저 같은 속성들을 갖고 있는 인스턴스들을 그루핑하는 Target Group이라는걸 만들어줘야한다
그리고 로드밸런서에 이 Target Group을 등록한다 = 로드밸런서는 타겟그룹을 대상으로 트래픽을 보내주게 된다
===
로드밸런서를 만들기 전에 대상 그룹을 먼저 만들기
대상그룹생성 >
대상그룹에 속해있는 EC2 인스턴스들의 80번 포트로 로드밸런서의 트래픽을 보내겠다는 것
▽대상그룹은 그 인스턴스의 특정한 포트를 써줘야하는구나
상태 검사는 로드밸런서가 정기적으로 저 주소로 점검한다. 연결돼 있는 각각의 인스턴스들이 잘 살아있나
/health.txt로 접속이 된다면 인스턴스가 건강한 것
접속안되면 배제하고 다른 인스턴스들에게 트래픽을 보낸다
===
그 다음 대상 등록이 뜨는데 내가 전에 만들었던 인스턴스를 선택하는 부분
아래에 보류중 하면 타겟 그룹에
인스턴스가 선택이 된것. 대상 그룹 생성하면
===
이제 타겟 그룹을 로드밸런서에 연결한다
로드밸런서 생성 >
ALB 선택, 이게 웹을 위한 로드밸런서
이름
리스너의 Load Balancer 포트 : 이게 ELB의 n번 포트로 접속한다는 그 포트
리스너 추가로 HTTPS 같은것도 추가할 수 있지만 복잡한 이슈들이 있어서 일단 빼겠습니다
가용영역은
사용자들이 접속했을 때 그 트래픽을 이 지역에 있는 어떤 건물의 컴퓨터들로 전송할것인가 분산할것인가 지정
일단은 다 체크해서 지정
===
다음은 보안 설정 구성
이건 방화벽을 설정하는것이고, 여기서 방화벽은 인스턴스의 방화벽이 아닌 ELB의 방화벽
3단계 보안 그룹 구성으로 가서
> 새 보안 그룹 생성 을 하면
81번 포트가 자동으로 잡혀 있는데,
우리의 ELB로 접속하는 사용자들이 81번 포트를 통해서 접속할 것이기 때문에 81번을 지정.
이것은 인스턴스를 위한것이 아니라 ELB를 위한 방화벽
4.라우팅 구성
라우팅 : ELB로 들어온 트래픽을 인스턴스들로 어떻게 분산할 것인가
대상그룹을 기존 대상그룹으로 하면 우리가 기존에 만들었던 TG가 뜬다
5.대상 등록
등록된 대상에 이런 인스턴스가 현재 붙어있다
6.검토 -> 생성
proviisioning : 생성중
===
active가 되면 DNS이름을 복사하고, 81번 포트로
하면 웹페이지의 홈페이지가 나타난다
전에 만들었던 index.php가봤음
ELB에 내 인스턴스를 장착했다!
근데 인스턴스가 하나만 연결돼있다. 분산전엔 컴퓨터가 더 느려질 뿐이다
===
여러개를 연결해보자
여기 있는 인스턴스를 이미지로 구워서
생성
이미지가 완성이 되면 그 이미지를 이용해서 인스턴스를 하나 더 만들것
===
이미지는 AMI로 들어가면 보인다
(인스턴스 만들기)시작하기
2.인스턴스 유형선택(성능)
3.인스턴스 구성
...다 기본값으로 하면 됨
6.
규칙 추가해서 HTTP를 80번으로 엶
다음다음
시작
===
인스턴스 생성이 끝나면 인스턴스를 우리가 생성한 로드밸런서에 연결돼있는 타겟그룹에 포함시키는것
대상 등록 >
보류중인것으로 포함
등록
이렇게되면
우리의 인스턴스 두개가
TG라는 그룹을 통해서
ELB라고하는
로드밸런서에 연결이 된 것
===
ELB의 주소로 접속해서 우리가 제대로 했는지 보자
바뀐다
로드밸런서가 들어오는 트래픽을 연결돼있는 인스턴스들에게 분산하고 있다
===
이걸 통해 컴퓨터가
서비스가 (이용자가 많아져서)느려지게되면 컴퓨터를 추가하고
컴퓨터가 놀게되면 컴퓨터를 빼는 것을 통해
비용절약, 더 많은 트래픽 감당 가능
===
ELB의 가격
지역별로 가격이 다름
가격정책은 크게 두가지(네트워크 관련된거 빼고나서는)
ALB와 LCU 두가지의 가격정책이 합산돼서 나온다
ALB는 로드밸런서를 킨 순간부터 부가
LCU는
얼마나 사용했냐다 :
얼마나 많이
얼마나 오래
얼마나 데이터를 전송
규칙
4개중에 가장 비싼것을 채택
밑에 예제를 보면서 이해해
===
지금은 수동으로 인스턴스를 추가했는데, 귀찮다. 내가 컴퓨터 앞에 없으면?
EC2의 Auto Scaling을 이용하면 연결돼있는 컴퓨터들의 CPU점유율이 50%이상으로 몇분동안 지속되면 자동으로 인스턴스를 이미지를 바탕으로 생성해서 타겟그룹에 꽂는다
를 Auto Scaling정책을 통해 지정하면
자동으로 컴퓨터가 없어졌다 생겼다 대응해준다
'생활코딩 AWS' 카테고리의 다른 글
AWS Auto Scaling (0) 2022.04.08 AWS Launch Template (0) 2022.04.08 AWS Lambda, CloudWatch log (0) 2022.02.14 AWS EC2 (0) 2022.02.13 AWS Educate (0) 2022.02.13