[AWS][Redis] elasticache for redis 클러스터 모드 활성화 문의
문의 사항
안녕하세요.
현재 사용중인 elasticache for redis (세션, 최근본 상품 등 저장) 의 cluster 모드 활성화를 검토중에 있습니다.
cluster 모드 활성화 시 읽기 노드를 여러대 사용가능해 확장성이 증가한다고 확인했는데 어떤 지표를 보고 결정이 가능할지 문의 드립니다.
최근 한달 get, set 명령어들의 최대치를 확인했을 때 아래와 같았습니다.
get : 700,000
set : 1,126,000
또한, cluster 모드를 활성화하는 메뉴를 찾지 못했는데 확인 부탁드리며, 활성화 시 downtime 이 있는지도 문의드립니다.
감사합니다.
답변
안녕하세요.
Elasticahe for Redis 의 Cluster 모드 활성화에 대한 검토를 문의 주신 것으로 확인하였습니다.
Cluster 와 replication 설정 시 구성의 차이는 아래와 같습니다.[1]
현재 사용하고 계 구조는 2번째인 Redis (Cluster mode disabled) Cluster with replication 으로
1개의 primary 노드에 1개의 replica 를 운용하고 있으며 4개의 replica 를 더 추가 할 수 있습니다.
따라서 처음 문의 주신 읽기 노드를 여러 대 사용하는 것은 현재 구성에서도 노드 추가 기능을 이용하여 구현 가능합니다.
다만 get 보다 set 명령어가 더 많이 발생하는 것을 볼 때 쓰기 기능을 더 위주로 사용하시는 것으로 보이며
이는 현재 동작 구조 그대로 사용량이 많아 질 경우 replica 만 증설하여 읽기 가용량만 증설 가능한 현재 구조보다는 shard 를 늘려 쓰기 가용량 까지 늘릴 수 있는 cluster 모드가 더 적절할 수 있습니다.
Elasticache 의 노드 크기에 대해서는 아래 5가지의 워크로드 특성을 기준으로 검토하실 수 있습니다.[2]
메모리 :
캐시 적중률이 원하는 수준에서 동작하고 있는지?
데이터 유지여부를 TTL를 사용하여 관리하고 있는지?
예비 또는 예약된 메모리 :
복제/동기화 작업 및 스파이크 성 이슈 발생을 대비해 노드 크기 25% 이상을 유지하는 것이 권고됩니다.
특히 쓰기 작업이 많은 애플리케이션의 경우 더욱 그렇습니다.
유효성 :
replica 및 다중AZ 활성화를 고려해야합니다.
또한 write 작업이 많은 경우 동기화가 더욱 자주 수행되기 때문에 성능에 영향을 미칩니다.
이는 많은 replica 를 가동할 경우도 동일하기 때문에 필요 이상의 replica 를 셋팅하는 것은 좋지 않습니다.
스케일링 :
개별 노드의 성능이 필요한 경우(수직 확장 : 인스턴스 타입 변경) 와 전체 클러스터 성능이 필요한 경우(수평 확장 : 샤드 증설)에 대해 적절한 수단을 사용해야 합니다.
데이터 :
워크로드에 매우 빠른 속도로 요청되거나 갑자기 매우 커지는 하나 이상의 데이터 개체와 같은 단축키가 있는지 확인합니다. 단축키는 고성능을 유지하고 모든 요청을 처리하는 캐시 엔진의 기능을 손상시킬 수 있습니다.
읽기 및 쓰기 워크로드를 분리하는 것을 고려하세요.
마이그레이션의 경우 CMD에서 CME로 마이그레이션하려면 다음 조건을 충족해야 합니다.
- 클러스터에는 데이터베이스 0에만 키가 있을 수 있습니다.
- 애플리케이션은 클러스터 프로토콜을 사용할 수 있고 구성 엔드포인트를 사용하는 Redis 클라이언트를 사용해야 합니다.
- 최소 1개의 복제본이 있는 클러스터에서 자동 장애 조치를 활성화해야 합니다.
- 마이그레이션에 필요한 최소 Redis 엔진 버전은 7.0입니다.
- 클러스터 모드 구성은 클러스터 모드 비활성화에서 클러스터 모드 활성화로만 변경할 수 있습니다. 이 구성은 되돌릴 수 없습니다.
따라서 현재 6.2 버전을 사용하고 있는 현 시점에서는 활성화가 불가능하며 7버전 이상으로 업그레이드가 선행되어야 합니다.
7버전 업그레이드 후 수정에 들어가면 아래와 같은 항목이 생깁니다.
해당 항목을 통해 클러스터 호환 가능 모드로 1차 마이그레이션을 진행하며 아래와 같이 샤드 및 노드 상태로 전환됩니다.
작업 시 아무런 데이터 없는 상태에서도 1시간 이상이 소요되었으므로 실무 환경에서는 더 오랜 시간이 걸릴 것으로 보입니다.
해당 작업이 완료된 다시 수정으로 들어갈 시 클러스터 모드 활성화로 전환이 가능하게 됩니다.
해당 작업까지 완료되면 클러스터 모드가 활성화 됩니다.
해당 작업이 완료되면 클러스터 엔드포인트가 변경 되기 때문에 무중단 작업은 어려울 것으로 보입니다.[3]
감사합니다.
참고[1] : https://aws.amazon.com/ko/blogs/database/work-with-cluster-mode-on-amazon-elasticache-for-redis/
참고[2] : https://aws.amazon.com/ko/blogs/database/five-workload-characteristics-to-consider-when-right-sizing-amazon-elasticache-redis-clusters/
참고[3] : https://docs.aws.amazon.com/ko_kr/AmazonElastiCache/latest/red-ug/modify-cluster-mode.html