no image
[AWS] Global Accelerator를 이용한 Multi Region Clustuer
Global Accelerator란? https://aws.amazon.com/ko/global-accelerator/ 네트워크 가속 서비스 - AWS Global Accelerator - AWSAWS 글로벌 인프라의 성능, 보안 및 가용성을 활용하여 Global Accelerator 엣지 로케이션 중 하나에 사용자 트래픽을 온보드할 수 있습니다. 사용자는 정적 IP 주소를 통해 애플리케이션 엔드포인트에aws.amazon.com AWS Global Accelerator는 애플리케이션의 글로벌 사용자들에게 낮은 지연 시간, 높은 가용성, 그리고 향상된 네트워크 성능을 제공하기 위해 설계된 네트워크 서비스이다. AWS의 글로벌 네트워크 인프라를 활용하여 사용자의 요청을 최적의 엔드포인트(리전 또는 서비스)로..
2024.12.09
no image
[AWS] 가비아 도메인 구매 Route53 연결
개요 EC2로 서버를 열어서 사용하다 보면,  EC2에서 기본으로 제공하는 주소가 너무 길어서 불편함을 느낄 수밖에 없다.  또 해당 주소를 서비스를 배포함에 있어서 사용하는 것은 아무래도 무리가 있다. 따라서 가비아 사이트에서 도메인을 구매해 EC2 공인 IP를 연결해주도록 한다. 가비아 도메인 구매 https://www.gabia.com/ 웹을 넘어 클라우드로. 가비아그룹웨어부터 멀티클라우드까지 하나의 클라우드 허브www.gabia.com   합리적인 가격의 후보군이 셋이였고 여기서 그나마 익숙한한 도메인인 .site 도메인을 선택하여 구매하였다.  Route 53 도메인 적용 Route 53은  AWS에서 제공하는 DNS 서비스이다. 이를 통해 사용자는 인터넷 도메인 이름을 웹 서버나 다른 AWS ..
2024.12.06
no image
[AWS] EC2 OOM 문제 예방
개요현재 사용하고 있는 인스턴스는 t2.micro이고 현재는 아직 OOM 문제를 발견하지는 못하였으나 서비스들을 완성하고 해당 환경에서 배포를 시작한다면 여러 개의 서비스를 올리는 특성상 OOM 문제를 맞닥뜨릴 것이라고 생각한다. 💡 OOM (Out Of Memory) 인스턴스에서 사용할 수 있는 메모리가 모두 소진되어 더 이상 할당할 수 없는 상태 따라서 사전에 예방책을 준비하기로 하였고 현재는 스왑 메모리를 사용하기로 결정하였다. 스왑 메모리를 사용하더라도 문제가 생긴다면 그때에는 인스턴스 업그레이드를 하기로 한다. 어느 정도의 비용이 발생하겠지만 최대한 비용 효율적으로 결정하겠다. 스왑 메모리 사용그렇다면 스왑이란 무엇인가? 스왑은 컴퓨터에서 주메모리가 부족할 때 사용할 수 있는 보조 저장 공간이..
2024.12.06

Global Accelerator란?

 

https://aws.amazon.com/ko/global-accelerator/

 

네트워크 가속 서비스 - AWS Global Accelerator - AWS

AWS 글로벌 인프라의 성능, 보안 및 가용성을 활용하여 Global Accelerator 엣지 로케이션 중 하나에 사용자 트래픽을 온보드할 수 있습니다. 사용자는 정적 IP 주소를 통해 애플리케이션 엔드포인트에

aws.amazon.com

 

AWS Global Accelerator는 애플리케이션의 글로벌 사용자들에게 낮은 지연 시간, 높은 가용성, 그리고 향상된 네트워크 성능을 제공하기 위해 설계된 네트워크 서비스이다.

 

AWS의 글로벌 네트워크 인프라를 활용하여 사용자의 요청을 최적의 엔드포인트(리전 또는 서비스)로 라우팅한다.

 

주요 특징 

  1. 글로벌 네트워크 경로 최적화
    • AWS의 전용 글로벌 네트워크를 사용하여 인터넷의 변동성과 혼잡을 우회하고 더 빠르고 안정적인 경로로 트래픽을 전달한다.
    • 이는 사용자의 최소 지연 시간을 보장하는 데 도움을 준다.
  2. 고정 IP 주소 제공
    • Global Accelerator는 고정 IP 주소를 제공하므로, DNS를 변경할 필요 없이 애플리케이션의 백엔드 엔드포인트를 쉽게 변경할 수 있다.
    • 이는 특히 애플리케이션 업그레이드나 리전 간의 장애 조치(failover) 시 유용하다.
  3. 자동 장애 조치(Failover)
    • 엔드포인트(예: EC2 인스턴스, 로드 밸런서, 컨테이너)가 비정상 상태가 되면 자동으로 트래픽을 다른 정상 상태의 엔드포인트로 전환하여 애플리케이션의 고가용성을 보장한다.
  4. 리전 간 로드 밸런싱
    • Global Accelerator는 리전 간 트래픽을 분산시켜, 사용자 요청이 가장 가까운 엔드포인트 또는 최적의 엔드포인트로 전달되도록 한다.
  5. 탄력적인 용량 확장
    • 글로벌 사용자 기반이 확장되더라도 고속으로 애플리케이션을 이용할 수 있도록 탄력적으로 확장된다.

 

Global Accelerator 사용

 

위와 같은 특징들 떄문에 DR을 위한 Multi Region을 구성하기 위해 Cloud Wave 3기 때 진행한 프로젝트에서 AWS Global Accelerator를 사용한 Warm standby 전략을 사용하였다.

 

 

Multi Region 아키텍처

 

먼저 Terraform을 이용하여 도쿄 리전과 서울 리전에 각각 EKS를 구성해주었다. 

 

내부 서비스 메쉬로 Istio를 사용하기 때문에 각 리전의 Istio ingress ALB를 Global Accelerator의 엔드포인트로 지정해주었다.

 

Global Accelerator 설정

 

 

 

다음과 같이 두 Region의 Istro Ingress ALB가 존재할 떄 두 ALB를 엔드포인트로 Global Accelerator를 설정한다.

 

 

프로젝트를 진행할 당시에 구매한 도메인이 인증서를 받지 못해 Global Accelerator가 자동 생성해주는 domain으로 80 Port로 접근하는 것을 구현하였다.

 

사용 Test

 

평상시에 서울 리전으로 트래픽이 100% 가게끔 운영한다.

 

서울 리전에 장애가 생기면 global accelerator가 완전 관리형 서비스이기에 자동으로 헬스 체크를 하여 도쿄 리전으로 트래픽을 전환시켜 준다.

 

테스트를 하기 위해 엔드포인트의 health check 에 대한 응답을 의도적으로 unhealthy 로 받게 해서 테스트 해보았다. 

 

Grafana Dashboard로 지켜본 결과이다.

 

 

 

 

정상적으로 트래픽이 전환되는 것을 볼 수 있고 Console로 지켜봤을 때도 동일했다.

 

 

 

'Cloud > AWS' 카테고리의 다른 글

[AWS] 가비아 도메인 구매 Route53 연결  (0) 2024.12.06
[AWS] EC2 OOM 문제 예방  (0) 2024.12.06

개요

 

EC2로 서버를 열어서 사용하다 보면,  EC2에서 기본으로 제공하는 주소가 너무 길어서 불편함을 느낄 수밖에 없다.

 

 

또 해당 주소를 서비스를 배포함에 있어서 사용하는 것은 아무래도 무리가 있다.

 

따라서 가비아 사이트에서 도메인을 구매해 EC2 공인 IP를 연결해주도록 한다.

 

가비아 도메인 구매

 

https://www.gabia.com/

 

웹을 넘어 클라우드로. 가비아

그룹웨어부터 멀티클라우드까지 하나의 클라우드 허브

