Cache에 대한 기본적인 지식이 있다는 전제 하에 글을 씁니다.
웹 서버에서 Cache의 존재 의의를 요약하자면 반복적으로 동일한 내용을 로딩하지 않고 미리 Cache에 저장하여 빠르게 원하는 페이지를 불러내는 것입니다. AWS CloudFront가 유저의 위치에 가까운 에지 로케이션에 서비스를 저장하는 CDN 서비스를 제공하는 것도 이 원리입니다.
웹 브라우저-웹 서버-DB의 정보 흐름에서도 Cache는 위와 같은 역할을 합니다. DB와 웹 서버 사이에 Cache가 존재하면 매번 DB에서 정보를 받아오지 않아도 되므로 DB의 부하를 줄이고 결과값을 빠르게 받을 수 있다는 장점이 있습니다.
그런데 AWS ElastiCache를 이해하기 위해서는 Memcached 캐시 엔진 개념을 이해해야 합니다. 분산형 메모리 캐슁 시스템이라고도 불리는 Memcached는 우리가 흔히 아는 휘발성 저장 장치인 RAM에 정보를 저장합니다. 일반적으로 DB는 HDD, SSD에 정보를 저장합니다. 하지만 Memcached는 HDD, SSD 보다 빠른 IO 속도를 가진 RAM에 저장된 데이터를 제공함으로써 사용자에게 결과를 한층 더 빠르게 전달할 수 있습니다.
ElastiCache는 Memcahed를 AWS에서 제공하는 것이라고 생각하면 됩니다. 따라서 Memcached와 호환되므로 Memchaed를 활용하는 어플리케이션은 소스 코드 변환 없이 AWS에 이식할 수 있습니다.
(물론 Memcached외에도 Redis 캐시 엔진도 지원합니다.)
ElastiCache는 즉시 Memcached Cluster를 생성해서 사용할 수 있으며 캐시 노드를 추가하는 방식으로 캐쉬의 성능과 수량을 유연하게 변경할 수 있습니다. 즉, 빠르게 캐쉬를 증설하거나 삭제할수도 있습니다. 하지만 스냅샷 생성과 Read Replica을 지원하지 않습니다. 반면 Redis는 Memcache와 달리 클러스터를 구성할 수 없습니다. 그러나 스냅샷 생성과 Read Replica를 지원합니다.
ElastiCache 클러스터 생성, 노드 접속
EC2나 RDS에서는 인스턴스가 기본 단위지만 ElastiCache에서는 캐시 노드가 기본 단위입니다.
클러스터는 캐시 노드를 담고 있는 그룹이며 리전의 AZ 별로 생성할 수 있습니다.
Memcahced를 선택한 후 노드 유형을 설정합니다.
노드 유형은 EC2의 인스턴스 유형에 해당한다.
설정 후에는 [생성]을 눌러 클러스터 생성을 마친다.
클러스터가 생성된 후 클릭하면 클러스터에 속한 캐시 노드의 목록이 표시됩니다. Endpoint 주소를 통해 캐시 노드에 접속할 수 있습니다. 물론, 클러스터 보안 그룹을 설정하여 포트(11211)를 열어주어야 합니다.
엔드포인트에 접속하기 위해 우선 보안 그룹을 다음과 같이 생성해줍니다.
Memcached 포트를 열 때는 관례적으로 11211을 설정합니다.
다음은 보안 그룹을 지정할 클러스터를 선택 후 [수정]을 클릭합니다.
클러스터 수정에서 VPC 보안 그룹을 눌러 수정해줍니다.
이제 Memcached 캐시 노드에 접속할 수 있게 되었습니다.
접속 방법은 EC2에서 텔넷을 이용해야 합니다. (ElastiCache의 캐시 노드는 AWS 외부에서 접속 불가)
때문에 앞서 생성한 클러스터의 VPC가 EC2의 VPC와 같아야 합니다
EC2 인스턴스에 접속하여 접속해봅시다
텔넷이 없다면 우선 설치 먼저 하고
sudo yum install telnet
텔넷을 이용하여 11211 포트로 다음 캐시 노드 주소로 접속합니다.
telnet testexample.4u54g6.0001.apn2.cache.amazonaws.com 11211
클러스터에 캐시 노드 추가하기
캐시 노드를 추가하고 싶은 클라우드에서 [노드 추가] 후 생성하면 된다.
'AWS > ☁️ AWS' 카테고리의 다른 글
AWS Certificate Manager(ACM)를 이용 SSL 인증서 등록 및 ELB를 이용한 https force redirection (0) | 2020.06.01 |
---|---|
AWS SQS (0) | 2020.02.19 |
AWS IAM 그룹, 사용자 생성 (0) | 2020.02.19 |
AWS Route 53 (0) | 2020.02.16 |
AWS RDS와 EC2 연동하기 (0) | 2020.02.15 |