어쩌다 IT
article thumbnail
반응형

리뷰 (Review)

더보기

EC2 Instance를 이용한 Application 개발 환경

  • EC2 Instance에서 직접 Application 개발 / 배포
  • 사용자 Host에서 Application 개발 후 배포
  • VSCode를 이용하여 EC2 Instance 연결을 통해 직접 Application 개발 - SSH 이용

 

EC2 Instance 이미지 생성 (AMI)

  • EC2 Instance에 대한 backup 이미지

 

EC2 Instance 템플릿 (Template) 생성

  • EC2 Instance의 정보를 가지고 있는 파일

 

EC2 Instance에 대한 Scale up / Scale out

  • Scale up - EC2 Instance에 대한 H/W 성능 향상
  • Scale out - EC2 Instance를 여러개 복제하여 분산 처리

 

컴퓨팅 서비스 - EC2

 

Private Subnet 상의 EC2 Instance 관리 방법

  • Private Subnet에 위치한 AWS resource(EC2, RDS 등)은 직접적인 인터넷 접속이 불가능
  • Private Subnet에 위치한 AWS resource는 외부로부터 직접 접근을 허용하지 않기 위해 구성하는 네트워크
  • Private Subnet에 위치한 AWS resource가 인터넷에 접속하여 사용하기 위해서는 NAT Gateway 서비스 활용
  • NAT Gateway 서비스
    • 인터넷과 연결을 수행하는 서비스
    • 인터넷과 단방향 통신만 수행
      • Internet Gateway는 양방향 통신을 수행하므로 서로 다른 개념
    • Private Subnet에 위치한 AWS resource를 인터넷에 연결하기 위해 활용하는 서비스
    • 일반 Client가 Private Subnet에 있는 AWS resource 접근은 불가능 - 단방향 통신
    • NAT Gateway 서비스 인스턴스는 반드시 Public Subnet에 위치해야 한다.
    • NAT Gateway 서비스는 EIP를 사용한다.

 

  • Bastion Server를 이용하여 Private Subnet에 있는 AWS resource 접근 및 제어
    • Bastion Server
      • Private Subnet에 위치한 EC2 Instance를 제어하는 목적으로 사용하는 EC2 Instance
      • 역할에 따라 부여된 명칭
더보기

Private Subnet에 EC2 Instance 생성

  • 서브넷 - private subnet으로 설정
  • 퍼블릭 IP 할당 - 비활성화

 

NAT Gateway 생성

  • EIP 생성
    • EC2 메뉴 → 탄력적 IP → 탄력적 IP 주소 할당
  • NAT Gateway 인스턴스 생성
    • VPC 메뉴 → NAT 게이트웨이 → NAT 게이트웨이 생성
      • 이름 부여
      • 서브넷 - 반드시 Public Subnet에 위치
      • 연결 유형 - 퍼블릭
      • 탄력적 IP 할당
  • Private Subnet의 라우팅 테이블에 NAT Gateway에 대한 라우팅 추가
    • VPC 메뉴 → 라우팅 테이블 → Private Subnet 라우팅 테이블 선택 → 라우팅 편집
      →라우팅 추가  NAT Gateway 라우팅 추가
  • Private Subnet에 위치한 EC2 Instance는 NAT Gateway를 통해 인터넷 접속이 가능한 상태가 되었으나
    외부에서 인터넷을 통해 Private Subnet에 위치한 EC2 Instance에 직접 접속은 불가능하다. (단방향 통신)
  • Public Subnet에 위치한 Bastion Server를 통해 Private Subnet에 위치한 EC2 Instance를 제어한다.
    • Bastion Server를 이용하여 Private Subnet의 EC2 Instance에 접속하기 위해서는 Private Subnet의 EC2 Instance에 대한 키 페어 파일이 Bastion Server에 위치해야 한다.
    • Bastion Server에 Private Subnet의 EC2 Instance용 키 페어 파일 저장 방법
      • VSCode 원격 접속을 통하여 키 페어 파일 upload
      • FTP 또는 Git을 이용하여 키 페어 파일 공유 

 

