확장성 및 고가용성을 위해 Redis 클러스터 설정

Amazon ElastiCache for Redis 클러스터 모드 설정, 구성, 보안 및 프로비저닝

이 자습서에서는 ElastiCache for Redis에서 Redis 클러스터를 생성 및 구성하는 방법에 대해 알아봅니다. 클러스터 모드를 활성화하면 Redis 클러스터의 확장성과 가용성이 높아집니다. 처음에는 작은 클러스터를 생성하고 애플리케이션의 규모가 커지면 Redis 데이터를 쉽게 확장할 수 있습니다. 그리고 여러 가용 영역에서 복제본을 설정하면 읽기 용량도 늘릴 수 있습니다. 이 자습서의 작업을 진행하면 Redis 클러스터 배포를 위한 몇 가지 모범 사례도 파악할 수 있습니다.

클러스터 모드 기능을 지원하는 매우 다양한 Redis 클라이언트를 활용할 수 있습니다. 따라서 클라이언트가 로컬 캐시에서 해시 슬롯 위치를 추적할 수 있기 때문에 샤딩 데이터를 매우 쉽게 안정적으로 사용할 수 있습니다. 그러므로 전체 시스템의 성능도 개선됩니다.

이 자습서에서 생성하는 ElastiCache 노드에는 프리 티어가 적용됩니다.

Amazon ElastiCache 대시보드에 로그인 »

요구 사항

이 자습서를 어느 정도 진행하고 나면 Redis 클러스터의 몇 가지 기능을 직접 사용해 보기 위해 Redis 클러스터에 연결해야 합니다. 따라서 Redis 클라이언트가 설치된 EC2 인스턴스 액세스 권한이 필요합니다. Redis 클라이언트가 설치된 EC2 인스턴스가 이미 있으면 1단계로 건너뛰어도 됩니다. 그렇지 않은 경우에는 Amazon EC2 인스턴스에 연결한 후 아래 지침에 따라 Redis 클라이언트를 설치합니다.

C 컴파일러를 사용할 수 없으면 다음 명령을 실행하여 컴파일러를 설치합니다.

$ sudo yum install gcc

Redis 클라이언트를 다운로드하여 컴파일합니다.

$ curl -O http://download.redis.io/redis-stable.tar.gz
$ tar xvzf redis-stable.tar.gz
$ cd redis-stable
$ make distclean  # Ubuntu systems only
$ make

이제 자습서를 시작할 수 있는 모든 준비가 끝났습니다.

자습서 소개
시간 10~20분                                           
요금 프리 티어 적격
사용 사례 확장, 고가용성, 실시간 애플리케이션
제품 AWS ElastiCache for Redis, AWS 프리 티어
대상 개발자
레벨 초보자
최종 업데이트 날짜 2019년 6월 5일

1단계: ElastiCache 대시보드 열기

ElastiCache 대시보드를 연 후 다음 단계를 수행합니다.

1.1 - 오른쪽 상단 모서리에서 Redis 클러스터를 시작할 리전을 선택합니다.

1.2 - [지금 시작하기]를 클릭합니다.

2단계: Redis 클러스터 생성

2.1 - [Redis]를 클러스터 엔진으로 선택합니다.

2.2 - [클러스터 모드 활성화]를 선택합니다.

3단계: Redis 설정 구성

3.1 - Redis 클러스터의 이름(예: “elc-tutorial”)을 선택합니다.

3.2 - 노드 유형을 cache.t2.micro로 변경합니다. 이 자습서에서는 이 노드 유형을 사용할 수 있지만, 프로덕션 클러스터의 경우에는 노드의 크기가 워크로드에 따라 다르며 m5 또는 r5 인스턴스 패밀리로 시작해야 할 수 있습니다.

3.3 - [샤드 수]에서 3을 선택합니다. 그러면 데이터가 서로 다른 3개 마스터 노드에 분할됩니다.

3.4 - [샤드당 복제본]에서 2를 선택합니다. 그러면 각 마스터 노드의 복제본 수가 2개로 설정됩니다. 장애가 발생하면 자동 장애 조치가 트리거되며 복제본 중 하나가 마스터 노드의 역할을 대신합니다.

3.5 - 서브넷 그룹을 선택합니다. 서브넷 그룹에 대한 자세한 내용은 설명서를 참조하세요.

4단계: 고급 Redis 설정 구성

4.1 - [자동 장애 조치를 사용한 다중 AZ] 확인란을 선택합니다.

