반응형
리뷰 (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
- 역할에 따라 부여된 명칭
- Bastion Server
더보기
Private Subnet에 EC2 Instance 생성
- 서브넷 - private subnet으로 설정
- 퍼블릭 IP 할당 - 비활성화
NAT Gateway 생성
- EIP 생성
- EC2 메뉴 → 탄력적 IP → 탄력적 IP 주소 할당
- NAT Gateway 인스턴스 생성
- VPC 메뉴 → NAT 게이트웨이 → NAT 게이트웨이 생성
- 이름 부여
- 서브넷 - 반드시 Public Subnet에 위치
- 연결 유형 - 퍼블릭
- 탄력적 IP 할당
- VPC 메뉴 → NAT 게이트웨이 → NAT 게이트웨이 생성
- Private Subnet의 라우팅 테이블에 NAT Gateway에 대한 라우팅 추가
- VPC 메뉴 → 라우팅 테이블 → Private Subnet 라우팅 테이블 선택 → 라우팅 편집
→라우팅 추가 → NAT Gateway 라우팅 추가
- VPC 메뉴 → 라우팅 테이블 → Private Subnet 라우팅 테이블 선택 → 라우팅 편집
- 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 규칙을 적용받지 않는다.
- 보안 그룹 (Security Group)
- 네트워크 보안
- 네트워크 ACL (NACL)
- Inbound 규칙과 Outbound 규칙으로 구성
- NACL은 여러 subnet에 적용 가능하나 subnet은 한 개의 NACL만 연결 가능
- 허용(Allow) 규칙뿐만 아니라 거부(Deny) 규칙 생성 가능
- 규칙은 규칙 번호로 매겨져 작은 숫자 값을 지니는 규칙이 우선적으로 적용
- 규칙 번호순으로 적용
- NACL 규칙 목록은 Inbound, Outbound 최대 20개까지 지정 가능
- NACL은 상태를 저장하지 않는 성격(stateless)을 갖는다.
- 상태를 저장하지 않으므로 한번 Inbound를 통과하는 패킷은 Outbound 규칙을 적용받는다.
- 상태를 저장하지 않으므로 한번 Outbound를 통과하는 패킷은 Inbound 규칙을 적용받는다.
- 네트워크 ACL (NACL)
- 인스턴스 보안
더보기


- 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)
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 메뉴 → 볼륨 → 작업 메뉴 → 볼륨 연결
- 연결된 볼륨에 대하여 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)
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
참고 자료
- https://aws.amazon.com/ko/elasticloadbalancing/
- https://docs.aws.amazon.com/ko_kr/elasticloadbalancing/latest/userguide/what-is-load-balancing.html
- https://docs.aws.amazon.com/ko_kr/elasticloadbalancing/latest/network/load-balancer-troubleshooting.html
컴퓨팅 서비스 - AutoScaling
Auto Scaling
- Scale out 적용 시 사용하는 기능
- 다중 서버를 운영할 때 서버의 일정한 부하 임계치를 넘었을 때 자동으로 서버를 증가시키거나
부하 임계치가 해소되었을 때 다시 원래의 서버 수로 자동 변화를 수행하는 서비스
참고 자료
- https://aws.amazon.com/ko/autoscaling/
- https://docs.aws.amazon.com/ko_kr/autoscaling/ec2/userguide/what-is-amazon-ec2-auto-scaling.html
TIF
명절동안 빡세게 놀았다.
빡세게 놀았으니 빡세게 다시 공부할 때다.
노마드코더 파이썬 챌린지 완료는 했는데 졸업이 될 지는 모르겠다.
추석 직전에 나온 과제를 마지막날 부랴부랴했기에...
그래도 덕분에 selenium 이랑 조금 친해졌고 전에 막혔던 크롤링도 해결되었다.
구글 스터디잼 쿠버네티스 심화반 신청은 했는데... 상황 보면서 진행해야겠다.
오늘도 고생했고, 고생하자.
2022. 09. 13 에 작성된 글입니다.
반응형
'구름 쿠버네티스' 카테고리의 다른 글
구름 쿠버네티스 전문가 과정 6기 - 31일차 (1) | 2023.10.04 |
---|---|
구름 쿠버네티스 전문가 과정 6기 - 30일차 (0) | 2023.09.27 |
구름 쿠버네티스 전문가 과정 6기 - 28일차 (0) | 2023.08.29 |
구름 쿠버네티스 전문가 과정 6기 - 27일차 (0) | 2023.08.25 |
구름 쿠버네티스 전문가 과정 6기 - 26일차 (0) | 2023.08.24 |