AWS Basic 03 : ElastiCache
업데이트:
ElastiCache
- AWS 에서 사용 가능한 인 메모리 데이터 스토어 서비스
- Redis, Memcached 와 호환되며, 우리 파트에서는 Redis 를 사용 중에 있음
Service | Remarks |
---|---|
Memcached | * 클러스터 구성 불가 * Master-Slave 백업 불가 * 무중단 작업 불가로 작업하는 순간 데이터 유실 * 단순한 모델이 필요할 경우 사용 |
Redis | * Standalone : master - slave 구조 * Cluster : master n 대 - slave n 대를 하나의 클러스터로 묶어, 데이터를 Shard 화 |
※ MemoryDB : AWS 자체에서 제공하는 Redis 역할을 해 주는 서비스. ElastiCache 의 Redis 는 SaaS 형태로 Redis 자체를 제공해준다는 점에서 차이점이 있다.
** 주의! **
Elasticsearch 에서는 하나의 노드(정확히는 Data Node)에 Shard 로 쪼개진 Index 가 저장되는 형식이라 Node - Shard 가 상하관계로 보이겠지만,
ElastiCache 에서는 같은 데이터를 다루는 Master 노드 - Slave 노드의 한 세트를 Shard 라고 지칭하므로 상하관계가 헷갈릴 수 있다. 주의하자!
특징
- Memcached/Redis 로 나뉘는 Cache 를 AWS 인프라 위에서 제공해 주는 서비스
- 기존 Memcached/Redis 와 호환 가능한 서비스로, 즉시 Cache 를 생성해서 사용 가능하다
- 기존 Memcached/Redis 에서 사용하는 API 를 ElastiCache 서비스에서도 사용 가능
- Cache 의 성능 및 수량을 유연하게 변경할 수 있다
- 사용한 만큼의 비용만 지불 가능
- 모니터링 가능
Memcached 간단 정리
Cache
- 오래 걸리는 작업 결과를 저장해서 반복적인 작업 시간을 단축할 수 있다
예) 웹 브라우저는 웹 서버에서 한 번 받은 파일을 캐시로 저장해서 다음에 보일 때에는 그 캐시에 저장된 데이터를 보여준다 - 웹 브라우저 - 웹 서버 - Cache - DB : 웹 서버에서 요청받은 내용을 DB 에서 가져오는 동시에 Cache 에 저장해서, 다음에 같은 정보를 요청받았을 때 DB 가 아닌 Cache 에서 빠르게 가져갈 수 있다
Memcached
- 분산형 메모리 캐싱 시스템 : 전통적인 디스크 저장 방식에서 야기되는 속도 문제를 해결할 수 있다
- 서버 - 클라이언트 모델
- 무료, 오픈소스
- Memcached 서버 1대를 노드라 지칭하며, 같은 클러스터로 묶인 노드들은 보안 그룹 등의 설정을 공유하게 됨
ElastiCache 신규 Redis 생성
1. 서브넷 그룹 설정
해당 클러스터를 어떤 네트워크 대역에 만들 것인지 설정한다.
2. 파라미터 그룹 설정
redis.conf 옵션 작성에 해당. ElastiCache 는 서비스 용도이므로 conf 파일의 직접적인 수정이 불가한 만큼 이 곳에서 설정을 입력한다.
3. Endpoint
- 구성 엔드포인트 : 클러스터를 생성하면 제공되는 cluster endpoint 로, 이 엔드포인트를 통해 클러스터 전체에 접속할 수 있다.
- 노드 엔드포인트 : 각 노드마다의 엔드포인트로, 노드의 업그레이드 등으로 인해 IP 가 변경될 것을 감안하여 도메인 형식으로 제공된다.
4. 슬롯 및 키스페이스
슬롯 배포 방식을 지정할 수 있는 옵션으로, 균등 배포를 기본값으로 지정한다(각 노드마다 같은 크기의 슬롯 범위를 지정)
5. 가용 영역 배치
각 노드의 샤드 및 레플리카에 대해 서브넷 그룹을 지정할 수 있다. 균형 있는 배치를 위해 직접 서브넷 그룹 지정이 가능함
6. 보안 그룹 설정
해당 클러스터에 적합한 보안 그룹을 설정한다
7. 보안 - 전송 중 암호화
데이터를 전송하는 데 있어 암호화 설정을 추가할 수 있다(TLS 암호화 설정).
- 사용자 그룹 액세스 제어 목록 : Redis 자체 설정과는 상관 없이 AWS 내에서 설정 가능한 보안 기능 → Redis 의 버전이나 구성 방식과는 상관 없이 사용 가능
- Redis AUTH 기본 사용자 : Redis 자체 보안 설정을 사용 → 버전 6 의 standalone 구성에서만 사용할 수 있는 그 ACL 기능
8. 클러스터로 데이터 가져오기
Redis 클러스터의 데이터를 cache 용이 아닌 DB 용으로 사용할 때, RDB 기능을 이 옵션을 통해 사용할 수 있다. 이 때, ElastiCache 클러스터에 S3 를 마운트한 구성이다.
9. 백업
ElastiCache 클러스터 및 노드의 이미지를 그대로 저장하는 snapshot 과 같은 기능 save / bgsave 기능의 경우 백업에 소요되는 시간이 오래걸리기 때문에 AWS 내에서 자체 기술을 통해 이미지 자체를 백업하는 방식을 사용하는 것으로 추정한다. ex) 보통 Cache 용도로 사용하는 redis 이므로 백업 기능을 사용할 필요가 없다
10. 유지 관리
SNS 알림 주제 를 설정할 경우, 해당 클러스터의 이벤트 발생시 메일 등으로 알림이 도착한다. 해당 알림은 이벤트 옵션에서도 확인 가능
※ 기타
- ElastiCache Redis 설정할 때 maxmemory-policy 는 굳이 설정해 줄 필요가 없다. → AWS 자체에서 EC2 생성 및 redis 인스톨할 때 OS 에서 사용할 메모리 영역을 따로 지정한 후, 남은 영역만을 redis 의 사용 영역으로 분배 및 사용자에게 안내해주기 때문
- AWS ElastiCache 의 업그레이드는 Rolling 배포 방식
ElastiCache 트러블슈팅
- AWS ElastiCache → Redis → 이벤트 : 어떤 클러스터에서 어떤 이벤트가 발생했는지 확인 가능
- AWS ElastiCache → Redis → 파라미터그룹 : 노드의 도메인 정보 확인 가능 → ping <도메인> 명령어를 통해 IP 정보 취득 가능도메인>