[구름 k8s] TIL 2-1-3

Peppie·2022년 9월 7일
0

1. 컴퓨팅 서비스 - EC2

EC2 instance 접속 방법

SSH (Secure SH) 사용

  • Linux를 통한 EC2 instance 사용은 CLI 방식으로 운영
  • SSH는 22번 포트를 사용 -> EC2 instance 생성시 보안 그룹 inbound 규칙에 등록해서 사용
  • 보안을 위해 22번 포트 대신 특정 포트로 SSH 사용하는 경우 있음

SSH Client 프로그램

RDP 사용

  • Remote Desktop Protocol : Windows를 원격으로 접속시 사용 (참고)
  • Windows Server를 통한 EC2 instance 사용은 GUI 방식으로 운영
  • RDP client 프로그램을 설치하여 EC2 instance 접속

EC2 instance 생성 절차

EC2 메뉴 -> 인스턴스 -> 인스턴스 시작

  • 이름 및 태그

  • 어플리케이션 및 OS 이미지 - AMI (Amazon Machine Image) 선택
    AMI : 즉시 사용가능한 OS와 관련 패키지 포함한 이미지 파일
    OS type, version, 보조기억장치 type에 따라 적합한 AMI 선택

  • 인스턴스 유형
    • EC2 instance가 동작할 HW 구성 : CPU 형식, 메모리 크기, 인스턴스 스토리지 유형/용량, 네트워크 속도
    • AWS 제공 인스턴스 유형 종류 - 범용 (일반 성능)/컴퓨팅 최적화 (CPU 성능)/메모리 최적화/가속화된 최적화 (GPU 성능)/스토리지 최적화 (보조기억장치)
    • 인스턴스 유형 결정 기준: 제공하려는 서비스 / 요금

  • 키 페어 : ssh client 접속시 사용할 공개키 암호
    • EC2 단위로 생성하거나 미리 생성된 키 페어를 EC2 instance 생성시 공유 가능
    • 키 페어 생성 : 이름 / 유형 (RSA) / 프라이빗 키 형식 - OpenSSH 계열 (Linux, MacOS - .pem) , putty (Windows - .ppk)
    • VS Code와 연동시 .pem 파일 필요

  • 네트워크 설정 : EC2 instance가 동작할 네트워크 (VPC/subnet) 설정
    VPC 결정
    subnet 결정 (외부 네트워크 연결 유무에 따라 public/private subnet 선택)
    퍼블릭 (공인) IP 자동 할당
    • 인터넷을 통한 외부 네트워크 연결 -> 활성화 (퍼블릭&프라이빗 IP 할당)
    • 내부 네트워크 간 통신만 수행 -> 비활성화 (프라이빗 IP만 할당)

  • 보안 그룹 : EC2 instance에 대한 방화벽 역할, 여러개 선택 가능 (최대 5개)
    stateful 방식 - 상태 저장 방식, 송신자의 IP주소와 포트번호 저장 -> outbound
    (모든 패킷 거부로 설정해도 해당 IP주소와 포트에 대해서는 통신가능)
    보안 그룹 규칙
    • inbound : 외부에서 EC2 instance에 전송, 기본 규칙은 모든 패킷 차단
    • outbound : EC2 instance에서 외부로 전송, 기본 규칙은 모든 패킷 허용

  • 스토리지 구성 : EC2 instance가 사용하는 스토리지에 대한 용량 설정/추가
    통상 OS를 사용하기 위해서는 root file system 구성 필요 -> 이를 위한 기본 스토리지 설정
    instance storage volume : EC2 instance의 root file system을 구성하는 스토리지
    인스턴스 스토리지 볼륨은 EC2 instnace 삭제될 때 동시에 삭제
    인스턴스 스토리지 볼륨에 저장되는 데이터 양만큼 비용 과금
    추가적인 스토리지 추가 가능

  • 고급 세부 정보
    스팟 인스턴스 요청 : 스팟 인스턴스 요금제로 생성시 선택
    종료 방지 : EC2 instance가 잘못 종료되는 것 방지 옵션
    사용자 데이터: EC2 instance가 생성/시작할 때 자동 수행할 내용을 shell script 형식으로 작성

EC2 instance 상태

pending

EC2 instance 구동준비 상태, 요금 미청구

running

EC2 instance 구동 상태, 요금 청구

stopping

EC2 instance 구동중지 상태, 요금 미청구, 스토리지 비용은 청구, 메뉴 - 인스턴스 정지

shutting down

EC2 instance 종료준비 상태, 요금 미청구

terminated

EC2 instance 삭제, 요금 미청구, 메뉴 - 인스턴스 종료
(중지 vs 종료 헷갈리지 말 것!)

EC2 instance IP Address

퍼블릭 IPv4 주소

인터넷에서 사용가능한 IP

  • EC2 instance가 실행중인 상태에서만 유지 (동적 IP 주소)
  • 기본적으로 EC2 insatnce에 부여된 퍼블릭 IPv4 주소는 동적할당된 IP 주소
    -> EC2 instance가 중지되었다가 다시 실행되면 새로운 IP 주소 부여

프라이빗 IPv4 주소

서브넷에 설정한 IP주소 CIDR 범위에서 할당된 로컬 IP, VPC 내에서 통신 가능

EC2 instance 요금 계산

EC2 instance 실행 시간

EC2 instance가 중지 상태인 경우 요금 계산에서 제외

인스턴스 스토리지 볼륨(EBS) 사용량

EC2 instance가 중지 상태인 경우라도 사용요금 부과

네트워크 사용량

패킷 전송(송신)에 대한 비용

탄력적 IP (EIP)

Elastic IP, 고정 IP; 5개까지의 IP를 EIP로 할당 가능

