AWS

EFS 의 개념과 EBS Volume 과의 차이점, Elastic Load Balancer

박현국 2024. 10. 11. 19:41
EFS
  • EFS 는 관리형 NFS(Network File System) 이다. ->> 많은 EC2 인스턴스에 마운트될 수 있다 ->> EC2 인스턴스는 서로 다른 가용 영역에 있을 수 있다.
  • 즉, 가용성이 높고, 확장성이 뛰어나며 비싸다 ->>> 비용을 미리 지불하므로 프로비저닝 할 필요가 없다.
  • EFS 파일 시스템이 있고, 보안 그룹으로 둘러싼다. 그리고 여러 EC2 인스턴스가 여러 가용 영역에 있다. 이것들은 모두 EFS 를 통해 동일한 네트워크 파일 시스템에 동시에 연결할 수 있다. (GB 사용량에 따라 비용을 지불한다)

EFS 구조 예시

  • 보안 : KMS 를 사용하여 EFS 드라이브에서 미사용 암호화를 활성화할 수 있다.

 

EBS Volume 과 EFS 의 차이점

EBS Volume

1. EBS 볼륨은 한 번에 하나의 인스턴스에 연결 (io1, io2 유형 볼륨의 다중 첨부 기능을 사용하는 경우는 제외)

2. EBS 볼륨의 다른 가용 영역 이동: 가용영역 간에 마이그레이션 하려면, 스냅샷을 통해 다른 가용영역에 복원한다.

EBS 볼륨 예시

 

EFS

1. EFS 는 여러 가용 영역에 걸쳐 수백 개의 인스턴스에 연결하는 것이 목표이다. --> 따라서 1개의 EFS 로 여러 가용영역에 새로운 마운트 대상을 가질 수 있다. --> 그러면 여러 인스턴스가 하나의 파일 시스템을 공유할 수 있다.

2. EFS 는 EBS 보다 가격이 더 높지만, 스토리지 계층을 활용하여 비용을 절감할 수 있다.

EFS 예시

 

 

 

고가용성과 확장성
  • 확장성 : 애플리케이션 시스템이 조정을 통해 더 많은 양을 처리할 수 있다는 의미
    1. 수직 확장성 : 인스턴스의 크기를 확장하는 것 ex) t2.micro -> t2.large 로 확장 (DB 와 같은 분산되지 않은 시스템에서 흔히 사용 즉, RDS 나 ElasticCache 등의 DB)
    2. 수평 확장성 (탄력성) : 애플리케이션에서 인스턴스나 시스템의 수를 늘리는 방법
  • 고가용성: 애플리케이션 또는 시스템을 적어도 둘 이상의 AWS의 가용영역이나 데이터 센터에서 가동 중이라는 걸 의미 -> 고가용성의 목표는 데이터 센터에서의 손실에서 살아남는 것으로 센터 하나가 멈춰도 계속 작동이 가능하게 끔 하는 것

 

ELB (Elastic Load Balancer)
  • 로드 밸런서는 서버 혹은 서버셋으로 트래픽을 백엔드나 다운스트림 EC2 인스턴스 또는 서버들로 전달하는 역할을 한다.
  • 예를 들면 EC2 인스턴스가 3개 있고, 해당 인스턴스 앞에는 ELB 가 있고, 뒤에는 서버셋이 있다. 이 예시에서 세 유저들은 ELB로 바로 연결된다.

ELB 예시

  • 이렇게 더 많은 유저가 연결될 수록 EC2 인스턴스로 가는 부하는 더욱 분산된다. (하지만 유저는 자신들이 백엔드 인스턴스 중 어떤 것에 연결되어 있는지 알 수 없다. -> 즉, 한 엔드 포인트에 연결이 된다는 것만 알고있다.)

그렇다면 로드 밸런서가 왜 필요할까?

1. 부하를 다수의 다운스트림 인스턴스로 분산하기 위해서

-> 애플리케이션에 단일 액세서 지점(DNS) 을 노출하게 되고 다운스트림 인스턴스의 장애를 원활히 처리할 수 있다.

2. ELB 는 상태 확인 메커니즘

--> 어떤 인스턴스로 트래픽을 보낼 수 없는지 확인해준다. 
--> SSL 종료도 할 수 있어서, 웹 사이트에 암호화된 HTTPS 트래픽을 가질 수 있다.

 

즉, 상태 확인은 EC2 인스턴스의 작동이 올바르게 되고 있는지의 여부를 확인하기 위해 사용되는데, 만약 제대로 작동하는 중이 아니라면 해당 인스턴스로는 트래픽을 보낼 수 없기 때문에 ELB 에겐 인스턴스의 상태가 아주 중요하다. 

 

이 상태 확인은 포트와 라우트에서 이루어진다.

 

예를들어 Protocol: HTTP, Port : 4567, EndPoint : /health 가 있다고 해보자.

이런 Route가 애플리케이션 입장에서는 애플리케이션의 상태를 확인하기 쉬울 수 있다. 

먄약 EC2 인스턴스가 괜찮다는 신호, 즉 HTTP 상태 코드로 200을 응답하지 않는다면, 인스턴스 상태가 좋지 않다고, 기록된다. 

그리고 ELB 그쪽으로 트래픽을 보내지 않게 된다.

ELB 예시