AWS - EC2(Elastic Compute Cloud)

생활코딩
What is Amazon EC2

01 EC2
02 EC2 Instance
03 EC2 인스턴스 가격 정책
04 EC2 인스턴스 장치 설정
05 EC2 태그와 보안
06 EC2 인스턴스 비밀번호
07 EC2 인스턴스 접속
08 EC2 AWS Marketplace
09 EC2 Scalability

EC2

EC2(Elastic Compute Cloud) 는 독립된 컴퓨터를 임대해주는 서비스
Amazon Elastic Compute Cloud is a part of Amazon.com’s cloud-computing platform, Amazon Web Services, that allows users to rent virtual computers on which to run their own computer applications.

  • 인스턴스: 가상 컴퓨팅 환경

  • Amazon 머신 이미지(AMI): 서버에 필요한 운영체제와 여러 소프트웨어들이 적절히 구성된 상태로 제공되는 템플릿으로 인스턴스를 쉽게 만들 수 있습니다.

  • AWS 콘솔을 보면 EC2 화면이 제일 상단에 표시
  • EC2 는 AWS 서비스중에서 가장 먼저 등장했고 가장 범용적인 서비스

EC2-Instances

Instances : 컴퓨터 하나를 의미

컴퓨터 생성

  • Launch Instance 버튼 클릭
    • 1 ) 운영체제 선택 (Ubuntu)
    • 2 ) Free tier eligible > 1Gib 선택
    • 3 ) Number of Instances : 1 –> Review and Launch
    • 4 ) Add storage (8GB) 선택
    • 5 ) Tag Instance : 컴퓨터 이름 지정 (// Value 탭에 WebServer 라고 명명)
    • 6 ) Security : Security group name (web server 라고 지정) –> ADD RULE
    • Launch 버튼 클릭
    • 7 ) Select an existing key pair or create a new key pair
      • key pair name : awspwd 입력 > Download Key pair
      • Launch Instance
    • View Instances
    • 그러면 컴퓨터 한 대가 생성이됩니다.!!! 이제부터 원격으로 컴퓨터를 사용할 수 있습니다!!!
  • 생성된 Instance 삭제
    • Instance 우클릭 > Terminate Instances

EC2 인스턴스 Choose AMI (Amazon Machine Image)

  • Launch Instance 버튼 클릭
    • 1 ) 운영체제 선택 (Ubuntu)
    • 2 ) Free tier eligible > 1Gib 선택

Family 목적

  • General Purpose
  • Compute Optimized : CPU 파워
  • Storage Optimized : 저장공간 넉넉

Choose an Instance Type

  • m ~~ : 메모리 성능이 좋은 instance
  • c ~~ : CPU 성능이 좋은 instance
  • g ~~ : GPU 성능이 좋은 instance

EC2_인스턴스_가격_정책_Choose_Instance_Type

AWS Free Tier

  • 온디맨드 인스턴스
    • 필요할때마다 켜고 끌 수 있는 컴퓨터
    • 운영체제별로 가격이 다름
  • 예약 인스턴스
    • 할인권을 구매하는 것
    • 켜고 끄거나 할 때 할인권을 적용하면 훨씬 더 저렴하게 컴퓨터를 사용할 수 있음
  • 스팟 인스턴스
    • 노는 컴퓨터가 많을 때는 가격이 저렴
    • 노는 컴퓨터가 없으면 일반 인스턴스보다 비용이 높아짐
    • 인스턴스의 가격이 주가처럼 가변적인 인스턴스 가격정책

EC2_인스턴스_장치_설정_Configure_Instance

Configure Instance

  • Shutdown behavior : 운영체제에서 컴퓨터를 shutdown
    • Stop : 일시로 얼려놓는 것 요금은 storage 비용만 / instance용 비용 x
    • Terminate : 데이터 삭제
  • Enable termination protection : 실수로 인스턴스 삭제하는 것 방지

Add Storage

  • Size : 30GB까지는 무료
    • 리눅스는 default 8GB, 윈도우는 30GB
  • Volume type : 장착하는 저장장치 형식
    • Gerneral Purpose SSD
  • Delete on Termination : 인스턴스가 삭제되면 저장장치도 삭제하겠다는 뜻

  • cf) EBS_Amazon Elastic Block Store / 아마존에서 제공하는 일종의 하드디스크와 같은 서비스

