클라우드 보안 5일차

Jh Park·2022년 10월 3일

로드밸런서

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

  1. Round Robin
  • 순차 분배, 서버들의 스펙이 모두 동일할 경우에 사용하여 순차적으로 분배
  • 1 --> 2 --> 3 --> 4 --> 1 --> 2 --> 3 --> 4
  1. Weighted Round Robing
  • 가중치를 고려한 순차 분배, 서버의 스펙에 차이가 있을 경우 사용 스팩에 따라 비중을 고료하여 분배
  • 1:1:1.5:1.5, 1:2:4:4
  1. Least Response Time
  • 응답시간이 빠른 쪽에 우선 분배, 평소에 Load Balancer가 서버들의 응답시간을 주기적으로 체크(확인)해서 응답시간이 빠른쪽에 우선 분배
  1. Least Connection
  • 연결 개수가 가장 작은 쪽에 우선 분배,
    • 인터넷 쇼핑을 오랫동안 하는 Browser는 Connection이 계속 유지됨
    • 검색해보고 바로 나가는 Browser는 Connection이 빨리 끝남
  • Connection이 작은 쪽(빨리 끝나는 곳)에 부여함
  1. Hash Function을 활용하는 방법
  • 출IP,출Port,목IP,목Port 등을 고려해서 Hash값을 계산 후 Hash 값을 비교하여 일치되는 경우에는 같은 서버에 계속 고정해서 연결 유지, 각 해쉬 값 마다 서버(담당)를 설정하는 것
  • Sticky Session (세션이 고정됨)

계층별 분산

  1. ALB(Application Load Balancer)
  • ALB는 URL, HTTP헤더에 따라서 부하를 분산, 먼저 출시, Round Robin 지원
    ALB는 L7단의 로드 밸런서를 지원합니다.
    ALB는 HTTP/HTTPS 프로토콜의 헤더를 보고 적절한 패킷으로 전송합니다.
    ALB는 IP주소 + 포트번호 + 패킷 내용을 보고 스위칭합니다.
    ALB는 IP 주소가 변동되기 때문에 Client에서 Access 할 ELB의 DNS Name을 이용해야 합니다.
    ALB는 L7단을 지원하기 때문에 SSL 적용이 가능합니다.
  1. NLB(Network Load Balancer)
  • NLB는 목적지 Port를 보고 부하를 분산, 나중 출시, Hash Function 지원(Sticky Session), EIP(고정IP)를 부여할 수 있음
    NLB는 L4단의 로드 밸런서를 지원합니다.
    NLB는 TCP/IP 프로토콜의 헤더를 보고 적절한 패킷으로 전송합니다.
    NLB는 IP + 포트번호를 보고 스위칭합니다.
    NLB는 할당한 Elastic IP를 Static IP로 사용이 가능하여 DNS Name과 IP주소 모두 사용이 가능합니다.
    NLB는 SSL 적용이 인프라 단에서 불가능하여 애플리케이션에서 따로 적용해 주어야 합니다.

NLB 실습

EIP (Elastic IP Address)

  • 탄력적 IP주소
    • 탄력적이라는 것은 '변하지 않는다', 원래의 모형으로 돌아옴이라는 의미(고정IP라는 뜻) <= 반대말 => 변동IP
  • EIP는 IP주소가 바뀌지 않고 계속 같은 IP를 사용할 수 있는 서비스
  • 용도 : 도메인네임에 고정해놓을 때
  • EC2에서 할당해야함

Bastion Host

  • Bastion Host란 Public Subnet에 위치하며, Private Subnet과의 통신을 도와주는 대리인이라고 할 수 있다.
  • 즉 내부와 외부 네트워크 사이에서 일종의 게이트 역할을 수행하는 호스트

과정

1) Public Subnet에 Bastion host를 만들기, 웹서버로 설정
Bastion host에는 웹서버가 필요하지는 않지만 웹서버를 설치하여 AMI로 활용하기 위해 설치, 이미지 후 웹서버는 삭제 가능

  • Public Subnet, Private Subnet이 있어야 한다.

  • EC2 생성 후 인스턴스 연결

    • Bastion host
      • AMI는 ubuntu 사용
      • Public Subnet 사용 Public IP 자동할당
    • ubuntu 작업
      • tip $ history사용하면 사용하였던 명령어가 나옴