실습 내용

  • 관리자 → Bastion Server 접속 → 필요시 키 페어 파일 Bastion Server에 저장
    → Bastion Server에서 Private Subnet EC2 Instance 접속 → 작업 수행


네트워크 보안

  • 네트워크 통신
    • 패킷(packet) 단위로 통신
    • 패킷에는 수신 측 IP Address, Port Number, 송신 측 IP Address, Port Number 정보가 포함되어 있다.
  • AWS 네트워크 보안
    • 인스턴스 보안
      • 보안 그룹 (Security Group)
        • EC2 Instance 단위로 설정
        • Inbound 규칙과 Outbound 규칙으로 구성
        • 허용(Allow) 규칙만 생성 가능
        • 기본적으로 모든 보안 그룹의 Outbound 규칙은 모든 트래픽을 허용하고 Inbound 규칙은 모두 거부
        • 각 EC2 Instance는 서로 다른 보안 그룹 할당 가능
        • 설정된 EC2 Instance는 연결되어 있는 보안 그룹의 모든 룰을 적용받는다.
        • 보안 그룹은 상태를 저장하는 성격(stateful)을 갖는다.
          • Inbound를 통과하는 패킷은 Outbound 규칙을 적용받지 않는다.
          • 상태를 저장하여 한번 Outbound를 통과하는 패킷은 Inbound 규칙을 적용받지 않는다.
    • 네트워크 보안
      • 네트워크 ACL (NACL)
        • Inbound 규칙과 Outbound 규칙으로 구성
        • NACL은 여러 subnet에 적용 가능하나 subnet은 한 개의 NACL만 연결 가능
        • 허용(Allow) 규칙뿐만 아니라 거부(Deny) 규칙 생성 가능
        • 규칙은 규칙 번호로 매겨져 작은 숫자 값을 지니는 규칙이 우선적으로 적용
        • 규칙 번호순으로 적용
        • NACL 규칙 목록은 Inbound, Outbound 최대 20개까지 지정 가능
        • NACL은 상태를 저장하지 않는 성격(stateless)을 갖는다.
          • 상태를 저장하지 않으므로 한번 Inbound를 통과하는 패킷은 Outbound 규칙을 적용받는다.
          • 상태를 저장하지 않으므로 한번 Outbound를 통과하는 패킷은 Inbound 규칙을 적용받는다.
더보기
  • VPC 메뉴 → 네트워크 ACL → 네트워크 ACL 생성
    • 이름 부여
    • VPC 설정

 

  • 네트워크 ACL 선택
    • 서브넷 연결
    • 인바운드 규칙과 아웃바운드 규칙 편집

 

  • 보안 그룹과 네트워크 ACL(NACL)을 조합하여 필요한 보안 관리를 수행할 수 있다.
  • 통상은 보안 그룹을 통해 관리 

스토리지 서비스 - EBS

 

스토리지 서비스

  • 데이터나 객체를 저장하기 위한 목적으로 사용하는 AWS 서비스
  • 종류
    • 블록 형태 데이터 저장 스토리지 서비스 - EBS (Elastic Block Storage)
      • 일반적인 데이터 저장
      • 외장 HDD/SDD 성격
      • EC2 Instance와 연결하여 사용
    • 파일 형태 데이터 저장 스토리지 서비스 - EFS (Elastic File Storage)
      • 네트워크를 이용한 파일 저장 및 공유
      • NAS 성격
      • 데이터 공유
      • 일반적으로 EC2 Instance와 연결하여 사용 - NFS (Network File System) 사용
    • 객체 형태 데이터 저장 스토리지 서비스 - S3 (Simple Storage Service)
      • 객체 (object) 단위로 저장
      • Serverless 방식 - 별도의 EC2 Instance와 연결하지 않더라도 사용 가능
      • AWS의 다른 서비스와 데이터 공유를 목적으로 할 때 많이 사용된다.

 