EC2_태그와_보안그룹_Add_Tags__Confiugre_Security_Group

Add Tags

  • 인스턴스의 역할 / 관리자에대한 정보 메모
    • Name : Web Server
    • Manager : mgleesu
    • type : ///

Configure Security Group

  • 인스턴스 접근 권한 설정
  • Type : 내가 만든 인스턴스에 접속하는 방법
    • SSH : Secure Shell Protocol
      • 만들어진 인스턴스를 원격제어를 통해서 제어를 하는 경우에 linux나 unix계열에서 사용하는 원격제어의 방식
      • SSH란?
      • SSH : 네트워크 프로토콜 중 하나로 컴퓨터와 컴퓨터가 인터넷과 같은 Public Network를 통해 서로 통신을 할 때 보안적으로 안전하게 통신을 하기 위해 사용하는 프로토콜 (for 데이터 전송 & 원격제어)
        • 데이터 전송 : push source code in github by SSH
        • 원격 제어 : AWS의 인스턴스 서버에 접속하여 해당 머신에 명령을 내리기 위해서도 SSH를 통한 접속을 해야함
      • 그렇다면 FTP 나 Telnet같은 다른 protocol 말고 왜 SSH?
        • 보안
      • SSH는 다른 컴퓨터와 통신을 하기 위해서 비밀번호 입력을 통한 접속을 하지 않음
      • SSH는 한 쌍의 Key {Publick Key, Private Key}를 통해 컴퓨터와 인증과정을 거침
        • Public Key : 공개되어도 비교적 안전한 키 pulic key를 통해 메시지를 전송하기전 암호화
          • 암호화(encryption)는 가능하지만 복호화(decryption)은 불가능
        • Private Key : Private Key는 절대로 외부에 노출이 되어서는 안되는 Key로 본인의 컴퓨터 내부에 저장
          • Private Key를 통해 암호화된 메시지를 복호화 가능

          • 이러한 Private Key와 Public Key를 통해 다른 컴퓨터와 통신을 하기 위해서는 먼저 Public Key를 통신하고자하는 컴퓨터에 복사하여 저장합니다. 그리고 요청을 보내는 클라이언트 사이드 컴퓨터에서 접속 요청을 할 때 응답을 하는 서버 사이드 컴퓨터에 복사되어 저장된 Public Key와 클라이언트 사이드에 해당 Public Key와 쌍을 이루는 Private Key와 비교를 하여 서로 한 쌍의 Key인지 아닌지를 검사합니다.
          • 이렇게 서로 관계를 맺고 있는 Key라는 것이 증명이 되면 비로소 두 컴퓨터 사이에 암호화된 채널이 형성이 되어 Key를 활용해 메시지를 암호화하고 복호화하며 데이터를 주고 받을 수 있게 됩니다.
    • HTTP : 웹서버로도 인스턴스를 만들고싶은경우
      • port number : 80
      • Source : Anywhere
    • SSH : 리눅스 원격제어 (port number 22)
    • RDP : 윈도우 원격제어

EC2_인스턴스_비밀번호_생성

  • 인스턴스에 네트워크를 통해서 접속할때 지정하는 비밀번호

  • Create a new key pair
    • Key pair name : aws_password
    • Download Key Pair : 아마존에서 만들어주는 비밀번호
  • 키를 잃어버리면 다시는 접속 할 수 없어요. 대신 인스턴스를 이미지로 만들어서 그걸 다시 런칭하시면 새로운 키로 접속이 됩니다.

EC2_리눅스_인스턴스_접속

  • Window 에서 리눅스 인스턴스로 접속
    • 윈도우는 SSH 를 가지고 있지 않기 때문에 SSH 역할을 하는 프로그램 즉, 원격제어 프로그램을 설치해야 함
    • www.netsarang.co.kr
      • Xshell
    • putty

Instances -> 내가 생성한 Instance 우클릭 -> Connect
Connect to your Instance

  • Open an SSH client (터미널 열기)
    • Mac의 경우 Mac terminal
    • Window의 경우 ssh 프로그램설치 -> Xshell 오픈
  • Connect to your instance using its Public IP
    • 54.238.222.246 : 우리가 접속하려는 인스턴스 컴퓨터의 IP주소
  • Xshell 오픈 > 열기 > 새로만들기
  • 이름 : webServer
  • host : 54.238.222.246 //인스턴스 IP
  • SSH > 사용자 이름 > ubuntu 혹은 ec2-user
  • SSH > 비밀번호 > Public Key
  • SSH > 찾아보기 > 가져오기 > aws_password 등록
  • SSH > 암호 > 빈칸으로 남겨둠