$ sudo apt update
$ sudo apt install apache2
$ cd /var/www/html
$ sudo rm index.html
$ sudo vi index.html
$ exit

index.html은 아래의 코드

<html>
<head>
  <meta charset="utf-8">
  <title>Red Server</title>
</head>
<body bgcolor=red>
  <center>
  <br>
    <h1> Red Server </h1>
    <br>
    <h4>Server No.1</h4>
  </center>
</body>
</html>
  • 템플릿 또는 이미지(AMI)생성

2) 웹서버(Bastion)로 이미지 및 템플릿 만들고 작업

  • EC2생성, AMI 메뉴에서 AMI로 인스턴스 시작 클릭해서 Private Subnet에 Redserver, Yellowserver, Blueserver 세대를 만듭니다.
  • 공통적으로 보안 그룹은 web-server
    • web-server 보안그룹 설정 수정
      추가를 클릭해서 SSH를 고르고, Bastion host연결을 위해 Public Subnet(10.7.2.0/24)의 IP대역을 추가등록

web-server 변경 전 보안그룹

유형프로토콜포트번호소스
SSHTCP22로컬호스트
HTTPSTCP4430.0.0.0/0
HTTPTCP800.0.0.0/0

변경 후

유형프로토콜포트번호소스
SSHTCP22로컬호스트
HTTPSTCP4430.0.0.0/0
HTTPTCP800.0.0.0/0
SSHTCP2210.7.2.0/24
  • 키페어는 설정
    • 키페어는 권한 설정 후 Bucket에 업로드 일시적으로 퍼블릭 설정을 부여하여 잠시 다운로드 후 바로 비활성!
      ( Create access key을 사용할 수 없고 연습이기에 사용하였음, 이거는 매우 위험한 행동!! )
    • 키페어 설정 커맨드
$ sudo wget [키페어 퍼블릭주소]
$ sudo chmod 400 key.pem

wget 명령어는 웹에서 파일 다운로드를 도와주는 리눅스 커맨드라인 유틸리티이다. 이 명령어는 HTTP, HTTPS, FTP 프로토콜을 이용해 웹서버에서 파일을 다운로드 받을 수 있으며 스크립트나 cronjob에서도 실행시킬 수 있다.
☆☆☆ 실습 후 Bucket에 업로드한 케페어는 반드시 삭제

3) Red를 제외한 Yellow와 Blue서버를 식별하기 위해 index.html 바꾸기

  • Bastion host(EC2)에 접속된 상태에서 Yellow Server의 사설IP로 접속
$ sudo  chown  ubuntu:ubuntu  key.pem
// 키 소유권을 ubuntu로 변경
$ ssh -i "key.pem"  ubuntu@10.7.1.158
// root를 ubuntu로 변경하면 접속됨($ ssh -i "key.pem"  root@10.7.1.158에서)
  • yellow server의 index.html 수정
$ cd /var/www/html
$ sudo vi index.html
$ exit
  • bule server의 index.html 수정
$ cd /var/www/html
$ sudo vi index.html
$ exit

4) NLB 설정하기

  • 먼저 탄력적IP(EIP)를 사용하도록 설정 EC2> 네트워크 보안 > 탄력적 IP

  • 탄력적IP주소할당 클릭, (변경사항 없이) 할당 클릭

    • 설정할 때, EC2들이 설정된 Subnet에 탄력적IP를 할당 해야 합니다.

    • Load banlancers 생성

      • 네트워크 Load banlancers 생성

      • 기본구성

      • 네트워크 매핑

        첫번째는 퍼블릭 서브넷을 사용하며 탄력적 ip주소 사용
        두번째는 프라이빗 서브넷 하용함 탄력적 ip주소 사용 X

      • 리스너 설정에서 대상 설정 후 지정

  • 웹브라우저에서 로드벨런서의 탄력적IP로 접속하면 Red, Yellow, Blue에 나뉘어서 접속

ALB

  • 오토스케일링
    • EC2등을 필요한 만큼 숫자를 자동으로 늘리거나 줄이는 것 (개수 제한 설정 가능: Max~Min)
    • 가상머신이기 때문에 빠르게 늘릴 수 있음
    • 사용이유
      • 장애가 발생하거나 혹은 해킹을 당해서 인스턴스가 응답을 하지 않는 경우에도 새로운 인스턴스를 생성해서 항상 서비스 가능한 상태를 유지 가능
      • 트래픽이 높아지면 추가로 인스턴스를 실행할 수 있도록 설정 가능(Target Tracking 기법)
    • 오토스케일을 적용 사례 : 티켓예매(KTS, 공연표 등), 게임, 블랙프라이데이, 수강신청 등 트래픽이 몰릴 때
    • 용어 종류
      • Scale out : 서버의 개수를 늘리는 것 (양적 증대, 양적 확장)
      • Scale in : 서버의 개수를 줄이는 것 (양적 감소, 양적 축소)
      • Scale up : 고사양 스펙으로 변경하는 것 (질적 증대)
      • Scale down : 저사양 스펙으로 변경하는 것 (질적 감소)

Target Tracking 기법

  • 트래픽이 높아지는 경우 사용
  • 기준 : CPU사용률을 70%지정하는 경우, 70%를 넘으면 인스턴스를 추가로 늘림있음(개수제한 설정 가능)
    반대로, CPU사용률이 70%이하로 내려가면, 인스턴스를 줄이도록 설정하면 비용 절감
  • AWS 경우
    • EC2 > Auto Scaling 그룹 > Auto Scaling > 자동크기 조정 > 동적 크기 조정에서 설정 가능

예측 크기 조정 정책

  • 사용사례
    • 로또 구매 서버 : 토요일 13시~19시까지 높아지는 것이 예상되는 경우
    • 합격자 발표 : 합격자 발표 당일
    • 새로운 게임이 나오는 날

실습 : 오토스케일링 with Load balancer(ALB)

1) EC2를 생성하고,AMI는 Amazon Linux 설정, Apache2만 설치

  • EC2에 접속
    • 이전 index.html 코드로 변경
  • 설치 후 html 편집
$ 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 
$ exit

2) 스냅샷 메뉴에서 스냅샷 만들기

  • 스냅샷 설정 > 인스턴스
  • 볼륨 x
  • 태그 x
  • 생성 후 '스냅샷에서 이미지 생성'
    • 이름만 설정
  • 시작 구성 생성(EC2 >Auto Scaling>시작 구성)
    • 이름 설정 : lc_amzm_websever
    • AMI 설정
    • 인스턴스 유형 : t2.micro
    • 추가 구성 X
    • 보안 그룹 : webserver
    • 키 페어 선택
  • Auto Scaling 그룹 생성(EC2 >Auto Scaling > Auto Scaling 그룹)
    • 그룹 이름: as_amzm_webserver
    • 시작 구성 선택
    • 네트워크 구성
      • VPC
      • 서브넷 > 퍼블릿 서브넷으로 2개 설정
    • 로드 벨런싱 생성
      • 로드벨런서 유형 ALB
      • 로드벨런서 체계 Internet_ facing
    • 가용영역
    • 리스너
      • 대상그룹 생성
    • 그룹크기 설정 (원하는 용량[2], 최소[1],최대[3])
    • 크기조정정책 > 없음
    • 생성
  • 인스턴스에 3개의 인스턴스를 있는 것을 확인할 수 있으며 그 중 2개는 실행 중, 1개는 종료 되어 있는 것을 확인할 수 있다.

알면 좋은 것

EC2의 요금제

  • On Demand (온디맨드) : 사용자가 필요할 때 시작해서 필요없을 때 삭제하는 것
    • 할인 없음
    • 이벤트(월드컵, 올림픽, 행사), 프로젝트(시스템 개발) 등
  • Spot Instance (스팟 인스턴스) : 사용자가 구매가격을 제시하면, 가장 높은 가격을 제시한 고객한테 EC2를 사용하게 해줌
    • 경매방식
    • 경매 방식이기에 자주 중단될 수 있음, 작업이 계속 미뤄질 수도 있음
    • 여유로운 작업 할 때 : 데이터 변환작업, 빅데이터를 분석 등
      • NYT(170년 운영)같이 필름(사진)형식의 신문을 PDF로 변환하는 작업 등을 할 때 인스턴스를 활용해서 저렴하게 처리
  • 예약 인스턴스 : 약정을 하고 요금을 지불하는 것
    • 선불, 월별 납부가 가능하며 할인 적용, 선불이면 추가 할인 등의 혜택이 있음
    • 장기간 사용하는 서비스
      • 웹서비스

0개의 댓글