forked from mmistakes/minimal-mistakes
-
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
1 parent
1a9b754
commit b4a5fa8
Showing
54 changed files
with
628 additions
and
24 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
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 |
---|---|---|
@@ -0,0 +1,112 @@ | ||
--- | ||
layout: single | ||
title: "EC2, EBS, ELB 뜻 정리" | ||
categories: [AWS] | ||
tag: [AWS, EC2, EBS, ELB] | ||
toc: true | ||
toc_sticky: true | ||
post-header: false | ||
|
||
--- | ||
|
||
# EC2, EBS, ELB | ||
|
||
Elastic Compute Cloud의 약자로 가장 큰 장점인 클라우드라는 공간에서 크기가 유연하게 변경되는 기능을 제공한다. | ||
|
||
예측할 수 없는 데이터 처리 및 계산이 불가능한 크기의 데이터가 밀려오는 상황에 사용량이 많아지면 그만큼 늘리면 되고 반대로 적어지면 또 그만큼 줄여주는 Auto Scaling 가능 | ||
|
||
## EC2의 다양한 지불 방법 | ||
|
||
On-demand | ||
|
||
- 시간 단위로 가격이 고정되어 있음. | ||
- 시간당 정해진 비용을 지불하며 편하게 사용할 수 있고, 소프트웨어 및 서버 개발시 최초로 EC2인스턴스 deploy할 때에 종종 쓰임 | ||
- 또는 사용 기간을 미리 알 수 없는 경우에 유용. | ||
|
||
Reverse | ||
|
||
- 한정된 EC2용량 사용 가능, 1~3년 동안 시간별로 할인 적용 받을 수 있다. | ||
- 선불로 특정한 금액을 지불할 경우 추가적으로 지정되는 컴퓨팅 시스템을 사용할 수 있음. | ||
- On-demand보다 조금 저렵한 가격에 사용할 수 있는 장점이 있지만, On-demand와 달리 크기를 늘리고 줄이는 기능이 없고 특정한 사이즈에 정해지기 때문에 가격이 저렴한 것 같음. | ||
- 무언가를 개발할 때 요구사항이 자주 반복되지 않거나 개발 시간에 대해 예측이 가능하다면 해당 방식 유용 | ||
|
||
Spot | ||
|
||
- 경매와 같이 입찰 가격 적용. 가장 큰 할인률을 적용받으며 특히 인스턴스의 시작과 끝기간이 전혀 중요하지 않을 때 매우 유용 | ||
|
||
## EBS (Elastic Block Storage) | ||
|
||
저장 공간이 생성되어지며 EC2 인스턴스에 부착된다. | ||
|
||
디스크 볼륨 위에 File System이 생성된다. 따라서, EC2인스턴스 접근 뿐만 아니라 파일을 로컬 디스크로 옮기는 작업도 가능하다. | ||
|
||
EBS는 특정 Availability Zone에 생성되므로 Availability Zone을 설정해주어야 함. | ||
|
||
- Availability Zone은 AZ라고도 종종 불리며 하나의 Region 안에 여러개의 AZ가 존재할 수 있음. | ||
- 중심부로부터 복사본들이 존재하여 한쪽 서버가 망가지거나 셧다운되었을 경우 AZ 백업을 통해 서비스 제공을 가능하게 해주는 일종의 Disaster Recovery가 가능. | ||
|
||
## EBS 볼륨 타입 | ||
|
||
< SSD > | ||
|
||
1. General Purpose SSD (GP2) | ||
- 최대 10K IOPS를 지원하며 1GB당 3IOPS 속도가 나옴. | ||
- SSD중에 가장 보편적으로 사용됨. | ||
2. Provisioned IOPS SSD (IO1) | ||
- 극도의 I/O률을 요구하는(ex. 매우 큰 DB관리) 환경에서 주로 사용됨. 10K이상의 IOPS를 지원함 | ||
- 매우 큰 빅데이터 분석 시에도 사용 가능 | ||
|
||
< Magnetic / HDD > | ||
|
||
1. Throughput Optimized HDD (ST1) | ||
- 빅데이터 Datawarehouse, Log 프로세싱시 주로 사용 (boot volume으로 사용 불가능) | ||
- 운영체제를 가지고 있을 수 없음 | ||
2. CDD HDD (SC1) | ||
- 파일 서버와 같이 드문 입출력 즉, 드문 volume 접근 시 주로 사용 | ||
- boot volume으로는 사용 불가능하나 비용이 매우 저렴함 | ||
- 오랫동안 보관해도 괜찮은 데이터들을 처리하는 용도로 쓰기 좋음 | ||
3. Magnetic (Standard) | ||
- 디스크 1GB당 가장 싼 비용을 자랑함. | ||
- boot volume으로 사용 가능. | ||
|
||
## ELB (Elastic Load Balancers) | ||
|
||
수많은 서버의 흐름을 균형있게 배분, 흘려보내는데 중추적인 역할을 함 | ||
|
||
하나의 서버로 트래픽이 몰리는 병목현상을 방지 | ||
|
||
Unhealth instance → Healthy instance | ||
|
||
- EC2 인스턴스는 예상치 못한 이유로 갑자기 셧다운되거나 시간초과 등이 발생하는 unhealthy상태가 됨. 이러한 트래픽 상태를 해결할 수 있음. | ||
|
||
### 1. Application Load Balancer | ||
|
||
OSI Layer7에서 작동됨 (가장 바깥부분) | ||
|
||
- HTTP, HTTPS와 같은 트래픽의 load balancing에 가장 적합함. | ||
- 별도의 라우팅 설정을 통하여 특정 서버로 request를 보낼 수 있음. | ||
|
||
→ ELB가 임의로 하지 않고 커스터마이즈인 라우팅이 가능하다는 뜻. | ||
|
||
|
||
### 2. Network Load Balancer | ||
|
||
OSI Layer4에서 작동됨 (Transport Layer). TCP 트래픽을 정리하는데 적합함. | ||
|
||
- 극도의 performance가 요구되는 TCP traffic에서 적합함 | ||
- 초당 수백만개의 request를 아주 미세한 delay로 처리가 가능하다. | ||
- Google, Naver같이 큰 서버에서 적합할듯 하다. | ||
|
||
### 3. Classic Load Balancer | ||
|
||
Legacy ELB라고도 함. (거의 쓰이지 않음) | ||
|
||
- Layer7의 HTTP/HTTPS 라우팅 기능 지원 | ||
- Layer4의 TCP 트래픽 라우팅 기능도 지원 | ||
|
||
## Route 53 | ||
|
||
AWS에서 제공하는 DNS 서비스이다. | ||
|
||
- EC2 instance, S3 Bucket, Load Balancer 등 사용하는 서버의 이름을 부여할 수 있다. | ||
- 도메인 주소를 생성하고 구매하여 위의 3가지 서버로 연결시켜줄 수 있다. |
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 |
---|---|---|
@@ -0,0 +1,172 @@ | ||
--- | ||
layout: single | ||
title: "IAM 기본 정리" | ||
categories: [AWS] | ||
tag: [AWS, IAM] | ||
toc: true | ||
toc_sticky: true | ||
post-header: false | ||
|
||
--- | ||
|
||
<head> | ||
<style> | ||
table.dataframe { | ||
white-space: normal; | ||
width: 100%; | ||
height: 240px; | ||
display: block; | ||
overflow: auto; | ||
font-family: Arial, sans-serif; | ||
font-size: 0.9rem; | ||
line-height: 20px; | ||
text-align: center; | ||
border: 0px !important; | ||
} | ||
|
||
table.dataframe th { | ||
text-align: center; | ||
font-weight: bold; | ||
padding: 8px; | ||
} | ||
|
||
table.dataframe td { | ||
text-align: center; | ||
padding: 8px; | ||
} | ||
|
||
table.dataframe tr:hover { | ||
background: #b8d1f3; | ||
} | ||
|
||
.output_prompt { | ||
overflow: auto; | ||
font-size: 0.9rem; | ||
line-height: 1.45; | ||
border-radius: 0.3rem; | ||
-webkit-overflow-scrolling: touch; | ||
padding: 0.8rem; | ||
margin-top: 0; | ||
margin-bottom: 15px; | ||
font: 1rem Consolas, "Liberation Mono", Menlo, Courier, monospace; | ||
color: $code-text-color; | ||
border: solid 1px $border-color; | ||
border-radius: 0.3rem; | ||
word-break: normal; | ||
white-space: pre; | ||
} | ||
|
||
.dataframe tbody tr th:only-of-type { | ||
vertical-align: middle; | ||
} | ||
|
||
.dataframe tbody tr th { | ||
vertical-align: top; | ||
} | ||
|
||
.dataframe thead th { | ||
text-align: center !important; | ||
padding: 8px; | ||
} | ||
|
||
.page__content p { | ||
margin: 0 0 0px !important; | ||
} | ||
|
||
.page__content p > strong { | ||
font-size: 0.8rem !important; | ||
} | ||
|
||
</style> | ||
</head> | ||
|
||
# IAM 정리 | ||
|
||
## IAM 이란? | ||
|
||
**유저를 관리하고 접근 레벨 및 권한에 대한 관리** | ||
|
||
- 접근키(Access Key), 비밀키(Secret Access Key) | ||
- 매우 세밀한 접근 권한 부여 기능 (Granular Permission) | ||
- 비밀번호를 수시로 변경 가능하게 해줌 | ||
- Multi-Factor Authentication(다중 인증) 가능 | ||
|
||
- 그룹(Group) | ||
- 유저(User) | ||
- 역할(Role): 유저와 의미는 비슷하나 역할에 하나 혹은 다수의 정책을 지정할 수 있음, 유저마다 다양한 정책을 부여 | ||
- 정책(Policy) : 주로 JSON 형태로 되어 있는 다큐먼트, 세밀한 접근 권한을 일일히 설정하여 하나의 정책 다큐먼트를 만들 수 있음. | ||
- 정책은 그룹, 역할에 추가시킬 수 있다. 유저에게 직접적으로 정책을 줄 수도 있지만 사용자 그룹에 대해서 줄수도 있다. | ||
- 하나의 그룹 안에 다수의 유저가 존재 가능하다. | ||
- 그룹에 역할 혹은 정책을 추가시키게 되면 그 안의 모든 유저에게 영향이 간다. | ||
|
||
- IAM은 유니버셜함 → 지역 변경이 필요 없음. | ||
|
||
### User 사용자 생성 | ||
|
||
IAM > 액세스 관리 > 사용자 생성 클릭 후 사용자 이름 입력 | ||
|
||
![스크린샷 2024-08-22 오전 11.06.53.png](/assets/images/aws01/01.png) | ||
|
||
자동 생성된 암호 선택 : 사용자 생성 후 자동 생성된 암호를 csv로 다운로드 후 닫기버튼 눌러야함. (닫은 후에는 다시 확인 불가) | ||
|
||
2단계 : 권한 설정 | ||
|
||
![스크린샷 2024-08-22 오전 11.07.13.png](/assets/images/aws01/02.png) | ||
|
||
권한 옵션을 선택하여 생성하는 사용자를 기존 그룹에 추가할 수 있다. | ||
|
||
### Group 그룹 | ||
|
||
![스크린샷 2024-08-22 오전 11.10.22.png](/assets/images/aws01/03.png) | ||
|
||
생성된 그룹 정보에서 사용자 및 권한을 추가할 수 있다. | ||
|
||
### Role 역할 생성 | ||
|
||
![스크린샷 2024-08-22 오전 11.11.31.png](/assets/images/aws01/04.png) | ||
|
||
역할 유형을 선택(AWS 서비스)을 하고, 사용할 서비스를 선택한다. | ||
|
||
### Policy 정책 생성 | ||
|
||
정책 생성 > 정책에 적용되는 서비스를 선택 | ||
|
||
![스크린샷 2024-08-22 오전 11.56.10.png](/assets/images/aws01/05.png) | ||
|
||
여기서 액세스 수준을 선택할 수 있는데 읽기, 쓰기 모두 선택함. | ||
|
||
아래에 리소스를 모두 선택할 수 있고, 특정 리소스를 선택할 수도 있다. | ||
|
||
![스크린샷 2024-08-22 오전 11.57.07.png](/assets/images/aws01/06.png) | ||
|
||
권한 목록에서 생성한 권한을 클릭 후, JSON 형태로 확인/수정 가능하다. | ||
|
||
![스크린샷 2024-08-22 오전 11.15.21.png](/assets/images/aws01/07.png) | ||
|
||
## IAM 정책 시뮬레이터 | ||
|
||
개발환경에서 실제 환경 프로덕션으로 빌드하기 전에 IAM 정책 또는 Role들이 잘 작동되는지 테스트하기 위한 툴 | ||
|
||
IAM과 관련된 문제들을 디버깅하기에 최적화된 툴, 이미 실제로 유저에 부여된 다양한 정책들도 테스트 가능 | ||
|
||
IAM > 대시보드 > 오른쪽 메뉴에 정책 시뮬레이터 클릭 | ||
|
||
왼쪽 메뉴의 드롭다운에서 시뮬레이션 할 대상을 선택 (Users, Groups, Roles 선택 가능) | ||
|
||
![스크린샷 2024-08-22 오전 11.16.30.png](/assets/images/aws01/08.png) | ||
|
||
Select Service : 시뮬레이션 할 서비스 선택한다. | ||
|
||
![스크린샷 2024-08-22 오전 11.16.58.png](/assets/images/aws01/09.png) | ||
|
||
Select actions : 시뮬레이션할 기능들을 선택한다. (나는 Select All 클릭) | ||
|
||
![스크린샷 2024-08-22 오전 11.17.10.png](/assets/images/aws01/10.png) | ||
|
||
Run Simulation을 실행하면 시뮬레이션 결과로 권한이 access / denied로 나옴 | ||
|
||
![스크린샷 2024-08-22 오전 11.17.27.png](/assets/images/aws01/11.png) | ||
|
||
시뮬레이션 한 유저에 AmazonDynamoDBReadOnlyAccess 추가 후 다시 테스트 | ||
|
||
![스크린샷 2024-08-22 오전 11.19.57.png](aws01/12.png) |
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 |
---|---|---|
@@ -0,0 +1,33 @@ | ||
--- | ||
layout: single | ||
title: "X-Forwared-For란?" | ||
categories: [AWS] | ||
tag: [AWS] | ||
toc: true | ||
toc_sticky: true | ||
post-header: false | ||
|
||
--- | ||
|
||
# X-Forwared-For | ||
|
||
### X-Forwared-For 헤더 | ||
|
||
단순히 포트만 열어두고 Application 서비스를 올리는 경우가 아닌 NGINX 및 AWS CloudFront 또는 Application Load Balancer 같이 앞단에 프록시 서버를 두는 경우가 있다. | ||
|
||
이러한 경우 앱 서버(WAS)는 유저의 request가 리버스 프록시를 통해 접속하는데, 이 경우 서버의 접속 로그에 찍히는 IP는 리버스 프록시 서버의 IP(Private IP)만 가져온다. 출처를 알 수 없음 | ||
|
||
![스크린샷 2024-08-22 오후 1.48.39.png](/assets/images/aws03/01.png) | ||
|
||
이러한 문제를 해결하기 위해 표준헤더인 X-Forwarded-For가 등장하게 되고, HTTP 헤더에 타고 있는 X-Forwarded-For를 통해 프록시 및 로드밸런서 아이피를 기록한다. | ||
|
||
> X-Forwared-For: <client>, <proxy1>, <proxy2> | ||
> | ||
HTTP HEAD에 타고 있는 형태로 구성되며, client IP → Proxy Server1 → Proxy Server2 → … 순차적으로 추가되는 방식으로 구성 | ||
|
||
이 설정은 각 프록시 서버별로 세팅이 필요하거나 자동으로 해더에 같이 넣어줌 | ||
|
||
- AWS ELB → 자동으로 X-Forwarded-For 헤더가 추가되거나 새롭게 생성 | ||
|
||
즉, 순차적으로 서버를 넘어가면서 받은 아이피를 기록하는 해더에서 실제 출처 IP를 찾을 수 있다. |
Oops, something went wrong.