공부/클라우드 보안

9월 30일 클라우드 보안 5

마준123 2022. 9. 30. 10:10

 * 로드밸런서의 부하 분산 방법

1. Round Robin ( 순차 분배 ) : 1 --> 2 --> 3 --> 4 --> 1 --> 2 --> 3 --> 4

 = 서버들의 스펙이 모두 동일할 경우에만 공평함

 

2. Weighted Round Robin ( 가중치를 고려한 순차 분배 )

 = 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://[버킷주소!!]
$ sudo chmod 400 aws_key.pem
  Bucket에 들어가서 aws_key.pem을 반드시 삭제합니다.  (안하면 위험)

손발이 발발 떨리는 10초



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 경로를 통해서 접속  (둘중 하나만 됨)

 

스티키 세션 때문에 각각 다른 브라우저에서 접속하면 셋 다 나올 확률이 올라간다! ㅋㅋ

 

탄력적 IP

실습준비) 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 ) 급하지 않은 일 : 데이터 변환작업, 빅 데이터를 분석

 = 예약 인스턴스 : 약정을 하고 요금을 지불하는 것 ( 선불, 후불, 월별 납부 가능 ) -----> 할인적용 가능, 선불이면 추가 할인

     ----> 장기간 사용하는 버비스 ex ) 웹서비스

온디맨드랑 스팟 인스턴스랑 약 3배정도 차이남 ( $0.0144 vs $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 (티켓 구매)

 

 * Auto Scaling을 사용하는 이유

 = 장애가 발생하거나 혹은 해킹을 당해서 인스턴스가 응답을 하지 않는 경우에도 새로운 인스턴스를 생성해서 항상 서비스 가능한 상태를 유지

 = 트래픽이 높아지면 추가로 인스턴스를 실행할 수 있도록 설정 가능 ---> Target Tracking

 

* Target Tracking 기법
 = 트래픽이 높아지는 경우 사용
 = 기준 : CPU사용률을 70%지정하는 경우, 70%를 넘으면 인스턴스를 추가로 늘림 ----> 개수제한 설정 가능
  반대로, CPU사용률이 70%이하로 내려가면, 인스턴스를 줄이도록 설정하면 비용 절감됨

* 예측 크기 조정 정책을 사용하는 사례 : 예상이 충분히 가능할 경우
사례) 로또 구매 서버 : 토요일 13시~19시까지 높아지는 것이 예상되는 경우  ----> 예측 크기 조정 정책
사례) 합격자 발표 : 합격자 발표 당일 
사례) 새로운 게임이 나오는 날

Quiz) 티켓판매를 하려고 하는데, 예측 크기 조정 정책으로 설정해도 될까요?  (예상보다 더 많이 접속하면.... XXXX)
----> Target Tracking 기법을 사용해야 함

※ 키페어를 Bucket에 업로드는 절대 하지 마세요!

 ----> Ive, blackpink등 계정을 새로 만들어서 SSH 접속 가능하도록 설정 ( Bastion )



종합실습 ) Ubuntu EC2를 하나 만들어놓고 Bastion으로 설정, 웹서버 만들고, SSH 접속 게정을 생성해서 스냅샷,이미지,생성

Private Subnet에 오토스케일링으로 생성되도록 하고, NLB에 EIP 붙이고( Private Subnet 배치 ) 오토스케일링 그룹을 타겟으로 지정하세요.

     (Bastion에서 Private Subnet에 있는 EC2에 접속할 때는 SSH 계정으로 접속하도록 설정하면됨)



캡처할 부분 오토스케일링, NLB, 웹브라우저 실행 화면

 

 

--------------

 

 * 오늘의 핵심 카테고리

 = 인스턴스

 = AMI (자동생성))

 = 스냅샷

 = 탄력적IP

 = 로드 밸런서

 = 대상 그룹

 = 시작 구성

 = Auto Scaling 그룹

 

 

 * NACL과 Security Group의 차이점 ★★★★

1 ) NACL

 = 서브넷에 배치

 = 방화벽 룰셋과 동일 ( 허용과 거부 설정 )

 = 위에서부터 내려가면서 적용 ( 번호 작을수록 우선순위 높음 )

 

2 ) Security Group

 = 허용만 설정

 = Stateful 방식 ( 방화벽의 3세대 방식 )

 = 리턴 트래픽이 허용됨

 = EC2, RDS, NLB/ALB, ECS 등에 적용

 

 

 

'공부 > 클라우드 보안' 카테고리의 다른 글

10월 06일 클라우드 보안 7  (0) 2022.10.07
10월 05일 클라우드 보안 6  (0) 2022.10.05
9월 29일 클라우드 보안 4  (0) 2022.09.29
9월 28일 클라우드 보안 3  (0) 2022.09.28
9월 27일 클라우드 보안 2  (0) 2022.09.27