EBS (Elastic Block Storage)

  • EC2 인스턴스 스토리지 볼륨
    • EC2 Instance의 저장 공간으로 사용하는 EBS
    • EC2 루트 볼륨 의미
    • EC2와 연동하여 사용
    • EC2 Instance 삭제 시 인스턴스 스토어 볼륨도 같이 삭제되므로 중요 정보 보관 필요
    • 참고 자료

 

  • EBS (Elastic Block Storage)
    • AWS 기본 블록 스토리지
    • Application의 기본 스토리지로 사용하거나 시스템 스토리지로 사용하는데 적합
    • 필요시 EC2 Instance에 마운트하여 사용
    • 크기가 정해지면 크기 변경이 불가능하다.
    • 같은 가용 영역의 EBS만 공유할 수 있다.
    • 하나의 EC2 Instance만 EBS 볼륨과 연결해서 사용할 수 있다.
    • 사용 목적
      • 데이터 보관
      • 스냅샷 저장
    • 참고 자료

 

  • EBS 공유 실습
    • 2개의 EC2 Instance 간 EBS 볼륨을 이용한 데이터 공유

더보기

EBS 생성

  • EC2 메뉴 → 볼륨 → 볼륨 생성
    • 볼륨 유형 선택
    • 크기 결정
    • 가용 영역 선택
    • 태그명 지정

 

EC2 Instance와 연결

  • EC2 Instance와 EBS 볼륨 연결
    • EC2 메뉴 → 볼륨 → 작업 메뉴 → 볼륨 연결
      • 인스턴스 선택
      • 디바이스 이름 확인 - O/S에서 마운트할 때 연결한 디바이스 이름
  • 연결된 볼륨에 대하여 EC2 Instance의 O/S에서 mount 작업
    • lsblk : 연결된 디바이스 정보 확인 명령어
    • df -h : 디바이스 연결 상태 확인
    • sudo mkfs -t ext4 /dev/xvdf : 연결할 EBS 볼륨에 대한 file system 생성
    • sudo mount /dev/xvdf /mnt : /dev/xvdf에 연결된 EBS 볼륨과 /mnt 디렉토리 마운트
    • sudo umount /mnt : 마운트 해제
[ec2-user@ip-12-12-12-12 ~]$ lsblk
NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
xvda    202:0    0    8G  0 disk
└─xvda1 202:1    0    8G  0 part /
xvdf    202:80   0  100G  0 disk
[ec2-user@ip-12-12-12-12 ~]$ df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        474M     0  474M   0% /dev
tmpfs           483M     0  483M   0% /dev/shm
tmpfs           483M  512K  483M   1% /run
tmpfs           483M     0  483M   0% /sys/fs/cgroup
/dev/xvda1      8.0G  2.1G  6.0G  26% /
tmpfs            97M     0   97M   0% /run/user/1000
[ec2-user@ip-12-12-12-12 ~]$ sudo mkfs -t ext4 /dev/xvdf
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)

...

