Category: Amazon ElastiCache*


Amazon ElastiCache 업데이트– Redis 클러스터 온라인 크기 조절 기능 출시

Amazon ElastiCache를 사용하면 고속 인 메모리 데이터 스토어와 캐시를 쉽게 설정할 수 있습니다. ElastiCache에서는 가장 인기 있는 두 오픈 소스 제품(Redis 및 Memcached)을 지원하여 게임 리더보드, 인 메모리 분석 및 대규모 메시징의 까다로운 요구 사항을 지원합니다.

오늘은 Redis용 Amazon ElastiCache의 중요한 추가 기능에 대해 살펴보겠습니다. 최대 15개의 샤드를 포함하는 클러스터를 만들 수 있습니다. 각 샤드는 특정 슬롯 세트에 대한 키와 값을 저장하고, 각 클러스터에는 정확히 16,384개의 슬롯이 있습니다. 단일 클러스터를 확장하여 초당 최대 2,000만 회의 읽기와 450만 회의 쓰기를 지원하면서 3.55TB의 인 메모리 데이터를 저장할 수 있습니다.

온라인 크기 조절
이제 클러스터를 온라인 상태로 유지하고 요청에 응답하면서 실행 중인 Redis용 ElastiCache 클러스터에서 샤드 수를 조정할 수 있습니다. 그러면 클러스터를 오프라인으로 전환하거나 빈 캐시로 시작할 필요 없이 트래픽 및 데이터 볼륨 변경에 대응할 수 있습니다. 또한 샤드 수를 변경하지 않고도 실행 중인 클러스터를 재조정하여 슬롯 공간을 균일하게 재배포할 수 있습니다.

리샤딩 또는 재분배 작업을 시작하면 Redis용 ElastiCache는 클러스터 내 전체 샤드에 슬롯을 균등하게 배포하는 계획을 준비하여 시작됩니다. 그런 다음 전체 샤드에 슬롯을 전송하여 많은 슬롯을 병렬로 이동하는 방식으로 효율성을 확보합니다. 이 과정에서 클러스터는 요청에 지속적으로 응답하여 이동 중인 슬롯에 대한 쓰기 처리량에 미치는 영향을 완화합니다. 마이그레이션 속도는 인스턴스 유형, 네트워크 속도, 슬롯에 대한 읽기/쓰기 트래픽 등에 따라 달라지며 일반적으로 분당 약 1GB입니다.

리샤딩 및 재분배 작업은 클러스터 모드를 활성화하여 만든 Redis 클러스터에 적용됩니다.

클러스터 리샤딩
일반적으로 메모리가 심각하게 부족하거나 개별 노드에서 병목 현상이 발생할 경우 리샤딩을 통해 클러스터를 확장해야 합니다. 클러스터의 CloudWatch 측정치를 조사하여 각 상황을 확인할 수 있습니다.

메모리 부족 – FreeableMemory, SwapUsage, BytesUsedForCache.

CPU 병목 현상 – CPUUtilization, CurrConnections, NewConnections.

네트워크 병목 현상 – NetworkBytesIn, NetworkBytesOut.

CloudWatch 대시보드를 사용하여 이러한 측정치를 모니터링하고 CloudWatch 경보를 사용하여 리샤딩 프로세스를 자동화할 수 있습니다.

ElastiCache 대시보드에서 Redis 클러스터를 리샤딩하려면 클러스터를 클릭하여 세부 정보 페이지를 방문한 다음 [Add shards] 버튼을 클릭합니다.

추가할 샤드 수와 (선택 사항)원하는 가용 영역을 입력한 다음 [Add]를 클릭합니다.

클러스터의 상태가 [modifying]으로 변경되고 리샤딩 프로세스가 시작됩니다. 위에 표시된 대로 이 작업은 몇 분에서 몇 시간까지 걸릴 수 있습니다. 클러스터에 대한 세부 정보 페이지에서 진행률을 추적할 수 있습니다.

샤드 간에 이동하는 슬롯을 볼 수 있습니다.

클러스터에 대한 이벤트를 확인할 수도 있습니다.

리샤딩 중에 클러스터 샤드에 대한 부하를 완화하기 위해 KEYSSMEMBERS 명령 및 컴퓨팅 집약적인 Lua 스크립트를 사용해서는 안 됩니다. 또한 FLUSHDBFLUSHALL 명령을 사용해서는 안 됩니다. 그러면 리샤딩 프로세스가 중단됩니다.

프로세스가 완료되면 각 샤드의 상태가 [available]로 되돌아갑니다.

샤드를 삭제할 때에도 동일한 프로세스를 수행합니다.

슬롯 재분배
클러스터의 세부 정보 페이지로 이동한 다음 [Rebalance Slot Distribution]을 클릭하여 이 작업을 수행할 수 있습니다.

알아야 할 것들
다음은 이 새로운 기능과 관련하여 몇 가지 알고 있어야 할 사항입니다.

  • 엔진 버전 – 클러스터에서 3.2.10 버전 Redis 엔진을 실행하고 있어야 합니다.
  • 마이그레이션 크기 – 직렬화 이후에 256MB를 초과하는 항목을 포함하는 슬롯은 마이그레이션되지 않습니다.
  • 클러스터 엔드포인트 – 클러스터 엔드포인트는 리샤딩 또는 재분배로 인해 변경되지 않습니다.

지금 이용 가능
이 기능은 지금 이용 가능하며 오늘부터 사용할 수 있습니다.

Jeff;

이 글은 Amazon ElastiCache Update – Online Resizing for Redis Clusters의 한국어 번역입니다.

Amazon ElastiCache 업데이트 – Redis Sharded Cluster 추가 및 3.2 버전 지원

많은 AWS 고객들이 Amazon ElastiCache를 인-메모리 데이터 저장소로 이용하고 있습니다.

2013년 Amazon ElastiCache for Redis출시하고 스냅샷 S3로 내보내기 기능, 엔진 버전 업데이트, 확장 기능, 태그 , Multi-AZ에서 자동 장애 복구 기능을 계속 추가했습니다.

오늘 몇 가지 새로운 기능을 ElastiCache for Redis에 추가하게 되었습니다.

  • Sharded Cluster 지원 – 3.5 TiB 이상의 메모리 데이터로 처리 할 수있는 sharded cluster를 만들 수있게되었습니다
  • 콘솔 개선 – 이전보다 쉽게 클러스터의 생성과 유지 보수 할 수있게되었습니다
  • 엔진 업데이트 – Redis 3.2의 기능을 사용할 수있게되었습니다
  • Geospatial Data – 공간 데이터의 처리를 할 수 사용할 수 있습니다

한 가지씩 살펴 보도록 하겠습니다.

Sharded Cluster 지원 및 콘솔 개선
지금까지 ElastiCache for Redis는 하나의 기본 노드와 5개까지의 읽기 복제본(read replica)을 포함한 클러스터를 지원했습니다. 이 구성에서 메모리 크기가 클러스터 당 237GiB로 제한되어있었습니다.

하나의 클러스터에서 15까지 샤드(Shard)를 만들 수 있게함으로써 전체 클러스터의 메모리 용량을 최대 3.5 TiB까지 메모리 내 데이터로 저장할 수 있습니다. 각 샤드는 5 개까지 읽기 복제본 운영이 가능하며, 초당 2,000만 읽기, 450만 쓰기 성능을 제공합니다.

샤드 모델을 읽기 복제본과 함께 이용하여 전체 클러스터 가용성과 성능을 향상시킵니다. 데이터는 여러 노드에 분산되며, 읽기 복제본을 통해 기본 노드에 장애가 발생했을때 빠르게 복구할 수 있습니다.

샤드 모델의 장점을 살리기 위해서는 클러스터를 지원하는 Redis 클라이언트를 사용해야합니다. 클라이언트는 16,384개의 슬롯을 샤드마다 균등하게 분산하여 해시 테이블로 처리하고 저장 데이터를 각 샤드에 매핑합니다.

ElastiCache for Redis는 클러스터 전체를 하나의 백업 및 복원 용도의 단위로 취급합니다. 따라서, 각 샤드마다 백업을 관리하거나 고민할 필요가 없습니다.

콘솔 기능을 개선하여 이러한 확장 클러스터를 쉽게 만들 수 있습니다. (Redis 엔진을 선택한 후 Cluster Mode enabled (Scale Out)을 체크하면 됩니다.)

콘솔에서 적절한 노드 유형 선택을 도와줍니다.

Sharded cluster는 AWS Command Line Interface (CLI), AWS Tools for Windows PowerShell, ElastiCache APIAWS CloudFormation 템플릿을 통해서도 만들 수 있습니다.

엔진 업데이트
Amazon ElastiCache for Redis에서 Redis3.2를 지원합니다. 이 버전은 세 가지 흥미로운 추가 기능을 가지고 있습니다.

  • Enforced Write Consistency – 새로운 WAIT 명령은 주 노드와 설정된 수의 읽기 복제본에서 확인 응답이 되돌아 올 때까지 호출을 차단합니다. 이러한 변경은 Redis를 강한 일관성을 가진 데이터 저장소를 만들 뿐 아니라, 읽기 복제본에 주 노트에서 만들어진 데이터를 보유하는 가능성을 더 향상 시킵니다.
  • SPOP with COUNTSPOP 명령은 set에서 임의 요소를 제거하고 이를 반환합니다. 하나 이상의 요소를 한 번에 요청할 수 있게 되었습니다.
  • Bitfields – Bitfields는 Redis에서 문자열(string)로 저장되어 있던 작은 정수 컬렉션을 비트 맵으로 저장하여 메모리 효율을 좋게하는 방법입니다. BITFIELD 명령을 사용하면 주소(GET)를 다루는(SET, increment, decrement) 것을 바이트 정렬과 문자 단위를 신경 쓰지 않아도 처리 할 수 있게 됩니다.

본 구현 방식은 서버 프로세스를 포크하는 것이 아니라 스냅샷 방식을 가지고 있습니다. 과부하 상태에서 표준 포크를 이용한 스냅샷은 스왑 성능 저하를 일으킬 수 있습니다. 우리의 구현은 메모리 사용률이 50%를 넘어도 작동하고 문제를 해결합니다.

그 밖에도 새로운 읽기 복제본 주 노드와 동기화 할 때 성능을 향상하고 있습니다. 이와 비슷한 성능 향상을 새롭게 추진하는 기본 노드와 기존 읽기 복제본 동기화 할 때에도 구현하고 있습니다.

언급한 대로, 현재 엔진은 오픈 소스 버전과 호환되며 여러분의 애플리케이션 변경을 할 필요하지 않습니다.

지리 정보 데이터
지리 공간 데이터 (위도/경도)를 저장하고 질의할 수있게되었습니다. 다음은 관련된 명령입니다.

  • GEOADD – 지리 공간 데이터 저장
  • GEODIST – 지점 간 거리 측정
  • GEOHASH – Geohash (geocoding)을 취득
  • GEOPOS – key를 통해 특정 지점의 아이템 얻기
  • GEORADIUS -지정된 지점 반경 내 아이템 얻기
  • GEORADIUSBYMEMBER – 다른 아이템의 반경 내에 들어가는 아이템 얻기

정식 출시
Sharded cluster를 포함 이번에 소개 한 모든 기능은 전체 AWS 리전에서 오늘부터 이용하실 수 있습니다.

Jeff;

이 글은 Amazon ElastiCache for Redis Update – Sharded Clusters, Engine Improvements, and More의 한국어 버전입니다.

Amazon ElastiCache 업데이트 – Redis 스냅샷 S3에 저장하기

Amazon ElastiCache는 인기있는 오픈 소스 인메모리 캐시 엔진인 MemcachedRedis를 지원하고 있습니다. Memcached는 느린 하드 디스크 기반 데이터베이스의 쿼리 결과를 빠르게 캐싱할 수 있으며, Redis는 빠르고 영구적인 키-밸류 데이터를 저장할 수 있는 데이터 저장소입니다. Redis는 복제본을 사용하여 고가용성으로 장애를 극복하고, 구조적 데이터 값을 지원합니다.

오늘 Redis 사용자 여러분께 흥미롭고 주목할 만한 새로운 기능을 출시합니다. 실행 중인 Redis 캐시 클러스터의 스냅 샷을 만드는 것은 이미 가능합니다. 스냅샷은 영구적 백업이나 새로운 캐시 클러스터를 만드는 데 사용할 수 있습니다. 다시 한번 캐시 클러스터에서 스냅샷을 만드는 방법을 살펴 보겠습니다.

이제 Redis 스냅샷을 S3 버킷으로 내보낼 수 있습니다. S3 버킷은 스냅샷과 동일한 리전에 존재하고, ElastiCache에 적절한 IAM 권한 (List, Upload / Delete, View 권한)을 부여해야합니다. 이 기능은 아래 사용 사례에 적합합니다.

  • 재해 복구 – 스냅샷을 다른 리전으로 복사 저장
  • 데이터 분석 – S3 스냅샷 데이터에서 사용 상황 분석 가능
  • 데이터 배포 – 다른 리전에 스냅샷을 통해 새로운 Redis 캐시 클러스터 구축

스냅샷 내보내기
스냅샷을 내보내려면, 스냅샷을 선택하고 Copy Snapshot을 클릭하십시오.

버킷의 권한을 확인하십시오. (자세한 내용은 Exporting Your Snapshot을 참고하세요.)

원하는 대상 S3 버킷명과 스냅샷 이름을 정합니다.

ElastiCache는 스냅 샷을 내 지정된 S3 버킷에 스냅 샷을 저장합니다 :

파일은 표준 Redis RDB file로 저장할 수 있습니다.

또한, 응용 프로그램 등의 코드나 코맨드 라인 모드에서 비슷한 작업을 수행 할 수 있습니다. 대상 S3 버킷을 지정하고 프로그램 코드에서 호출하는 경우 CopySnapshot 명령 줄에서 copy-snapshot 명령을 사용하십시오.

이 기능은 바로 이용 가능하며, 오늘부터 사용할 수 있습니다! 내보내기에는 요금은 들지 않고 일반 S3 스토리지 요금만 부과됩니다.

Jeff;

이 글은 Amazon ElastiCache Update – Export Redis Snapshots to Amazon S3의 한국어 번역입니다.