* 로드밸런서의 부하 분산 방법
1. Round Robin (순차분배) : 1 => 2 => 3 => 4 => 1 => 2 => 3 => 4
- 서버들의 스펙이 모두 동일할 경우에만 공평함
2. Weighted Round Robing (가중치를 고려한 순차 분배)
- 1:1:1.5:1.5 , 1:2:4:4
- 서버들의 스펙이 차이가 있을 때 적절함
3. Least Response Time (응답시간이 빠른 쪽에 우선 분배)
- 평소에 Load Balancer가 서버들의 응답시간을 주기적으로 체크(확인)해서 응답시간이 빠른쪽에 우선 분배
4. Least Connection (연결 개수가 가장 작은 쪽에 우선 분배)
- 인터넷 쇼핑을 오랫동안 하는 Browser ----> Connection이 계속 유지됨
- 검색해보고 바로 나가는 Browser ----> Connection이 빨리 끝남
- Connection이 작은 쪽에 부여함
5. Hash Function을 활용하는 방법
- 출IP,출Port,목IP,목Port 등을 고려해서 Hash값을 계산 ----> 일치되는 경우에는 같은 서버에 계속 고정해서 연결 유지
- Sticky Session (세션이 고정됨)
* ALB와 NLB
- ALB는 URL, HTTP헤더에 따라서 부하를 분산, 먼저 출시, Round Robin 지원
- NLB는 목적지 Port를 보고 부하를 분산, 나중 출시, Hash Function 지원(Sticky Session), EIP(고정IP)를 부여할 수 있음
* EIP (Elastic IP Address, 탄력적 IP주소)
- 탄력적이라는 것은 '변하지 않는다'는 의미 ----> 고정IP라는 뜻
- 탄력적이라는 것은 원래대로 돌아옴 (원래모양을 되찾음)
- IP주소가 바뀌지 않고 계속 같은 IP를 사용할 수 있는 서비스 (변동IP의 반대말)
- 용도 : 도메인네임에 고정해놓을 때
실습)
1단계) Public Subnet에 Bastion host를 만들기, 웹서버로 설정
(Public Subnet, Private Subnet 이 있어야 함)
$ sudo apt update
$ sudo apt install apache2
$ cd /var/www/html
$ sudo rm index.html
$ sudo vi index.html
(어제 작업했던 red server의 index.html을 복사해서 넣기)
$ exit
2단계) 웹서버로 이미지 생성 --> 템플릿 만들고 작업
- AMI 메뉴에서 AMI로 인스턴스 시작 클릭해서 Private Subnet에 Redserver, Yellowserver, Blueserver 세대를 만듭니다.
- 공통적으로 보안 그룹은 web-server, 키페어는 aws_key 설정합니다.
- 설정 수정을 하도록 하겠습니다.
보안 그룹 수정 : 추가를 클릭해서 SSH를 고르고, Public Subnet의 IP대역을 등록
키페어 : Bucket에 업로드 (퍼블릭 설정을 일시적으로 퍼블릭으로 함 ----> 매우 주의!!)
$ sudo wget https://destinyofpuppet.s3.ap-northeast-2.amazonaws.com/aws_key.pem
$ sudo chmod 400 aws_key.pem
Bucket에 들어가서 aws_key.pem을 반드시 삭제합니다. (안하면 위험)
3단계) Yellow와 Blue 서버에 바탕화면 색상 바꾸기
(Bastion host에 접속된 상태에서 Yellow Server의 사설IP로 접속하기)
$ sudo chown ubuntu:ubuntu aws_key.pem // 키 소유권을 ubuntu로 변경합니다
$ ssh -i "aws_key.pem" ubuntu@10.100.2.158 // root를 ubuntu로 변경하면 접속됨
yellow server의 바탕화면 색깔 바꾸기
$ cd /var/www/html
$ sudo vi index.html
(red를 모두 yellow로 변경합니다.)
$ exit // 접속 끊기
Blue server의 바탕화면 색깔 바꾸기
$ cd /var/www/html
$ sudo vi index.html
(red를 모두 blue로 변경합니다.)
$ exit // 접속 끊기
4단계) NLB 설정하기
- 먼저 탄력적IP(EIP)를 사용하도록 설정 (EC2 메뉴의 왼쪽 아래에 있음)
- 탄력적IP주소할당 클릭, (변경사항 없이) 할당 클릭
- 설정할 때, EC2들이 설정된 Subnet에 탄력적IP를 할당 해야 합니다.
- 웹브라우저에서 탄력적IP로 접속하면 Red, Yellow, Blue에 나뉘어서 접속 됩니다.
* 로드밸런서를 통해 접속하는 방법
- ALB : DNS 경로를 통해서 접속
- NLB : 탄력적IP주소가 우선 적용 > DNS 경로를 통해서 접속 (둘중 하나만 됨)
실습준비) EIP를 분리하고 릴리스, NLB삭제, EC2삭제, Bastion host 삭제, AMI는 등록취소, 스냅샷 삭제
* 오토스케일링
- EC2등을 필요한 만큼 숫자를 자동으로 늘리거나 줄이는 것 (개수 제한 설정 가능: Max~Min) ----> 관리자의 개입 없이 자동으로 증감
- 가상머신이기 때문에 빠르게 늘릴 수 있음
- 오토스케일을 적용 사례 : 티켓예매(KTS, 공연표 등), 게임, 블랙프라이데이, 수강신청 등
- Scale out : 서버의 개수를 늘리는 것 (양적 증대, 양적 확장)
- Scale in : 서버의 개수를 줄이는 것 (양적 감소, 양적 축소)
- Scale up : 고사양 스펙으로 변경하는 것 (질적 증대)
- Scale down : 저사양 스펙으로 변경하는 것 (질적 감소)
* EC2의 요금제
- On Demand (온디맨드) : 사용자가 필요할 때 시작해서 필요없을 때 삭제하는 것 (할인 없음)
ex) 이벤트(월드컵, 올림픽, 행사), 프로젝트(시스템 개발) 등
- Spot Instance (스팟 인스턴스) : 사용자가 구매가격을 제시하면, 가장 높은 가격을 제시한 고객한테 EC2를 사용하게 해줌 (경매)
----> 자주 중단될 수 있음, 작업이 계속 미뤄질 수도 있음
ex) 급하지 않은 일 : 데이터 변환작업, 빅데이터를 분석 등
NYT(170년) : 필름(사진)을 PDF로 변환하는 작업---> 스팟인스턴스를 활용해서 저렴하게 처리
- 예약 인스턴스 : 약정을 하고 요금을 지불하는 것 (선불, 월별 납부 가능) ----> 할인 적용가능, 선불이면 추가 할인
----> 장기간 사용하는 서비스 ex) 웹서비스
온디맨드 가격 vs. 스팟 인스턴스 가격
t2.micro 0.0144 USD $0.0043 시간당
실습) 오토스케일링 with Load balancer (ALB)
1단계) Amazon Linux로 EC2를 생성하고, Apache2만 설치
연결 > SSH client 에서 연결 복사해서 cmd에 붙여넣고 접속
$ sudo yum update
$ sudo yum install httpd
$ sudo systemctl start httpd
$ sudo systemctl enable httpd
$ sudo usermod -a -G apache ec2-user
$ sudo chown -R ec2-user:apache /var/www
$ sudo chmod 2775 /var/www
$ cd /var/www/html
$ sudo vi index.html
i
(아까 redserver에서 설정했던 index.html 코드를 복사해서 붙여넣기 합니다. bgcolor=pink 로 수정)
ESC
:wq
$ exit
2단계)
스냅샷 메뉴에서 스냅샷 만들기 ---> 스냅샷이 다 만들어지면 '스냅샷으로 이미지 만들기'
시작 구성 메뉴에서
로드밸런서 이름 : alb-amzn-webserver
대상 그룹 이름 : tg-amzn-webserver
시작 구성 이름 : lc-amzn-webserver
이미지 이름 : img-amzn-webserver
* Auto Scaling을 사용하는 이유
- 장애가 발생하거나 혹은 해킹을 당해서 인스턴스가 응답을 하지 않는 경우에도 새로운 인스턴스를 생성해서 항상 서비스 가능한 상태를 유지
- 트래픽이 높아지면 추가로 인스턴스를 실행할 수 있도록 설정 가능 ---> Target Tracking (티켓 구매)
* Target Tracking 기법
- 트래픽이 높아지는 경우 사용
- 기준 : CPU사용률을 70%지정하는 경우, 70%를 넘으면 인스턴스를 추가로 늘림 ----> 개수제한 설정 가능
반대로, CPU사용률이 70%이하로 내려가면, 인스턴스를 줄이도록 설정하면 비용 절감됨
* 예측 크기 조정 정책을 사용하는 사례 : 예상이 충분히 가능할 경우
사례) 로또 구매 서버 : 토요일 13시~19시까지 높아지는 것이 예상되는 경우 ----> 예측 크기 조정 정책
사례) 합격자 발표 : 합격자 발표 당일
사례) 새로운 게임이 나오는 날
Quiz) 티켓판매를 하려고 하는데, 예측 크기 조정 정책으로 설정해도 될까요? (예상보다 더 많이 접속하면.... XXXX)
=> Target Tracking 기법을 사용해야 함
종합실습) Ubuntu EC2를 하나 만들어놓고 Bastion으로 설정, 웹서버 만들고, SSH접속 계정을 생성해서 스냅샷, 이미지 생성합니다.
Private Subnet에 오토스케일링으로 생성되도록 하고, NLB에 EIP붙이고(Private Subnet 배치) 오토스케일링 그룹을 타겟으로 지정하세요.
(Bastion에서 Private Subnet에 있는 EC2에 접속할때는 SSH 계정으로 접속하도록 설정하면 됨)
'클라우드 보안' 카테고리의 다른 글
루키즈 교육 - 1005 학습 (0) | 2022.10.05 |
---|---|
루키즈 교육 - 0928학습 (0) | 2022.09.28 |
루키즈 교육 - 0927 학습 (VPC 실습) (0) | 2022.09.27 |
루키즈 교육 - 0926 학습 (0) | 2022.09.26 |