리눅스 인스턴스에서 웹서버 사용

$ sudo apt-get update
$ sudo apt-get install apache2

EC2_AWS_Marketplace

  • AWS Marketplace
    • google 에서 AWS Marketplace라고 검색
    • 구글 앱스토어같은 느낌 (다른사람들이 만든 인스턴스를 사용)
    • 대표적인 프로그램(Image) : WordPress

EC2_Scalability

AWS 를 이용해서 Sacalability를 확보하는 방법
Scalability : 변화하는 컴퓨터 수요에 얼마나 탄력적으로 공급을 변화시킬 수 있는가

  • EC2 의 가장 큰 특징
    • 1) 가상화 virtualization
      • 가상머신이란?
        • 컴퓨터 (물리적 기계) > 운영체제 > 가상머신(소프트웨어로 만든 기계)
        • 가상머신 : 운영체제 위에 설치된 소프트웨어
        • 하나의 물리적인 기계위에 하나의 운영체제만 작동하게하는것이아니라
        • 하나의 물리적인 기계위에 가상머신을 설치하고 가상머신위에서 여러개의 운영체제를 실행할수있게함
        • 개인용 가상머신 software : VMWare / VirtualBox / Parallels

        • 기업용 Cloud computing
          • 전통적 방식 : 회사가 자사의 시설에 자체적으로 서버를 두고 컴퓨팅서비스
          • Cloud : 전통적인 방식처럼 사용자에게 컴퓨터를 하나씩 통째로 배당하는게 아니라 필요한 만큼 떼어서 나눠줌
          • 가상 컴퓨터 기술 : 물리적 서버한 대에 가상의 컴퓨터 여러개를 띄울 수 있음
            • 컴퓨터의 물리적 자원을 필요에 따라 분할해서 사용
            • 사용자는 원격 접속 소프트웨어를 이용해서 마치 컴퓨터 한대를 사용하는 것처럼 인터넷으로 연결된 가상 컴퓨터르 사용
      • 가상화
        • 가상화는 소프트웨어를 사용하여 프로세서, 메모리, 스토리지 등과 같은 단일 컴퓨터의 하드웨어 요소를 일반적으로 가상 머신(VM)이라고 하는 다수의 가상 컴퓨터로 분할할 수 있도록 해주는 컴퓨터 하드웨어 상의 추상화 계층을 구축
      • 가상머신
        • 가상 머신(VM)은 소프트웨어 형식으로 물리적 컴퓨팅을 시뮬레이션하는 가상 환경
      • Cloud
        • 클라우드 컴퓨팅 모델은 가상화 기반
        • 서버, 스토리지 및 기타 물리적 데이터 센터 리소스를 가상화
        • IaaS(Infrastructure as a Service): 해당 요구사항에 맞게 구성이 가능한 가상화된 서버, 스토리지 및 네트워크 리소스
        • PaaS(Platform as a Service): 클라우드 기반 애플리케이션과 솔루션의 구축에 사용할 수 있는 가상화된 개발 툴, 데이터베이스 및 기타 클라우드 기반 서비스
        • SaaS(Software as a service): 클라우드에서 사용되는 소프트웨어 애플리케이션입니다. SaaS는 하드웨어에서 대부분 추상화된 클라우드 기반 서비스
      • Container
    • 2) 종량제 : 시간이나 접속량에 따른 종량제