각 마스터 노드가 서로 다른 가용 영역에 생성되며 마스터 노드의 각 복제본도 다른 가용 영역에 할당됩니다. 이 방식은 안정성을 높이기 위한 모범 사례입니다.

다른 필드는 기본값을 그대로 유지합니다.

5단계: 보안 설정 구성

이 예제에서는 암호화를 사용하지 않지만, 미사용 데이터 및 전송 중 데이터에 대해 모두 암호화를 구성할 수는 있습니다.

5.1 - Redis 클러스터용 보안 그룹을 선택합니다.

중요: 선택한 보안 그룹이 포트 6379에서 수신 TCP 연결을 허용하는지 확인하세요. 해당 연결이 허용되지 않으면 Redis 노드에 연결할 수 없습니다.

6단계: 클러스터에 데이터 가져오기

이 예제에서는 시드 RDB 파일을 로드하지 않으므로 이 구성 단계를 모두 건너뛸 수 있습니다. 하지만 원하는 경우에는 이 옵션을 사용할 수도 있습니다.

7단계: 백업 구성

대부분의 사례에서는 일일 백업이 중요하며, 문제 발생 시 조치를 취할 수 있는 충분한 시간을 확보하기 위한 보존 기관과 함께 백업을 활성화하는 것이 좋습니다. 이 자습서에서는 백업을 사용하지 않습니다.

7.1 - [자동 백업 사용]의 선택을 해제합니다.

8단계: 유지 관리 설정

8.1 - 사용자에게 적합한 유지 관리 기간을 지정합니다.

애플리케이션의 워크로드가 낮은 시간과 요일을 생각해 보세요. 지금은 [기본 설정 없음]을 선택해도 됩니다.

9단계: 검토 및 생성

양식의 모든 필드를 빠르게 검토한 후 [생성]을 클릭하면 됩니다.

9.1 - [생성]을 클릭합니다.

Redis 클러스터가 초기화되며, “사용 상태”가 되면 10단계를 계속 진행할 수 있습니다.

Amazon CLI를 사용하려는 경우 아래 명령을 실행하면 Redis 클러스터가 한 번에 생성됩니다.

Amazon CLI를 사용하려는 경우 아래 명령을 실행하면 Redis 클러스터가 한 번에 생성됩니다.

$ aws elasticache create-replication-group \
--replication-group-id elc-tutorial \
--replication-group-description "Tutorial example" \
--num-node-groups 3 \
--cache-node-type cache.t2.micro \
--cache-parameter-group default.redis5.0.cluster.on \
--engine redis \
--engine-version 5.0.3 \
--cache-subnet-group-name sn-value \
--security-group-ids sg-value \
--node-group-configuration \
"ReplicaCount=2,PrimaryAvailabilityZone='us-east-1a',ReplicaAvailabilityZones='us-east-1b','us-east-1c',Slots=0-5460" \
"ReplicaCount=2,PrimaryAvailabilityZone='us-east-1b',ReplicaAvailabilityZones='us-east-1c','us-east-1a',Slots=5461-10921" \
"ReplicaCount=2,PrimaryAvailabilityZone='us-east-1c',ReplicaAvailabilityZones='us-east-1a','us-east-1b',Slots=10922-16383"

--security-group-ids의 인수로는 sg-value 값을 사용할 보안 그룹 ID로 바꿔야 합니다.

--cache-subnet-group-name의 인수로는 sn-value를 서브넷 그룹 이름으로 바꿉니다. 서브넷 그룹을 생성해야 하는 경우 다음 명령을 사용합니다.

$ aws elasticache create-cache-subnet-group \
--cache-subnet-group-name elc-tutorial-subnet \
--cache-subnet-group-description "Tutorial Subnet Group" \
--subnet-ids sn-ids

-sn-ids의 값은 서브넷 ID 목록이어야 합니다.

Amazon API를 사용하려는 경우 아래 요청을 실행하면 Redis 클러스터가 생성됩니다.

https://elasticache.us-east-1.amazonaws.com/
?Action=CreateReplicationGroup 
&CacheParameterGroup=default.redis5.0.cluster.on
&Engine=redis
&EngineVersion=5.0.3
&ReplicationGroupDescription=Tutorial%20example
&ReplicationGroupId=elc-tutorial
&NumNodeGroups=3
&PrimaryClusterId=elc-primary
&ReplicasPerNodeGroup=2
&Version=<version>
&SignatureVersion=4
&SignatureMethod=HmacSHA256
&Timestamp=<timestamp>
&X-Amz-Credential=<credential>

이전 요청에서는 Version, Timestamp 및 X-Amz-Credential의 값을 제공해야 합니다.