탄력적 IP 사용 경우

  • EC2 instance에 고정 IP를 부여하고자 하는 경우
  • NAT Gateway를 사용하는 경우 반드시 EIP 사용
  • 고정 IP 필요성이 있는 경우 사용

EIP 요금

  • EIP가 EC2 instance에 할당되고 실행 중일 때는 요금 미청구
  • EIP가 EC2 instance에 할당되고 중지일 때는 요금 청구
  • EIP가 첨부된 네트워크 인터페이스가 연결되어 있으면 요금 미청구

그 외는 요금 청구 (참고)

EIP 생성

EC2 메뉴 -> 탄력적 IP -> 탄력적 IP 주소 할당

  • 네트워크 경계 그룹 - region
  • 퍼블릭 IPv4 주소 풀 (pool) - Amazon의 IPv4 주소 풀
  • 태그 설정

고정 IP를 사용하고자 하는 인스턴스에 EIP 연결

EC2 메뉴 -> 탄력적 IP -> 연결할 EIP 인스턴스 선택 -> 작업 메뉴 -> 탄력적 IP주소 연결

  • 리소스 유형 : 인스턴스
    인스턴스 : EIP를 연결할 인스턴스 선택

EIP 삭제

EIP에 연결된 인스턴스나 네트워크 인터페이스가 없는 경우에만 삭제 가능

EC2 메뉴 -> 탄력적 IP -> 연결할 EIP 인스턴스 선택 -> 작업 메뉴 -> 탄력적 IP 주소 연결 해제 후 다시 작업 메뉴 -> 탄력적 IP 주소 릴리즈를 선택하여 삭제

EC2 instance에 대한 연결

Linux 기반 AMI로 EC2 instance 생성

SSH client 프로그램을 사용하여 접속

  • Windows : putty
  • Linux/MacOS : 터미널 프로그램

Windows 기반 AMI로 EC2 instance 생성

RDP client 프로그램을 사용하여 접속

EC2 instance 접속시 login ID

링크 참조

EC2 instance 접속시 IP주소 사용법

  • public IP 주소로 접속 후 login-id 입력
  • login-id@EIP를 사용하여 접속 및 로그인

Amazon Linux Web Server 구축

sudo yum install

yum : Redhat 계열 Linux 배포판 패키지 매니저 프로그램

web server 구축

apache web server 프로그램 설치

패캐지 이름: Debian - apache2 / Redhat - httpd
sudo yum -y install httpd

apache web server daemon 실행 및 자동 실행 설정

  • sudo systemctl start httpd
  • sudo systemctl enable httpd

보안 그룹 변경

  • 보안 그룹은 EC2 instance에 대한 방화벽 역할: instance 보안
  • 보안 그룹의 inbound 규칙을 서비스에 맞게 조정
  • 웹서비스를 위해 필요한 포트번호 : 80번 - HTTP / 443번 - HTTPS

보안 그룹 변경 / 추가

  • EC2 메뉴 -> 보안 그룹 -> 기존 보안 그룹 선택 -> inbound 규칙 수정
  • EC2 메뉴 -> 보안 그룹 -> 보안 그룹 생성

    보안 그룹 이름
    설명
    VPC 선택
    인바운드 규칙 추가

  • 추가된 보안 그룹을 EC2 instance 보안 그룹 추가
    • 실행중인 EC2 instance에 보안 그룹 추가

    EC2 메뉴 -> 인스턴스 -> EC2 instance 선택 -> 작업 메뉴 -> 보안 -> 보안 그룹 변경

    • 연결된 보안 그룹 영역에서 보안그룹 선택에 연결할 보안 그룹 지정
    • 보안 그룹 추가 버튼 활성화 -> 추가 선택

EC2 instance를 이용한 Application 개발 환경

  • EC2 instance에서 직접 application 개발
    EC2 instance에서 수행하는 linux의 editor 프로그램을 이용하여 개발

    vi index.html -> web application

배포하기 위한 디렉토리에 application 복사

sudo index.html /var/www/html -> web application 배포

  • 사용자 host에서 application 개발 후
    FTP를 이용한 application 전송
    Git을 이용한 git repository 공유

    개발자 host에서 application 개발
    완료된 application github repository에 push
    EC2 instance에서 github repository에 내용 pull

    • git package 설치 : sudo yum -y install git
    • github repository clone : git clone <레포지토리 주소>
    • 배포하기 위한 디렉토리에 application 복사
      sudo cp * /var/www/html -> web application 배포
  • VS Code를 이용해서 EC2 instance 연결을 통해 직접 application 개발 - SSH 이용

2. TIF

사실 역대급 사고(?)가 터지긴 했다. 생성한 인스턴스가 아무리 무슨 수를 써서라도 putty로 접속이 안되는 것이다. 이것 때문에 시간은 시간대로 날려먹고 생성했다가 정지시킨 인스턴스 개수들은 헤아릴 수 없을 지경(?)이었다. 진도는 진도대로 뒤쳐지고 스트레스틑 스트레스대로 받고. 농담 아니고 정말 세상이 끝이 나는 기분이었다.

이렇게 망했나 싶었는데 그래도 천만다행히도 AWS 웹 콘솔에서 직접 해당 인스턴스로 접속하는 방법을 알아내어 무사히 들어가고 또 나머지 실습을 잘 마칠 수 있었다. 정말로 putty가 연결될 수 있다면 더할나위 없겠지만, 일단 학습이 급한대로 당분간은 putty에 연결된 셈 치고 직접 콘솔을 통해 접속을 이어나가야 할 것 같다.

이런저런 방법을 찾아도 안되고는 있지만 언젠간 끝내 접속될 수 있기를 바란다. 아니면 부디 그냥 내 컴퓨터만의 문제이기를.

0개의 댓글