[ec2-user@ip-12-12-12-12 ~]$ sudo mount /dev/xvdf /mnt
[ec2-user@ip-12-12-12-12 ~]$ df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        474M     0  474M   0% /dev
tmpfs           483M     0  483M   0% /dev/shm
tmpfs           483M  512K  483M   1% /run
tmpfs           483M     0  483M   0% /sys/fs/cgroup
/dev/xvda1      8.0G  2.1G  6.0G  26% /
tmpfs            97M     0   97M   0% /run/user/1000
/dev/xvdf        99G   24K   94G   1% /mnt
[ec2-user@ip-12-12-12-12 ~]$ sudo cp ~/work/Workspace-goorm/* /mnt
[ec2-user@ip-12-12-12-12 ~]$ sudo umount /mnt

 

  • 기존 EC2 Instance와의 연결 해제 및 새로운 EC2 Instance와 연결하여 마운트해서 사용
[ec2-user@ip-10-0-1-9 ~]$ lsblk
NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
xvda    202:0    0    8G  0 disk 
└─xvda1 202:1    0    8G  0 part /
xvdf    202:80   0  100G  0 disk 
[ec2-user@ip-10-0-1-9 ~]$ df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        474M     0  474M   0% /dev
tmpfs           483M     0  483M   0% /dev/shm
tmpfs           483M  548K  483M   1% /run
tmpfs           483M     0  483M   0% /sys/fs/cgroup
/dev/xvda1      8.0G  1.9G  6.2G  24% /
tmpfs            97M     0   97M   0% /run/user/1000
[ec2-user@ip-10-0-1-9 ~]$ sudo mount /dev/xvdf /mnt
[ec2-user@ip-10-0-1-9 ~]$ df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        474M     0  474M   0% /dev
tmpfs           483M     0  483M   0% /dev/shm
tmpfs           483M  548K  483M   1% /run
tmpfs           483M     0  483M   0% /sys/fs/cgroup
/dev/xvda1      8.0G  1.9G  6.2G  24% /
tmpfs            97M     0   97M   0% /run/user/1000
/dev/xvdf        99G   32K   94G   1% /mnt
[ec2-user@ip-10-0-1-9 ~]$ ls -lF /mnt
total 24
-rw-r--r-- 1 root root   870 Sep 13 07:12 calc.js
-rw-r--r-- 1 root root   900 Sep 13 07:12 index.html
drwx------ 2 root root 16384 Sep 13 07:08 lost+found/
[ec2-user@ip-10-0-1-9 ~]$ sudo umount /mnt

 

EBS 사용이 적합한 경우

  • 데이터에 빠르게 액세스하고 장기적으로 지속해야 하는 경우
  • 세분화된 업데이트가 필요하고 형식이 지정되지 않은 블록 수준의 원시 스토리지에 액세스해야 하는 파일 시스템,
    데이터 베이스 또는 Application의 기본 스토리지로 사용하기에 적합
  • 임의의 읽기 및 쓰기에 의존하는 데이터베이스 스타일의 Application과 장기간의 읽기 및 쓰기를 수행하는 처리량
    집약적 Application에 모두 적합

네트워크 서비스 - ELB

 

Scale out

  • 동시 접속 Client 수에 따른 서버 분산 처리
  • EC2 Instance를 복제하여 여러 개의 EC2 Instance를 생성하는 동작
  • Client 동시 접속 증가에 따라 Server 처리 능력을 높이기 위하여 같은 동작을 하는 Server를 여러 개 생성하여
    Client 동시 접속에 대한 처리 효율을 높이는 방법
  • AWS Scale out을 위한 서비스
    • ELB (Elastic Load Balancing)
      • 동시 접속 Client를 여러 서버로 분산해서 처리할 수 있도록 관리하는 서비스
      • 서버 분배
    • Auto Scaling
      • 서버 처리량에 따라 서버를 자동 증설 및 감소시키는 서비스

 

ELB (Elastic Load Balancing)

  • 트래픽 분산
  • 자동 확장 (Auto Scaling)
  • EC2 Instance 상태를 자동 감지하여 오류가 있는 시스템은 제외
  • 사용자 세션을 특정 Instance에 고정 가능
  • SSL 암호화 지원
  • SSL의 경유지로 ELB를 사용하는 경우에 SSL 처리에 따른 부하를 ELB가 수용
  • IPv4, IPv6 지원
  • Amazon CloudWatch를 통한 모니터링
  • 사용한 시간과 통과한 트래픽에 따라 종량제 과금

 

OSI 7 계층에서 L4(Transport) 계층과 L7(Application) 계층에 대한 서버 부하 분산 기능 제공

  • L4 (Transport) 계층 - TCP, UDP에 대한 처리 계층 - Network Load Balancer
  • L7 (Application) 계층 - HTTP, HTTPS 등에 대한 처리 계층 - Application Load Balancer

 

참고 자료


컴퓨팅 서비스 - AutoScaling

 

Auto Scaling

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

 

참고 자료


TIF

명절동안 빡세게 놀았다.

빡세게 놀았으니 빡세게 다시 공부할 때다.

 

노마드코더 파이썬 챌린지 완료는 했는데 졸업이 될 지는 모르겠다.

추석 직전에 나온 과제를 마지막날 부랴부랴했기에...

그래도 덕분에 selenium 이랑 조금 친해졌고 전에 막혔던 크롤링도 해결되었다.

 

구글 스터디잼 쿠버네티스 심화반 신청은 했는데... 상황 보면서 진행해야겠다.

오늘도 고생했고, 고생하자.

 

 

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

반응형
profile

어쩌다 IT

@jwlish

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!