AWS - Compute Service (ec2, ...) 기초 맛보기

jsbak·2023년 4월 11일
0

Cloud

목록 보기
17/59

AWS 컴퓨트 서비스

  • Compute Service(Openstack; Nova)
  • Amazon Elastic Compute Cloud(Amazon EC2) 는 Amazon Web Services(AWS) 클라우드에서 확장 가능 컴퓨팅 용량을 제공
  • 하드웨어에 선 투자할 필요가 없어 더 빠르게 애플리케이션을 개발 및 배포 가능
  • 원하는 만큼 가상 서버를 구축하고 보안 및 네트워크 구성과 스토리지 관리가 가능
  • 요구사항이나 갑작스러운 인기 증대 등 변동 사항에 따라 신속하게 규모를 확장하거나 축소할 수 있어 서버 트래픽 예측 필요성이 감소함.

EC2

  • Elastic Compute Cloud
  • 안전하고 크기 조정 가능한 컴퓨팅 자원을 클라우드에서 제공하는 웹 서비스
  • 개발자가 더 쉽게 웹 규모의 클라우드 컴퓨팅 작업을 할 수 있도록 설계
  • 간단한 웹 서비스 인터페이스를 통해 간편하게 필요한 용량을 얻고 구성 가능
  • 컴퓨팅 리소스에 대한 포괄적인 제어권을 제공, Amazon의 검증된 컴퓨팅 환경에서 실행 가능.

EC2 홈

  • EC2 검색 또는 서비스 탭 - 컴퓨팅 - EC2 클릭

  • 홈 대시보드

보안그룹

  • 네트워크 및 보안 탭 - 보안그룹 클릭
  • 인바운드(Ingress) / 아웃바운드(Egress)
  • default 보안 그룹은 사용하지 않는다.
  • default 보안 그룹 삭제 불가

인스턴스 유형

  • Openstack Flavor
  • Customizing 불가
  • t2.micro (Free tier); Region 에 따라 t3.micro 도 Free tier 가능
  • [t] CPU 용도, [2] 세대수, [micro] Compute 사이즈 가늠

EC2 인스턴스 시작

인스턴스 탭

인스턴스 시작(Launch; 생성)

인스턴스 명명; Name and tags

AMI(; Amazon Machine Image) 이미지 설정

  • 스냅샷으로 떠온 OS 이미지를 복사해서 EC2(VM)의 운영체제로 사용
  • CPU의 발달로 대부분의 Cloud 에서는 HVM(; 하드웨어 지원 가상화) 을 이용
  • 검색하거나 해서 이미지를 찾을 수 있고 버전도 선택할 수 있다.
  • 수업은 Amazon Linux 2 AMI 를 이용

인스턴스 유형 선택

키 페어

  • 새 키 페어 생성


네트워크 설정

  • Openstack; Neutron
  • 편집 클릭
  • 172.31.0.0/16 을 쪼개서 쓰겟다.
  • 가용영역
    • 추상적
    • 데이터 센터 2곳이상으로 이뤄지는 것을 논리적으로 묶음.
      /16/20 으로 서브넷팅했다.(쪼갰다), 서브넷은 4091개씩 할당 가능하며; 서브넷이 4개만 있고 아직 12개의 서브넷이 남아 있는것
    • Free tier 의 t2.micro 는 가용영역 a,c 만 가능

보안 그룹 설정

  • SG 이름 설정 및 규칙 추가
  • HTTP, HTTPS, TCP/8080, ICMP 규칙 추가

