일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- 그래프탐색
- CS
- JPA
- 프로그래머스
- 파이널프로젝트
- CPU스케줄링
- findById
- 트리맵
- 임베디드타입
- 해시
- 구현
- fatch
- BFS
- 백준
- Spring JPA
- 2178
- 프로젝트
- 운영체제
- 산업은행청년인턴
- flyway
- 스케일아웃
- 외래키제약조건위반
- 코테
- DB replication
- 컴퓨터구조
- 산업은행it
- springboot
- SpringBatch
- 트리셋
- 폰켓몬
- Today
- Total
나 JAVA 봐라
[AWS SAA-C03] 6장 EC2 - Associate 본문
하 이전 5장 분량 진짜 겁나 김 ; 화 난 다.
Private vs Public IP (IPv4)
먼저 IP는 IPv4, IPv6이 있는데, 강의에서는 IPv4만 다룬다.
IPv6은 주로 IoT에서 잘 쓰인다.
IPv4는 약 37억개 주소를 갖는다.
위의 그림에서는 공용 IP, 사설 IP가 나온다.
그림에서 알 수 있는 것은,
1. 공용 IP는 인터넷 전역에 액세스 가능하다.
2. 사설 IP는 사설 네트워크 안에서만 액세스 가능하다. -> 인터넷 쓰려면 Internet Gateway 같은 것 필요함.
Public IP
- 인터넷 (WWW)에 접근 가능: 공용 IP는 인터넷에서 식별될 수 있다.
- 고유성 : 전 세계적으로 모든기기의 공용 IP는 고유 해야함. 두 개의 기기가 동일한 공용 IP 가질 수 없음.
- 위치 추적 가능: 공용 IP를 통해 지리적 위치 추적 가능
Private IP
- 인터넷 접근 불가: 사설 IP는 인터넷에서 식별될 수 없고, 사설 네트워크 내에서만 식별 가능하다.
- 고유성 X : 동일한 사설 네트워크 내에서만 고유하면 된다. 다른 사설 네트워크와는 IP 똑같아도 되니까 고유성이 없다.
- 범위 제한 : 사설 네트워크로 사용하는 IP의 범위는 제한되어 있다. (예: 10.0.0.0 ~ 10.255.255.255)
- 사설 IP 사용하여 인터넷에 접근하는 방법
- NAT(Network Address Translation): 사설 네트워크 내 기기는 NAT를 통해 공용 IP를 사용하여 인터넷에 연결한다. NAT는 사설 IP를 공용 IP로 변환하여 외부에서 접근할 수 있게 한다.
- 인터넷 게이트웨이: 사설 네트워크에서 인터넷으로 통신하기 위한 경로를 제공
Elastic IP
EC2 인스턴스는 중지 후 다시 시작하면 공용 IP 주소가 변경된다. (사설IP는 안바뀜)
공용 IP 고정해두고 싶을 때 쓰는 것이 Elastic IP !
- 고객이 소유하는 공용 IPv4 주소
- 삭제하지 않는 한 계속 소유 가능
- 하나당 인스턴스 하나에만 연결 가능 (당연한거 아니묘!)
- 인스턴스 장애 생겨도 다른 인스턴스에 바로 Elastic IP 할당해서 서비스 제공 가능
- Cons
- 제한된 갯수: 계정당 5개로 제한
- 아키텍처 문제 : 잘못된 아키텍처 설계를 야기할 수 있기에 사용 안하는 것을 권장한다.
- 그럼 맨날 IP 주소 바뀌는데 Elastic IP 안쓰면 어떻게 하냐?
- DNS : 임의의 공용 IP를 DNS에 등록하여 사용한다. 이렇게 하면 인스턴스 변경되어도 DNS 레코드를 변경하여서 사용자는 안정적으로 연결할 수 있다.
- Load Balancer : 로드 밸런서가 트래픽 분산해주도록 하여서(SPOF 방지), 공용 IP를 사용하지 않을 수 있다. (-> 개별 인스턴스는 공용 IP 사용 안하고, 그저 로드밸런서만 공용 IP 사용하는 듯)
- 같은 VPN에 있지 않은 이상, 같은 네트워크에 속한거 아니기에 공용 IP 써야 함. (당연...)
- 그래서 SSH 접속할 때도 공용 IP 사용함 -> 이 후에 접속하고 나면 사설 IP로 바뀜.
Placement Groups
배치 그룹은 EC2 인스턴스를 특정 물리적 위치에 배치 or 인스턴스를 물리적으로 분산하여 배치 하기 위한 기능이다.
배치를 하는 방법도 크게 3가지가 있다.
1. Cluster
- 낮은 지연 시간(latency)을 갖도록 하나의 AZ 내에 인스턴스를 모아 배치
- Pros
- 네트워크가 빠르다. (같은 AZ 내에 있기 때문)
- Cons
- AZ에 장애 생기면 모든 인스턴스에도 장애가 난다.
- 적합한 경우: 빠른 속도, 높은 성능이 요구되는 애플리케이션
2. Spread
- 기본 하드웨어에 걸쳐 인스턴스를 분산시켜 배치
- Pros
- 여러 AZ에 분산하여 배치했기 때문에 동시 장애가 발생하지 않는다.
- 인스턴스들이 각자 다른 하드웨어를 사용한다.
- Cons
- 제한 사항: 하나의 AZ에 최대 7개의 인스턴스까지 배치 가능하다.
- 적합한 경우: 인스턴스별로 장애에 대응하기 위해 독립되어 있어야하는 중요한 작업 ,고가용성이 중요한 애플리케이션(분산 시스템, 웹 서버 등)
3. Partition
- AZ 내 여러 다른 파티션(다른 랙 세트를 사용)에 걸쳐 인스턴스를 분산시켜 배치
- 하나의 AZ 당 파티션 최대 7개 생성 가능 (-> Spread는 인스턴스 7개... 그냥 가용영역 당 7개로 외우자!)
- 동일 리전 내 여러 AZ에 걸쳐 확장 가능
- 규모: 파티션 당 최대 수백 개의 EC2 인스턴스를 배치 가능
- 메타 데이터 : EC2 인스턴스는 메타데이터를 통해 자신이 속한 파티션 정보에 접근할 수 있다.
- Pros
- 장애 대응 가능: 하나의 파티션에 장애 나더라도, 다른 파티션에는 영향 없음 (-> 다른 파티션과 동일한 H/W Rack사용하지 않기 때문에 장애로부터 격리되기 때문)
- 적합한 경우: 대규모 분산 시스템, 예를 들어 Hadoop, Cassandra, Kafka 등에 적합
Elastic Network Interfaces (ENI)
- ENI는 VPC(Virture Private Cloud) 내에서 가상 네트워크 카드의 역할을 하는 논리적 구성 요소이다.
- VPC : AWS 클라우드 내에서 논리적으로 격리된 프라이빗 네트워크, 혹은 그렇게 만드는 서비스. 공용 인터넷으로부터 네트워크를 격리하여 데이터를 보호하고, 서브넷, 보안그룹 등을 사용하여 네트워크 트래픽을 자유롭게 제어, 관리할 수 있다. 정부 기관의 민감한 데이터를 보호하고 네트워크를 제어하기 위해 사용할 수 있다.
- + ) VPN : 가상 사설망. VPN을 사용하면 원격으로 다른 사설 네트워크(ex. 회사)에 액세스할 수 있다.
- 실제 네트워크 카드처럼 EC2 인스턴스에 네트워크 연결을 할 수 있게 해준다.
- VPC : AWS 클라우드 내에서 논리적으로 격리된 프라이빗 네트워크, 혹은 그렇게 만드는 서비스. 공용 인터넷으로부터 네트워크를 격리하여 데이터를 보호하고, 서브넷, 보안그룹 등을 사용하여 네트워크 트래픽을 자유롭게 제어, 관리할 수 있다. 정부 기관의 민감한 데이터를 보호하고 네트워크를 제어하기 위해 사용할 수 있다.
- ENI의 속성
- 사설 IP 주소를 하나 이상으로 가져야한다. -> 그래야 ENI를 통해 EC2 인스턴스와 네트워크 트래픽을 주고 받을 수 있다. 사설 IP 주소는 VPC 내에서만 사용된다.
- 옵션으로 여러 개의 사설 IP를 가질 수 있다.
- 하나의 public IP 또는 elastic IP를 가진다. 이는 인터넷 상에 직접 연결하기 위함이다.
- 1개 이상의 보안 그룹과 연결될 수 있다. 인바운드, 아웃바운드 트래픽을 제어할 수 있다.
- 각 ENI는 고유한 MAC 주소를 갖는다. 이는 네트워크 상에서 식별 정보로 사용된다.
- ENI는 별도로 생성될 수도 있고, 필요에 따라 EC2 인스턴스에 연결/분리할 수 있어, 장애 발생 시 유연하게 대처할 수 있다.
- 특정 AZ에 연결되기 때문에, 다른 AZ의 인스턴스에는 연결할 수 없다.
위의 그림을 보면, 인스턴스에 두개의 ENI가 연결되어 있다. 각 ENI는 하나의 사설 IP 주소와 하나의 탄성 IP(or 공용 IP)를 갖는다. 그리고 모두 같은 AZ에 속해있다. 그리고 ENI는 인스턴스와 연결/분리 하면서 다른 인스턴스에도 연결할 수 있다.
EC2 Hibernate
인스턴스는 stop이나 terminate를 할 수 있지만, 살짝 다르게 작동한다.
- stop : EBS가 유지되어, 다음 시작시 그대로 사용된다.
- terminate : 루트 EBS 볼륨을 포함한 모든 데이터가 삭제된다.
EC2 인스턴스가 어떻게 시작되는지 순서를 보면,
- 첫번째 시작: OS 부팅 & EC2 User Data script 실행
- 이후 시작: OS 부팅만 된다.
=> 이런 과정으로 인해 애플리케이션을 시작하거나, 캐시 등의 작업에 시간이 많이 소요될 수 있다.
Hibernate는 이런 문제를 해결하기 위한 기능이다.
+) Hibernate는 한국어로 '동면하다'를 의미하며, 여기서는 절전모드라고 이해하면 된다.
Hibernate의 기능
- 인메모리(RAM) 상태 유지 -> 인스턴스 부팅이 훨씬 빨라진다. (OS를 멈추지 않기 때문)
- 어떻게 RAM 상태를 유지하는지 내부 동작
- Hibernate가 되면 RAM 상태를 루트 EBS 볼륨에 저장한다.
- 이 때, 루트 EBS 볼륨은 반드시 암호화되어야 한다.
Hibernate 알면 좋은 내용들
- 지원되는 Instance Families : C3, C4, C5, I3, M3, R3, R4, T2, T3,...
- instance RAM 크기 : 최대 150 GB
- instance size : bare metal instance는 지원 x
- AMI : Amazon Linux2, Windows, Linex AMI,... (걍 대부분 지원되는듯)
- 루트 볼륨 : 반드시 EBS여야 함(인스턴스 스토어 x), 저장할 수 있을만큼 대용량이어야 함, 암호화되어야 함.
- On-demand, Reserved, Spot Intance 등 사용 가능 (대부분 사용 가능한듯)
- 정책 상 60일 이상 Hibernate 상태 유지 불가함.
'DevOps, MLOps > AWS' 카테고리의 다른 글
[AWS SAA-C03] 8장 High Availablity & Scalabitity : ELB, ASG (0) | 2024.06.21 |
---|---|
[AWS SAA-C03] 7장 EC2 - Instance Storage (1) | 2024.06.19 |
[AWS SAA-C03] 5장 Amazon EC2 - Basics (7) | 2024.06.13 |
[AWS SAA-C03] 4장 AWS IAM (0) | 2024.06.12 |
[AWS SAA-C03] 1~3장 AWS 클라우드 개요 (0) | 2024.06.11 |