클라우드 서비스 모델

  • IaaS Infrastructure as a Service
    • virtual machine
    • 가상머신에 가상네트워크를 붙여서 우리가 실제로 서버를 구성하고 거기다 app설치하고 운영
    • 유연성 가장 높은 우리가 다해야해서
    • 단, 유지보수도 우리가 해야함

    • 서비스 제공자가 제공하는 것
      • 물리적 데이터 센터 / 건물
      • 네트워킹 방화벽 / 보안
      • 서버 및 스토리지
  • PaaS Platform as a Service
    • 내가 가상머신을 운영안할래
    • 나는 코드만쓰고 배포만할래
    • 모든 것들을 클라우드 서비스들이 제공을해줌
    • virtual machine 쓰는 것보다 자유도가 떨어짐
    • 나는 몇가지 환경설정같은 것만 바꿀 수 있음

    • 서비스 제공자가 제공하는 것
      • 물리적 데이터 센터 / 건물
      • 네트워킹 방화벽 / 보안
      • 서버 및 스토리지
      • 운영체제
      • 개발도구(데이터베이스관리, 비지니스분석)
  • SaaS Software as a Service
    • 소프트웨어
    • SaaS는 코드까지 돌아가는 것
    • 사용자는 그냥 돈내고 서비스 이용하면 됩니다.
    • SaaS 같은경우는 세팅을켜고, 끄는 수준
    • SaaS 같은 경우는 소프트웨어 의존적
    • Office 365 word / ppt / excel - 클라우드에서 돌아갑니다. 이게 SaaS의 예시

    • 서비스 제공자가 제공하는 것
      • 물리적 데이터 센터 / 건물
      • 네트워킹 방화벽 / 보안
      • 서버 및 스토리지
      • 운영체제
      • 개발도구(데이터베이스관리, 비지니스분석)
      • 호스팅된 애플리케이션 & 앱

Scale UP

Scale UP : 컴퓨터의 수요에 따라서 더 좋은 컴퓨터로 교체
더 성능이 좋은 인스턴스를 만들어서 더 많은 컴퓨팅 수요를 충족

  • Elastic IP는 고정아이피를 의미
  • Public IP는 instance를 stop -> start할때마다 update

  • Network > Elastic IPs > Allocate New Address 하면 고정IP 생성가능
    • Elastic IPs 요금
    • Elastic IPs 를 생성하면 instance를 stop->start 해도 IP가 업데이트 x
  • 성능이 더 좋은 인스턴스를 만들어서 Elastic IP를 더 좋은 인스턴스로 옮기기
    • Disassociate Address of existing instance
    • Associate Elastic IP address with new instance

Scale Out (ELB)

Scale Out : Scale Up으로 해결이 안되고 한계에 도달했을 때 여러개의 컴퓨터가 협력해서 Traffic 을 감당
시스템이 컴퓨팅 파워를 많이 요구할 수록 Scale UP을 하다보면 단일 컴퓨터로서 한계에 도달 –> Scale Out

  • ELB (Elastic Load Balancer)
    • Load Balancer : Traffic 부하를 분산기키면서 traffic 균형을 잡아주는 서비스
    • AWS 의 Load Balancer 는 ELB 서비스
  • ELB 생성
    • Load Balancers > Create Load Balancer
    • 사용자가 HTTP로 접속한다고 하면 Load Balancer 포트도 80, Load Balancer에 연결된 Instance 포트도 80
    • ELB 생성하고 Description쪽에 DNS Name 으로 접속하면 ELB가 분산해주는 Web Server로 각각 연결됨
  • ELB 사용시 주의 사항
    • ELB - WebServer - MiddleWare - DataBase
    • ELB가 어떤 WebServer로 연결을 시켜주더라고 DataBase는 공용으로 쓸 수 있게끔 시스템을 부하분산해야함

Amazon EC2 Auto Scaling

Auto Scaling
Scale out 하기에는 사용자가 언제 많을지 수동으로 체크하기 어려움
Auto-Scaling : 컴퓨터를 자동으로 생성해서 자동으로 생성한 컴퓨터가 바로 서비스를 시작하게 했다가 더이상 컴퓨터가 필요없어지면 컴퓨터를 삭제하여 과금이 되지 않도록함

  • Create Auto Scaling Group
    • Step 1) Launch configuration
      • 자동으로 Instance를 만들 때 만드려는 Instance는 어떤 IMAGE 에 기반하고 어떤 Instance Type을 사용하고 있는가
        • Choose AMI > My AMIs 선택
    • Step 2) Auto Scaling Group
      • 언제 어떤 조건에서 Instance를 자동으로 만들 것인가
  • Auto Scaling 기능을 통해 Instance가 Increase / Decrease하는 경우
    • CloudWatch 서비스에서 Alarm notification을 보내줌
  • Auto Scaling 기능을 통해 새로 생기고 삭제되는 Instance는 랜덤

Categories:

Updated: