외로운 Nova의 작업실

aws - ElastiCache 본문

Cloud/aws

aws - ElastiCache

Nova_ 2023. 10. 17. 12:37

- ElastiCache

Elasticache는 분산 인 메모리를 손쉽게 생성하고 확장할 수 있는 서비스입니다. 인메모리 케시는 모든 데이터를 메모리에만 올려놓고 사용하는 데이터베이스의 일종입니다.

 

ElastiCache를 사용해야하는 이유는 성능과 편의성, 분산 캐시 환경 구축에 필요한 비용을 절감하는데 있습니다. 읽기중심의 서비스를 제공하는 환경, 고속으로 데이터를 분석해야하는 환경에 적합합니다. 그리고 데이터베이스의 부하를 줄이고 대용량 분산 캐시 환경을 자체적으로 운영하기에는 부담이 있을때 유용합니다.

 

인메모리 캐시는 모든 데이터를 메모리에 올려 놓음으로써 메모리에만 저장되기 때문에 서버의 전원 공급이 중단되면 데이터는 소멸됩니다. 이를 방지하기 위해 데이터를 주기적으로 데이터를 백업하는 방법이 있습니다.

 

- ElastiCache 엔진

ElastiCache 엔진에는  memcached 와 Redis가 있습니다.

 

memcached : 유명한 분산 메모리 캐시 시스템입니다.

Redis : 다양한 데이터 형식을 제공하는 키-값 데이터 저장소입니다.

 

ElastiCache를 이용하면 Memcached 클러스터를 손쉽게 생성하고 확장할 수 있습니다. Memcached 클러스터는 리전의 가용 영역별로 생성할 수 있습니다. 또한 Memcached 클러스터는 노드를 계속 추가 할수록 데이터를 저장할 수 있는 공간이 늘어납니다. 즉, 1.3기가 캐시노드 3개를 연결하면 3.9기가를 사용할 수 있습니다.

하지만 스냅샷 생성과 Read Replica를 지원하지 않습니다. 

 

Redis는 Memcached와 달리 클러스터를 구성할 수 없습니다. 따라서 노드를 추가한다고해서 저장할 수 있는 전체 메모리 용량이 늘어나지 않습니다. 따라서 메모리 용량을 넘어서는 데이터를 저장하기위해서는 샤딩을 구현해야합니다. 하지만 Redis는 스냅샷 생성과 Read Replica를 지원합니다. 또한 여러 가용 영역에 생성할 수 있습니다.

 

- ElastiCache Memcached 클러스터

ElastiCache Memcached 클러스터를 생성하고 사용해보겠습니다.

ElastiCache 카테고리에서 Memcached 클러스터를 선택하고 생성버튼을 눌러줍니다.

표준 생성으로 변경하고 클러스터 이름을 넣어줍니다.

엔진 버전과 노드 유형을 t2.micro로 변경해줍니다.

서브넷을 설정해주고 VPC는 EC2 인스턴스가 있는 곳으로 설정해줍니다. 이후 모두 기본설정으로 생성해줍니다.

잘 생성된 것을 확인할 수 있습니다. 이때 한가지 해야하는게 있습니다. 보안 그룹을 설정을 안해줬기 때문에, 이제 보안 그룹을 하나 생성하고 적용해주겠습니다. ElastiCache는 저절로 보안그룹을 생성하지 않습니다.

EC2에서 보안그룹을 생성해줍니다.

11211 포트 인바운드로 허용해줍니다.

이제 이걸 방금만든 ElastiCache에 적용해줍니다.

됬습니다. 이제 ElastiCache에 접속해보겠습니다. 이때 중요한점 있습니다.

 

RDS와 ElastiCache는 큰 차이점이 있습니다. RDS의 데이터베이스 엔진은 AWS 외부에서 접속이 허용되어있지만 ElastiCache의 캐시 엔진은 AWS 외부에서 접속할 수 없습니다. SecurituGroup을 생성하여 모든 IP 대역에 대해 접속을 허용하더라도 동일한 VPC에 속한 EC2 인스턴스에서만 접속할 수 있습니다. 따라서 ElastiCache에 접속하려면 같은 VPC에 속한 EC2 인스턴스에서 접속해야합니다.

 

Memcached 클러스터는 텔넷으로 접속할 수 있습니다. 한번 telnet으로 접속해보겠습니다.

접속이 잘 되는 것을 확인할 수 있습니다.

 

- Memcached 클러스터에 노드 추가

지금 보면 노드가 하나밖에 없습니다. 이 노드를 추가하면 데이터를 저장할 수 있는 공간이 들어납니다. 노드를 추가해보겠습니다.

1개만 추가하고 추가를 눌러줍니다.

추가가 완료된 것을 확인할 수 있습니다.

 

- ElastiCache Redis 클러스터 생성

이번에는 Redis 클러스터를 생성해보겠습니다.

Redis 클러스터 생성을 클릭해줍니다.

새클러스터 구성 및 생성을 눌러줍니다.

 

이름과 노드 유형을 설정해줍니다. 나머지는 기본으로 하고 생성해줍니다.

잘 생성된 것을 확인할 수 있습니다. 이제 보안 그룹을 만들어주겠습니다.

포트를 6379로 모든 요청을 받아들이도록 해줍니다.

보안 그룹 설정도 해줍니다. 이제 telnet으로 연결해보겠습니다.

연결이 잘 되는 것을 볼 수 있습니다.

 

- Redis 클러스터 스냅샷

ElastiCache의 Redis는 스냅샷을 생성할 수 있습니다. Redis 스냅샷은 현재 Redis에 저장된 모든 내용을 파일로 저장한 형태입니다. Redis는 인메모리 캐시이므로 스냅샷을 생성하면 Redis 메모리에 저장된 모든 데이터를 스냅샷으로 생성합니다. 또한 이 스냅샷은 다른 리전으로 이전될 수 없고 같은 리전내에서 스냅샷으로 인스턴스를 만들 수 있습니다. 한번 해보겠습니다.

오른쪽 상단에 백업을 눌러줍니다.

이름을 넣어주고 백업을 생성합니다.

이 스냅샷(백업)으로 Redis 클러스터를 생성해보겠습니다.

복원을 눌러줍니다.

다른 것들은 기본으로하고 생성해줍니다.

생성이 된 것을 확인할 수 있습니다.

 

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

aws - Route 53  (0) 2023.10.17
aws - IAM  (0) 2023.10.17
aws - DynamoDB  (0) 2023.10.14
aws - RDS  (0) 2023.10.14
aws - CloudFront  (0) 2023.10.13
Comments