스토리지 구성

  • Amazon EBS 볼륨 유형
  • gp2/gp3 성능차이 IOPS(;input output per second
  • 프리티어 선택
  • 어드밴스드 확인; 세부 설정도 가능하다.

고급 세부 정보

  • 도메인 조인 디렉터리; (Active Directory) 사용자, 그룹 및 디바이스에 대한 정보를 저장하고, 관리자는 이를 사용하여 정보 및 리소스에 대한 액세스를 관리
  • IAM 지정 등
    • 종료 동작(중지/삭제)

    • 종료 방지(제거 방지 활성/비활성)

    • 중지 방지(중지 방지 활성/비활성)

    • 세부 CloudWatch 모니터링

    • Elastic Inference; 머신러닝 용도로 사용시(비용 추가)

    • 테넌시; 사용자에 대해 인스턴스 공유 범위

    • 인스턴스 생성시 1회 실행하는 사용자 명령

      간단한 웹 서버 설치

      --- RHEL 계열
      #!/bin/bash
      yum install -y httpd
      systemctl enable --now httpd
      echo "<h1>WEB-01</h1>" > /var/www/html/index.html
      
      --- Ubuntu 계열
      #!/bin/bash
      apt update
      apt install -y apache2
      echo "<h1>WEB-02</h1>" > /var/www/html/index.html

인스턴스 생성; Launch


결과

인스턴스 중지 / 재시작

  • 인스턴스 선택 - 인스턴스 상태 - 인스턴스 중지
  • 중지 클릭
  • 인스턴스 상태 (⛔ 중지됨)
  • 재 시작 시 퍼블릭 IP가 바뀐것 확인(유동 IP)
    • 고정 IP가 필요하다면 EIP를 받아야한다.

EIP(탄력적 IP) 할당

  • 고정 IP
  • 모든 계정에서는 사용하는 EIP 1개에 한해에서는 비용을 부과하지 않지만, EIP 가 2개 이상이면 비용이 발생한다.
  • EC2 탭 - 네트워크 및 보안 - 탄력적 IP(Elastic IP) 클릭
  • 탄력적 IP 주소 할당

Elastic IP, EC2와 연결



Elastic IP 연결 결과


인스턴스 접속

  • mobaXterm



❗ Key Pair 없이 EC2 Instance Connect로 접속하는 방법 ❗

사전 조건

  • AMI
    • EC2 Instance Connect는 다음 AMI에 사전 설치되어 있습니다.
      • Amazon Linux 2023
      • Amazon Linux 2 2.0.20190618 이상
      • Ubuntu 20.04 이상
    • 다음 AMI를 사용하여 시작한 인스턴스에 EC2 Instance Connect를 설치할 수 있습니다.
      • Amazon Linux 2(모든 버전)
      • Ubuntu 16.04 이상
  • 네트워크
    • 인터넷을 통해 인스턴스에 연결하는 경우 인스턴스는 퍼블릭 IP 주소를 보유해야 하고 퍼블릭 서브넷에 있어야 합니다.
    • 인스턴스의 프라이빗 IP 주소를 통해 인스턴스에 연결하는 경우 사용자가 인스턴스의 프라이빗 IP 주소에 도달할 수 있도록 AWS Direct Connect, AWS Site-to-Site VPN 또는 VPC 피어링을 사용하여 VPC에 대한 프라이빗 네트워크 연결을 설정해야 합니다. (안쓰고 말지 비싸네)
  • 보안 그룹 규칙
    • 인스턴스와 연관된 보안 그룹이 IP 주소 또는 네트워크에서 포트 22를 통한 인바운드 SSH 트래픽을 허용
  • 권한 부여
    • EC2 Instance Connect를 사용하여 인스턴스에 연결할 모든 IAM 사용자에게 필요한 권한을 부여
    • EC2 Instance Connect에 대한 IAM 권한 부여
      • 특정 EC2 인스턴스에 대한 액세스 제한을 고려
        • ec2-instance-connect:SendSSHPublicKey 작업 - 퍼블릭 키를 인스턴스에 푸시할 수 있는 권한을 부여합니다.
        • ec2:osuser 조건 - 퍼블릭 키를 인스턴스로 푸시할 수 있는 OS 사용자의 이름을 지정합니다.
        • ec2:DescribeInstances 작업 - EC2 콘솔을 사용할 때 필요합니다.
      • 예시
        {
            "Version": "2012-10-17",
            "Statement": [{
                    "Effect": "Allow",
                    "Action": "ec2-instance-connect:SendSSHPublicKey",
                    "Resource": [
                        "arn:aws:ec2:region:account-id:instance/i-1234567890abcdef0",
                        "arn:aws:ec2:region:account-id:instance/i-0598c7d356eba48d7"
                    ],
                    "Condition": {
                        "StringEquals": {
                            "ec2:osuser": "ami-username"
                        }
                    }
                },
                {
                    "Effect": "Allow",
                    "Action": "ec2:DescribeInstances",
                    "Resource": "*"
                }
            ]
        }

❗ Key Pair 없이 Session Manager로 접속하는 방법 ❗

  • 1단계: Systems Manager에 대한 인스턴스 권한 구성 Docs
  • IAM Role 생성
    • "AmazonSSMManagedInstanceCore" 정책을 포함하는 역할 생성, 또는
      • "AmazonEC2RoleforSSM" Deprecated ➡️ "AmazonSSMManagedInstanceCore" 로 대체
      • "AmazonSSMManagedInstanceCore" Policy
        • AWS 시스템 관리자 서비스 핵심 기능을 사용하도록 설정하는 Amazon EC2 역할에 대한 정책입니다.
        • ❗이 정책을 이용할 경우 반드시 SSMInstanceProfile 이름으로 IAM Role을 생성 해야한다. - 그래야지 Systems Manager 가 인식 가능❗
      • IAM 역할 생성을 위해, IAM 콘솔로 접근
      • IAM Dashboard의 Roles를 클릭 후, Create role 버튼을 클릭합니다.
      • Select trusted entity 화면에서 EC2를 선택한 뒤, Next 버튼을 클릭합니다.
      • Add permissions 화면에서 검색창에 SSM을 입력한 뒤, 필터링 된 결과 중에서 AmazonEC2RoleforSSM AmazonSSMManagedInstanceCore을 선택하고 Next 버튼을 클릭합니다.

      • Name(SSMInstanceProfile), review, and create 화면에서 아래와 같이 정보를 입력한 뒤, Create role 버튼을 클릭하여 IAM 역할을 생성합니다.

      • EC2 생성시 Advanced details 패널의 제목 좌측 토글 버튼을 클릭하여 패널을 열고, IAM Instance profile 드롭다운 메뉴에서 앞에서 만들었던 ec2RoleForSSM ➡️ SSMInstanceProfile을 선택합니다.
      • 또는 EC2 선택 - Actions(작업) - Security(보안) - Modify IAM role(IAM 역할 변경) - AmazonEC2RoleforSSM / AmazonSSMManagedInstanceCore 정책이 있는 역할(EC2RoleForSSM/SSMInstanceProfile)을 선택하여 부여

    • 접속


ELB; Elastic Load Balancer

  • EC2 홈 대시보드 - 로드밸런서 클릭 또는 ELB 검색 후 로드밸런서 클릭

클래식 로드 밸랜서 생성

로드 밸런서 생성 클릭


  • 클래식 로드 밸랜서 생성 클릭

고급 VPC 구성 활성화

  • 고급 VPC 구성 활성화
  • 내부 Load Balancer 처리는 인터넷망이 아닌 내부망에서 부하분산하는 경우 선택
    • 인터넷망이 아닌 내부망을 통한 AWS 서비스 간의 로드 밸런싱

서브넷 선택

  • EC2 생성시 지정했던 가용영역 a, c 의 서브넷 선택

보안 그룹 할당

  • 새 보안 그룹 생성 클릭
  • 이름 지정
  • 필요에 따라 규칙 추가

왜 보안 그룹을 새로 할당 하였는가?

  • 보안; CLB를 거치지 않고 WEB 서버에 접속하는 경우도 있을 수 있다.
  • CLB를 통해서 들어오는 요청만 허용가능하도록 설정
    • 보안그룹을 Source 지정하고, 우회해서 WEB으로 직접 들어가는 요청을 거부
  • 보안 그룹 수정시 소스를 보안 그룹으로 설정할 경우 규칙 삭제하고 새로 설정!

보안 설정 구성

  • 기본값; 구성 설정 pass

상태 검사 구성

  • Health Check
  • 비정상 임계값; 2번 연달아서 실패시 정상이 아니라 판단.
  • 정상 임계값; EC2 인스턴스를 정상으로 선언하기 전까지 발생하는 연속적 상태 검사 성공 횟수

EC2 인스턴스 추가

로드밸랜서 검토 및 생성



결과 및 인스턴스 클릭

  • 생성 후 대시 보드 - 생성한 CLB 이름 클릭
  • 생성한 CLB 정보
  • CLB 인스턴스 탭에서 EC2 상태 확인
    • InService; 정상 동작

로드 밸런싱 확인


리소스 제거

  • 과금 요소 제거
  • 인스턴스 부터 제거
  • EC2 대쉬보드로 가서 확인해 과금 요소 제거
    • Elastic IP

인스턴스 제거



로드밸런서 제거



Elastic IP 제거

  • EC2 대쉬보드로 가서 확인해보니 EIP가 있어 제거
  • 삭제할 EIP 선택 - 작업 - 탄력적 IP 주소 릴리스
  • 릴리스
  • 결과
profile
끄적끄적 쓰는곳

0개의 댓글