10단계: Redis에 연결

Redis 클러스터의 구성 엔드포인트를 찾습니다.

10.1 - 화살표를 클릭하면 Redis 클러스터 세부 정보가 표시됩니다.

10.2 - 구성 엔드포인트를 복사합니다.

예제에서 엔드포인트가 언급될 때마다 구성 엔드포인트의 호스트 이름을 사용해야 합니다.

10.4 - redis-cli 유틸리티를 사용하여 Redis 노드에 연결합니다.

$ ./src/redis-cli -c -h endpoint

10.5 - PING을 사용하여 연결을 테스트합니다.

endpoint:6379> PING
	PONG

11단계: 장애 조치 트리거

이제 정상 작동하는 Redis 클러스터가 생성되었습니다. 클러스터 모드의 기능 중 하나는 노드 다운 시 클러스터가 자체적으로 복구될 수 있다는 것입니다. 이 기능을 테스트하려는 경우 수동 장애 조치를 트리거하면 됩니다. 그러면 마스터 역할을 대신할 읽기 전용 복제본이 선택됩니다. 장애 조치가 실행되고 나면 새 마스터에 연결할 수 있습니다. 그와 동시에 새 복제본이 자동으로 추가되므로 클러스터는 마스터 하나와 복제본 두 개가 계속 포함된 상태로 유지됩니다.

10단계의 엔드포인트를 사용하여 노드의 역할을 확인합니다.

11.1 - 엔드포인트의 역할을 확인합니다.

	endpoint:6379> ROLE
	1) "master"
 	...

이제 마스터에 연결하려고 합니다. 마스터에 연결되지 않았다면 다른 엔드포인트를 사용하여 연결해 보세요. 연결은 세 번까지 시도할 수 있습니다.

마스터 노드를 찾은 후에는 다음 작업을 수행합니다.

11.2 - 아무 노드나 선택하고 [작업]을 클릭한 후 [기본 노드 장애 조치]를 선택합니다.

메시지 내용을 확인하여 현재 상태를 파악하고 [계속]을 클릭합니다. 복제본 중 하나가 새 마스터가 되고 마스터당 복제본 수가 복원됩니다. CLUSTER NODES 명령을 실행하여 수행되는 작업을 확인할 수 있습니다.

12단계: 클러스터 삭제

이 실험의 마지막 단계로, 더 이상 필요하지 않게 된 Redis 클러스터를 삭제하는 방법에 대해 알아보겠습니다.

Redis 클러스터를 삭제하려면 ElastiCache 대시보드로 이동한 후 다음 지침을 따릅니다.

12.1 - 왼쪽 창에서 [Redis]를 선택합니다.

그러면 Redis 클러스터의 전체 목록이 표시됩니다.

12.2 - 이 자습서용으로 생성한 Redis 클러스터를 선택합니다.

12.3 - [삭제]를 클릭합니다.

12.4 - 최종 백업 생성 여부를 묻는 메시지가 표시됩니다. 최종 백업을 생성하는 것은 권장되지만, 이 자습서에서는 필요하지 않습니다. [아니요]를 선택하고 [삭제]를 클릭합니다.

클러스터의 상태가 [삭제 중]으로 변경됩니다.

축하합니다!

클러스터 모드가 활성화된 Redis 클러스터를 생성했습니다. 노드는 여러 가용 영역에 분산되었으며 자동 장애 조치가 가능하도록 구성되었습니다. 그리고 Redis 클러스터 배포를 위한 몇 가지 모범 사례도 알아보았습니다.

이 자습서가 유용했습니까?

감사합니다.
좋아하는 사항을 알려주십시오.
실망을 드려 죄송합니다.
오래되었거나 혼란스럽거나 부정확한 사항이 있습니까? 피드백을 제공하여 이 자습서를 개선할 수 있도록 도와주십시오.

자세히 알아보기

Redis 클러스터에 대해 자세히 알아보려면 Redis Cluster 101 블로그 게시물을 참조하세요. 더 많은 시작하기 콘텐츠, 개발자 안내서 및 사용 사례를 제공하는 기술 블로그를 확인하려면 리소스 페이지를 방문하세요.

올바른 노드 크기 선택

Redis 노드의 크기를 결정하는 것이 어려워 보일 수도 있지만, Amazon에서 제작한 지침을 따르면 요구에 따라 적절한 노드 크기를 선택할 수 있습니다.

캐싱 전략

마지막으로 성능과 안정성을 높이기 위한 캐싱 전략 및 모범 사례를 자세히 확인할 수 있습니다.