ElastiCache for Redis를 확장할 때 가동 중지 시간을 최소화하고 싶습니다.
해결 방법
가동 중지 시간을 최소화하려면 다음 조치를 검토하고 설정 및 유지 관리 절차를 확인하세요.
- 동기화 중 가동 중지 시간을 최소화하려면 워크로드가 많을 때는 확장하지 마세요. 클러스터의 워크로드가 많고 확장에 시간이 오래 걸리는 경우 Redis로 들어오는 요청을 줄여 동기화 실패를 방지하세요. 동기화가 발생하면 Amazon CloudWatch에서 SaveInProgress 지표를 확인하여 동기화가 언제 발생했는지 확인하세요. 참고로 SaveInProgress 지표는 1분마다 데이터를 수집하며 1분 이내에 완료된 동기화는 캡처하지 못할 수도 있습니다. 자세한 내용을 알아보려면 Amazon CloudWatch를 사용하여 Redis용 Amazon ElastiCache를 사용한 모니터링 모범 사례를 참조하세요.
- 클러스터에 연결할 때 클라이언트측 잘못된 구성으로 인해 발생하는 문제를 식별하려면 비프로덕션 환경에서 크기 조정을 테스트하세요. 조정 유형에 따라 확장 중에 노드가 추가되거나 조정 중에 제거되거나 노드 IP 주소가 조정 중에 변경될 수 있습니다. Redis용 ElastiCache는 클러스터에 연결할 수 있는 다양한 유형의 연결 엔드포인트를 제공하므로 애플리케이션 요구 사항에 따라 선택한 연결 엔드포인트 유형이 달라집니다.
- 다른 복제본에서 쿼리를 재시도하거나 기본 애플리케이션 코드로 쿼리를 전송하도록 Redis 클라이언트 또는 애플리케이션 코드를 구성합니다. 클라이언트가 동기화 프로세스에 있는 새 복제본에 연결하면 LOADING: Redis is loading the dataset in memory 오류가 나타납니다. 데이터세트를 로드하는 데 걸리는 시간은 노드의 데이터 크기와 성능을 기반으로 합니다. 이것이 문제인지 확인하려면 프로덕션 환경이 아닌 환경에서 테스트하세요.
- 클러스터를 자동으로 확장하도록 구성합니다. 자동 확장은 들어오는 워크로드의 급격한 증가로 인한 성능 문제를 방지합니다. 자세한 내용을 알아보려면 Redis 클러스터용 ElastiCache 오토 스케일링을 참조하세요.
클러스터 모드가 꺼진 Redis 클러스터의 경우 다음 작업을 검토하고 설정 및 유지 관리 절차를 확인하세요.
- 확장의 경우 애플리케이션이 기본 엔드포인트만 사용하여 연결하면 복제본 노드를 제거해도 가동 중지 시간이 발생하지 않습니다. 애플리케이션이 리더 또는 개별 엔드포인트를 사용하여 해당 복제 노드에 연결하는 경우 원래 연결이 끊어집니다. 원래 연결이 끊어지면 새 TCP 연결을 설정해야 합니다. 또한 애플리케이션은 제거된 복제본 노드에 연결하지 않도록 DNS 조회를 수행해야 합니다. 클라이언트가 리더 엔드포인트를 사용하는 경우 리더 엔드포인트의 DNS 전파로 인해 가동 중지 시간이 발생할 수 있습니다.
- 스케일 아웃의 경우 동기화로 인한 가동 중지 시간을 방지하기 위해 워크로드가 최소화된 시간 동안 스케일아웃해야 합니다.
- 노드 유형 변경의 경우 워크로드가 많으면 동기화가 실패할 수 있습니다. 또한 애플리케이션은 새 노드에 대한 새 연결을 설정하기 위해 기본 또는 리더 엔드포인트에서 DNS 조회를 수행해야 할 수 있습니다. DNS 전파에는 몇 초가 걸리며 클라이언트가 새 노드에 도달하기 전에 서비스가 중단될 수 있습니다. Redis 버전 5.0.5 이상에서는 중단이 최소화됩니다. ElastiCache를 최적화하려면 새 Redis 버전으로 업그레이드하는 것이 가장 좋습니다.
클러스터 모드가 켜져 있는 Redis 클러스터의 경우, 다음 작업을 검토하고 설정 및 유지 관리 절차를 확인하세요.
- 확장 중 가동 중지 시간을 최소화하거나 아예 없애려면 Redis 클러스터 클라이언트 검색 및 지수 백오프를 참조하세요.
- 확장 시 가동 중지 시간을 최소화하려면 온라인 클러스터 크기 조정을 참조하세요. 성능 문제를 최소화하려면 점진적으로 확장하세요. 추가 확장을 하기 전에 초기 스케일 인 후 피크 타임에 클러스터의 성능을 확인해야 합니다.
- 스케일아웃 시 가동 중지 시간을 최소화하려면 온라인 클러스터 크기 조정을 참조하세요.
- 워크로드가 많으면 노드 유형이 변경될 때 동기화가 실패할 수 있습니다. 또한 새 노드 IP 주소는 이전 노드와 동일하지 않을 수 있습니다. 애플리케이션은 cluster nodes 또는 cluster slots 명령을 사용하여 클러스터에서 업데이트된 정보를 가져와 IP 주소를 확인할 수 있습니다. Redis 클러스터를 지원하는 Redis 클라이언트는 클러스터 토폴로지를 업데이트할 수 있습니다. Redis 클라이언트를 구성하려면 특정 클라이언트 유형의 설명서를 참조하세요.
- 복제본 수를 변경할 때는 복제본 노드를 추가하기 전에 먼저 주 노드의 성능을 확인해야 합니다. 복제본 노드 수가 감소하고 클라이언트가 제거된 복제본 노드에서 읽어야 하는 경우 새 복제본 노드로 요청이 전송됩니다. 또한 제거된 노드에 대한 요청을 방지하려면 클라이언트가 클러스터 토폴로지를 업데이트해야 합니다.
관련 정보
복제: Redis(클러스터 모드 비활성화) 대 Redis(클러스터 모드 활성화)
노드 엔드포인트 찾기
ElastiCache for Redis 스케일링
Redis 스냅샷을 생성할 수 있는 충분한 메모리가 있는지 확인
Redis 클라이언트의 모범 사례