www.gabia.com

 

 

 

합리적인 가격의 후보군이 셋이였고 여기서 그나마 익숙한한 도메인인 .site 도메인을 선택하여 구매하였다.

 

 

Route 53 도메인 적용

 

Route 53은  AWS에서 제공하는 DNS 서비스이다. 이를 통해 사용자는 인터넷 도메인 이름을 웹 서버나 다른 AWS 리소스의 IP 주소와 매핑할 수 있다.

 

Route 53에 EC2 서버를 연결하여 도메인을 사용할 것이다. 전체 과정은 다음과 같다. 

 

1. Route 53 대시보드에 접속해서 호스팅 영역을 생성한다.

 

2. ec2 서버 public ip를 연결하는 새 레코드를 생성한다.

 

 

3. 가비아 네임 서버에 ns 레코드 영역 값을 입력한다.

 

ns 레코드 영역은 route 53에서 확인 가능하다.

 

 

가비아의 네임서버를 변경해 주었기 때문에, 해당 도메인으로 오는 모든 DNS 쿼리는 Route 53으로 전달된다.

 

그리고 Route 53에 설정한 A 레코드에 의해 EC2의 IP 주소로 사용자의 트래픽이 라우팅 되며, 정상적으로 서비스를 이용할 수 있게 되었다. 

 

'Cloud > AWS' 카테고리의 다른 글

[AWS] Global Accelerator를 이용한 Multi Region Clustuer  (0) 2024.12.09
[AWS] EC2 OOM 문제 예방  (0) 2024.12.06

[AWS] EC2 OOM 문제 예방

dlwpdnr213
|2024. 12. 6. 18:44

개요

현재 사용하고 있는 인스턴스는 t2.micro이고 현재는 아직 OOM 문제를 발견하지는 못하였으나 서비스들을 완성하고 해당 환경에서 배포를 시작한다면 여러 개의 서비스를 올리는 특성상 OOM 문제를 맞닥뜨릴 것이라고 생각한다.

 

💡 OOM (Out Of Memory) 인스턴스에서 사용할 수 있는 메모리가 모두 소진되어 더 이상 할당할 수 없는 상태

 

따라서 사전에 예방책을 준비하기로 하였고 현재는 스왑 메모리를 사용하기로 결정하였다. 스왑 메모리를 사용하더라도 문제가 생긴다면 그때에는 인스턴스 업그레이드를 하기로 한다. 어느 정도의 비용이 발생하겠지만 최대한 비용 효율적으로 결정하겠다.

 

스왑 메모리 사용

그렇다면 스왑이란 무엇인가? 스왑은 컴퓨터에서 주메모리가 부족할 때 사용할 수 있는 보조 저장 공간이다.

 

주메모리는 프로그램에 필요한 데이터를 일시적으로 저장하는데, 가끔 시스템이 필요로 하는 메모리 양이 주메모리 용량을 초과하는 경우가 발생한다. 우리의 경우에는 여러 개의 Docker Container를 띄울 것이니 서비스 과다가 해당할 수 있겠다.

 

이런 경우, 스왑 메모리는 가상 메모리처럼 사용된다. 주메모리에 저장할 수 없는 데이터를 HDD나 SSD 같은 보조 저장 장치에 저장하여 해결하는 것이다. 이를 스왑 공간이라 부른다.

 

AWS 환경에서는 EBS 볼륨을 해당 공간으로 활용한다.

 

 sudo dd if=/dev/zero of=/swapfile bs=128M count=16
  sudo chmod 600 /swapfile
  sudo mkswap /swapfile
  sudo swapon /swapfile
  echo '/swapfile swap swap defaults 0 0' | sudo tee -a /etc/fstab

 

위와 같은 명령어로 스왑 메모리 사용을 할 수 있다. 만약 EBS 볼륨이 부족하다 싶으면 미리 볼륨을 키워야 한다.

 

 

결과를 확인했을 떄 스왑 메모리를 사용하는 것을 확인할 수 있다.