구름 쿠버네티스

구름 쿠버네티스 전문가 과정 6기 - 30일차

jwlish 2023. 9. 27. 11:30
반응형

리뷰 (Review)

더보기

NAT Gateway

  • 인터넷과 연결을 수행하지만 단방향 통신만 수행 (인터넷 게이트웨이는 양방향 통신 수행)
  • 일반 Client가 Private Subnet에 있는 AWS 리소스 접근은 불가능
  • NAT Gateway 서비스 인스턴스는 반드시 Public Subnet에 위치해야 한다.
  • NAT Gateway 서비스는 EIP (탄력적 IP, 고정 IP)를 사용한다.

 

Bastion Server

  • Private Subnet에 위치한 EC2 Instance를 제어하는 목적으로 사용하는 EC2 Instance

 

AWS 네트워크 보안

  • 보안 그룹 (Security Group)
    • EC2 Instance 단위로 설정하고, Inbound 규칙과 Outbound 규칙으로 구성
    • 허용 (Allow) 규칙만 생성 가능
    • 기본적으로 모든 보안 그룹의 Outbound 규칙은 모든 트래픽을 허용, Inbound 규칙은 모두 거부
    • 각 EC2 Instance는 서로 다른 보안 그룹 할당이 가능
    • 보안 그룹은 상태를 저장하는 성격(stateful)을 갖는다.
  • 네트워크 ACL (NACL)
    • Inbound 규칙과 Outbound 규칙으로 구성
    • NACL은 여러 Subnet에 적용이 가능하지만, Subnet은 한개의 NACL만 연결 가능
    • 허용 (Allow) 규칙과 거부 (Deny) 규칙 생성 가능
    • 낮은 규칙 번호 순으로 적용
    • NACL은 상태를 저장하지 않는 성격(stateless)을 갖는다.

 

스토리지 서비스

  • 데이터나 객체를 저장하기 위한 목적으로 사용하는 서비스
    • 블록 형태 데이터 저장 스토리지 서비스 - EBS (Elastic Block Storage)
    • 파일 형태 데이터 저장 스토리지 서비스 - EFS (Elastic File Storage)
    • 객체 형태 데이터 저장 스토리지 서비스 - S3 (Simple Storage Service)

 

EC2 인스턴스 스토리지 볼륨

  • EC2 Instance의 기본 저장 공간으로 사용하는 EBS로 EC2 루트 볼륨을 의미
  • EC2 Instance 삭제 시 인스턴스 스토리지 볼륨도 같이 삭제되므로 중요 정보 보관 필요

 

Scale Out

  • 동시 접속 Client 수에 따른 서버 분산 처리
  • EC2 Instance를 복제하여 여러 개의 EC2 Instance를 생성하는 동작
    • ELB
    • Auto Scailing

 

컴퓨팅 서비스 - AutoScaling

 

Auto Scaling

  • Scale out 적용 시 사용하는 기능
  • 다중 서버를 운영할 때 서버의 일정한 부하 임계치를 넘었을 때 자동으로 서버를 증가시키거나
    부하 임계치가 해소되었을 때 다시 원래의 서버 수로 자동 변화를 수행하는 서비스

 

실습 내용

  • 부하 분산 적용 Web Server Infra 구성 실습
더보기

1. VPC 생성

2. Public Subnet 생성 (가용 영역, AZ 단위로 생성)

3. 2개의 Public Subnet에 각각 EC2 Instance 생성 - 실습 중에는 a와 c에 생성

  • 각각의 EC2 Instance 에는 Web Server 구성
  • 기본 웹페이지 구성

4. ELB 생성

  • EC2 메뉴 → 로드 밸런서 → 로드 밸런서 생성
    • Load balancer type 결정 - Application Load Balancer 선택
    • Load balancer name 결정
    • Scheme - Internet-facing 선택
    • IP address type
    • VPC 및 AZ 선택
    • 보안 그룹 선택
    • Listeners and routing
      • protocol - listen할 프로토콜
      • port - listen할 포트 번호
      • default action - 패킷이 수신되었을 때 할 행동 지정, target group으로 결정
    • Tags 설정
  • target group 생성
    • EC2 메뉴  로드 밸런싱  대상 그룹
      • target type 결정 - Instance 선택
      • Traget group name 결정
      • VPC 및 Protocol version 선택
      • Health checks 설정 - ELB에 연결된 Server 상태 확인
        • Healthy threshold - 인스턴스가 동작중임을 판단하는 횟수
        • Unhealthy threshold - 인스턴스가 동작하지 않는다고 판단하는 횟수
      • Tag names 설정
      • register targets - ELB에 의해서 패킷을 분배할 대상 EC2 Instance
        • Available instances - 패킷 분배 대상 EC2 Instance 선택
        • Include as pending below 선택

5. 서비스 이용 시 ELB의 DNS 이름으로 접속해야 ELB에 의한 Load Balancing 수행

6. 시작 구성 (template) 생성

  • 시작 구성 (template) - Auto Sacling에 의해 생성되는 Server 형태
  • EC2 메뉴 → Auto scaling → 시작 구성 → 시작 구성 생성
    • 시작 구성 이름 설정
    • AMI 선택
    • 인스턴스 유형 선택
    • 추가 구성 설정
    • 스토리지 볼륨 설정
    • 보안 그룹 설정
    • 키 페어 선택
새로 고침을 하면 WebServer 1, 2로 부하 분산 적용

 7. Auto Scaling 그룹 생성

  • EC2 메뉴 → Auto Scaling 그룹 → Auto Scaling 그룹 생성
    1. 시작 템플릿 또는 구성 선택
      • Auto Scaling 그룹 이름 설정
      • 인스턴스의 시작 템플릿 또는 Auto Scaling의 시작 구성 선택
    2. 인스턴스 시작 옵션 선택
      • 네트워크 설정 - Auto Scaling 적용할 VPC와 Subnet 선택
    3. 고급 옵션 구성
      • 로드 밸런싱 설정
      • 기존 로드 밸런서에 연결 - 로드 밸런서 대상 그룹 선택
      • 상태 확인 설정
      • 추가 설정
    4. 그룹 크기 및 크기 조정 정책 구성
      • 그룹 크기
        • 원하는 용량 - Auto Scaling 그룹을 시작하고 유지하려는 EC2 Instance 수
        • 최소 용량 - 최소 용량 미만으로 내려갈 수 없는 EC2 Instance 수
        • 최대 용량 - 최대 용량 초과로 올라갈 수 없는 EC2 Instance 수
      • 크기 조정 정책
        • Auto Scaling이 동적으로 EC2 Instance 개수를 증가시키는 정책
        • 크기 조정 정책 이름 - Target Tracking Policy
        • 대상 추적 크기 조정 정책 지표 유형
          • 평균 CPU 사용률
          • 평균 네트워크 입/출력
          • 대상 당 Application Load Balancer 요청 수
        • 대상값 결정
    5. 알람 추가 (필요 시 설정)
    6. 태그 추가
    7. 검토

8. Auto Sacling 그룹 활동 탭에서 Auto Scaling 작업 기록 확인을 통해 Auto Scaling 동작 과정 확인

9. 자동 크기 조정 탭에서 동적 크기 조정 정책 생성

  • 지표 유형 및 대상값 설정
시작 템플릿을 통해 생성된 인스턴스의 웹페이지도 확인 됨

 

Auto Scaling 실행 테스트

  • 동적 크기 조정 정책을 CPU 사용률에 따른 지표 유형을 선택한 경우 CPU stress test를 통해 테스트 수행 가능
  • Auto Scaling에 의해서 생성된 EC2 Instance에서 테스트
  • 퍼블릭 IP는 EIP를 사용하여 연결
  • sudo amazon-linux-extras install -y epel : Amazon Linux repository에서 epel 패키지 설치
  • sudo yum install -y stress : CPU stress test 패키지 설치
  • stress --help : stress 명령 도움말
    • 현재 시스템 CPU core 수 확인 방법 : cat /proc/cpuinfo
  • stress --cpu <cpu 코어수>
    • CPU stress test 시작
    • 현재 시스템의 cpu 코어수를 입력하면 해당 CPU의 사용률을 100%로 동작할 수 있도록 테스트 수행
    • stress --cpu 1 & : CPU 코어 1개에 대하여 stress test를 background로 실행

스토리지 서비스 - S3

 

S3 (Simple Storage Service)

  • 객체를 저장하는 스토리지
    • 객체 (Object) 구성
      • 속성 (Attribute) - 객체 상태
      • 행위 (Behavior) - 객체 상태 변경 / 이용 동작
    • S3에 저장되는 객체 구성 요소 - 데이터, 메타 데이터, 키(Key)로 구성
    • 데이터(값) - 이미지, 동영상, 텍스트 문서 또는 기타 유형 파일
    • 메타 데이터 - 데이터 내용, 사용 방법, 객체 크기 등에 대한 정보
    • 객체 키(Key) - 객체 고유 식별자
  • S3는 EC2와는 별도로 사용되는 serverless 형식의 서비스
  • S3는 글로벌 단위 서비스
  • S3 생성은 별도의 리전에 생성
  • S3에 저장할 수 있는 하나의 객체 크기는 최대 5TB
  • 별도 EC2 Instance 생성 없이 단독으로 사용
  • S3는 무제한을 공간 제공
  • 참고 자료
  • S3는 버킷 (bucket) 단위로 저장
    • S3는 별도 파일 시스템이 존재하지 않고 버킷에 객체 저장
    • S3 사용 시작은 버킷 생성으로부터 시작
    • 버킷은 객체를 담고 있는 공간
    • 크기는 무제한이고 리전을 지정하여 생성
    • 버킷 이름은 AWS 전체에서 고유해야 하고 중복될 수 없다.
      • 한번 설정된 버킷 이름은 다른 계정이 사용할 수 없다.

 

S3 사용 - 버킷 생성

더보기
  • 서비스 메뉴 → 스토리지 → S3 → 버킷 만들기
    • 버킷 이름 - AWS내에서 고유한 이름 설정
    • AWS 리전 선택
    • 객체 소유권 선택 - ACL 비활성화됨 (객체 소유권을 계정 소유로 한다.)
    • 퍼블릭 액세스 차단 설정 - 모든 퍼블릭 액세스 차단 설정
    • 버킷 버전 관리 설정 - 비활성화
    • 태그 설정
    • 서버 측 암호화 설정 - 비활성화

TIF

한참 Linux로 각종 서버 구축 및 운영 배울 때 로드 밸런서는 못하고 넘어갔다.

그래서 무슨 의미인지도 모르고 넘어왔는데 이번 주에 어느 정도 개념을 잡았고,

오늘 실습을 통해서 확실히 어떤 느낌인지 알게되어 흥미있었다.

 

생각보다 인프라 쪽 신입 개발자 뽑는 곳이 제법 있다. 물론 규모는 크지 않지만.

일단은 올해는 이번 과정과 클라우드 관련 자격증 등 취득을 목표로 해야겠다.

 

 

2022. 09. 14 에 작성된 글입니다.

반응형