-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
187 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,189 @@ | ||
### CI/CD | ||
# EC2 기초 | ||
|
||
CI/CD는 현대 소프트웨어 개발에서 핵심적인 개발 방법론입니다. CI(Continuous Integration)는 개발자들이 코드 변경사항을 주기적으로 메인 브랜치에 병합하는 과정을 자동화하는 것을 말하며, CD는 Continuous Delivery(지속적 제공)와 Continuous Deployment(지속적 배포)를 의미합니다. | ||
#AWS #EC2 | ||
|
||
 | ||
## Billing and Cost Management | ||
|
||
### 하위 유저 활성화 | ||
|
||
- Billing and Cost Management > Account | ||
- IAM user/role access to billing information | ||
- Activated | ||
|
||
### Free Trie | ||
|
||
- 서비스 종류 / 사용량 확인 가능 | ||
|
||
### Budgets | ||
|
||
- 예산 설정 | ||
- 알람 받기 가능 | ||
|
||
## [[Amazon EC2]] | ||
|
||
### bootstrapping | ||
|
||
- 머신이 시작 될때 명령을 실행 | ||
- 처음 한번만 실행 | ||
- 설치 및 업데이트 등 초기화 진행 | ||
- `root` 권한으로 실행 됨 = `sudo` 로 실행 | ||
|
||
## EC2 생성 | ||
|
||
### Networkd Setting | ||
|
||
- Auto-assign public IP 기본 세팅 | ||
- VPC > Subnets > Edit subnet settings | ||
- Auto-assign IP settings - Enable auto-assign public IPv4 address 체크 | ||
- Allow SSH traffic from → SSH 접속 | ||
- Allow HTTP traffic from the internet → 웹서버 용 | ||
|
||
### EBS Volumes | ||
|
||
- Delete on termination : EC2 종료시 EBS도 같이 삭제 | ||
|
||
### Advanced details | ||
|
||
- User data : 처음 EC2가 생성될때 동작하는 스크립트 | ||
|
||
```text | ||
#!/bin/bash | ||
# Use this for your user data (script from top to bottom) | ||
# install httpd (Linux 2 version) | ||
yum update -y | ||
yum install -y httpd | ||
systemctl start httpd | ||
systemctl enable httpd | ||
echo "<h1>Hello World from $(hostname -f)</h1>" > /var/www/html/index.html | ||
``` | ||
|
||
### EC2 Start / Stop / Restart | ||
|
||
- 인스턴스 재시작하면 Public IP가 변경 됨 | ||
|
||
### EC2 Instance Types | ||
|
||
![[섹션 5. EC2 기초#^frame=dXpuB2BTsUStg6tdbUnMA| 600]] | ||
|
||
### General Purpose | ||
|
||
- 컴퓨팅, 메모리, 네트워크 균형 | ||
- `T` / `M` 클래스 | ||
|
||
### Compute Optimized | ||
|
||
- 고성능을 필요로 하는 작업 | ||
- 게임, 미디어, 웹 등 | ||
- HPC | ||
- Compute → `C` 클래스 | ||
|
||
### Memory Optimized | ||
|
||
- 메모리에서 대규모 데이터셋을 처리하는 경우 | ||
- 데이터베이스 / 캐시 | ||
- RAM → `R` 클래스 | ||
|
||
### Storage Optimized | ||
|
||
- 스토리지 최적화 인스턴스 | ||
- NoSQL | ||
- 분사 파일 시스템 | ||
- `I` / `D` 클래스 | ||
|
||
## Security Groups | ||
|
||
- EC2 안팎의 트레픽을 제어함 → 리소스 차원의 방화벽 | ||
- IP 주소를 기반으로 규칙을 설정 또는 다른 SG 참조 | ||
- 포트에 대한 엑세스를 규제 | ||
- **Allow(허용)** 규칙만 존재 | ||
- 나가는 것에 대해서는 default로 전부 허용 | ||
- StateFull | ||
- 들어오면 → 나갈 수 있음 | ||
|
||
- 여러 인스턴스를 포함 가능 | ||
- SSH를 위한 보안 그룹을 따로 만드는것을 추천 | ||
- 기본적으로 | ||
- 모든 Inbound는 차단 | ||
- 모든 Outbound는 허용 | ||
|
||
- 다른 SG 연결 | ||
- IP에 상관없이 다른 EC2와 직접 통신 가능 | ||
- SG 한쪽에 허용하면 한쪽만 통신이 가능하고 | ||
- 반대쪽도 허용해줘야 양쪽에서 통신이 가능 | ||
|
||
- 실제로는 Primary ENI(eth0)에 보안 그룹이 할당됨 | ||
- EC2 인스턴스 자체가 아닌 ENI에 보안 규칙이 적용되는 것 | ||
- 각 ENI는 독립적으로 자신에게 할당된 보안 그룹의 규칙을 따름 | ||
|
||
### Connect to instance | ||
|
||
- EC2 Instance Connect | ||
- Session Manager | ||
- SSH client | ||
- EC2 serial console | ||
|
||
### EC2 - [[AWS Identity and Access Management(IAM)|IAM]] | ||
|
||
### EC2 요금 모델 | ||
|
||
- On-Demand : 초단위 이용 비용 지불 | ||
- Reserved Instances : 1년 / 3년 단위 계약 | ||
- Savings Plan : 1년 / 3년 사용량을 약정 | ||
- Spot Instances : 스팟 인스턴스 : 가장 저렴 → 언제든지 종료 될수 있음 | ||
- Dedicated Host / Instances | ||
- 물리적 전용 인스턴스를 임대 | ||
- 라이센스 법률 등 / 인스턴스는 내부적인 정보?를 추가적으로 확인가능 | ||
|
||
### On-Demand | ||
|
||
- 초당 / 시간당 사용 비용 지불 | ||
- 약정 필요 없음 | ||
- 수요 예측이 어렵거나 유연하게 사용시 | ||
|
||
### Reserved Instances | ||
|
||
- 일정 기간 약정하여 요금을 할인 받는 방식 | ||
- 1년 / 3년 단위 계약 | ||
- 최대 72% 저렴 | ||
|
||
### Savings Plan | ||
|
||
- 컴퓨팅 파위의 사용량을 약정하여 사용 | ||
- Compute Saving Plan | ||
- EC2 Instance Saveing Plan | ||
- 최대 72% | ||
|
||
### Spot Instances | ||
|
||
- 남는 EC2를 저렴한 가격으로 제공 | ||
- 최대 90% | ||
- 가격은 상황에 따라 변동, 항상 On-Demand 보다 싸게 제공 | ||
- 인스턴스가 언제 종료될지 예측 불가 | ||
|
||
### Dedicated Host / Instance | ||
|
||
- 물리적으로 인스턴스 / 호스트 단위로 격리된 EC2를 제공 | ||
- 라이센스 / 성능 문제를 위해 사용 | ||
|
||
|
||
## Spot Instances 실습 | ||
|
||
- 최대 스팟 가격 지정 > 현재 가격 을 만족하는 경우에 인스턴스를 유지 | ||
- 2분 유예 기간이 존재 | ||
- 작업 인스턴스 중지 → 이후 다시 작업 | ||
- 완전히 종료 → 새로 시작 | ||
- Spot Block : 지정 기간 동안 스팟 인스턴스 종료를 차단 (1 ~ 6시간) → 100%는 아님 → 2022년 12월 31일 이후 없어진 상태 | ||
- 배치 / 데이터 분석 / 회복력이 높은 작업에 사용 | ||
- 데이터 베이스 / 중요한 작업에는 부적합 | ||
|
||
### Spot 인스턴스 종료 방법 | ||
|
||
- Spot requests를 먼저 중지 | ||
- 이후에 Instances를 제거 | ||
|
||
### Spot Fleets(집단) | ||
|
||
- 사용자가 지정한 기준으로 목표 용량을 유지 하려 | ||
- 여러 개의 런치 풀과 여러 인스턴스 유형을 정의 가능 | ||
- 스팟 인스턴스를 추가로 절약할 수 있음 | ||
- 스팟 플릿은 스팟 인스턴스의 집합이며, 선택적으로 온디맨드 인스턴스입니다. 스팟 플릿은 가장 낮은 가격으로 스팟 인스턴스를 자동으로 요청할 수 있게 해줍니다. |