Auto Discovery 작동 방법 - 아마존 ElastiCache

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Auto Discovery 작동 방법

이 섹션은 클라이언트 애플리케이션이 ElastiCache 클러스터 클라이언트를 사용하여 캐시 노드 연결을 관리하고 캐시의 데이터와 상호 작용하는 방법을 설명합니다.

캐시 노드에 연결

애플리케이션 관점에서 클러스터 구성 엔드포인트에 대한 연결은 개별 캐시 노드에 대한 직접 연결과 다르지 않습니다. 다음 시퀀스 다이어그램은 캐시 노드에 연결하는 과정을 보여 줍니다.

캐시 노드에 연결
1
애플리케이션이 구성 Endpoint의 DNS 이름을 확인합니다. 구성 Endpoint가 모든 캐시 노드의 CNAME 항목을 유지 관리하기 때문에 DNS 이름은 노드 중 하나에 대해 확인되며 해당 클라이언트가 해당 노드에 연결합니다.
2
클라이언트는 모든 다른 노드에 대한 구성 정보를 요청합니다. 각 노드가 클러스터에 있는 모든 노드에 대한 구성 정보를 유지 관리하므로 요청 시 모든 노드가 구성 정보를 클라이언트에 전달할 수 있습니다.
3

클라이언트는 캐시 노드 호스트 이름 및 IP 주소의 현재 목록을 받습니다. 그런 다음 클러스터에 있는 모든 다른 노드에 연결할 수 있습니다.

참고

클라이언트 프로그램은 캐시 노드 호스트 이름 및 IP 주소 목록을 분당 한 번씩 새로 고칩니다. 이 폴링 간격은 필요한 경우 조정될 수 있습니다.

일반적인 클러스터 작업

애플리케이션이 모든 캐시 노드에 연결되었을 때 ElastiCache 클러스터 클라이언트는 개별 데이터 항목을 저장해야 하는 노드 및 나중에 그러한 데이터 항목에 대해 쿼리되어야 하는 노드를 결정합니다. 다음 시퀀스 다이어그램은 일반 클러스터 작업 과정을 보여 줍니다.

일반적인 클러스터 작업
1
애플리케이션이 키로 식별되는 특정 데이터 항목에 대해 Get 요청을 실행합니다.
2
클라이언트가 키에 대해 해시 알고리즘을 사용하여 해당 데이터 항목을 포함하는 캐시 노드를 결정합니다.
3
데이터 항목이 적절한 노드에서 요청됩니다.
4
데이터 항목이 애플리케이션으로 반환됩니다.

기타 작업

일부 경우에는 클러스터의 노드를 변경할 수 있습니다. 예를 들어, 추가 수요를 수용하기 위해 노드를 추가하거나, 수요가 감소하는 기간 동안 비용을 절약하기 위해 노드를 삭제할 수 있습니다. 또는 이런 저런 노드 장애로 인해 노드를 대체할 수도 있습니다.

클러스터가 변경되어 클러스터 엔드포인트로 메타데이터를 업데이트해야 하는 경우 동시에 모든 노드가 변경되므로 제공된 모든 노드의 메타데이터는 클러스터에 있는 다른 모든 노드의 메타데이터와 일치합니다.

이런 경우 클러스터의 모든 노드에서 동시에 메타데이터가 업데이트되므로 메타데이터는 항상 모든 노드에서 일치합니다. 항상 구성 엔드포인트를 사용하여 클러스터에 있는 여러 노드의 엔드포인트를 가져와야 합니다. 구성 엔드포인트를 사용하여 "사라지는" 노드에서 엔드포인트 데이터를 가져오지 않을 수 있습니다.

노드 추가

노드가 실행되는 동안 노드의 엔드포인트가 메타데이터에 포함되지 않습니다. 노드가 사용 가능 상태가 되면 각 클러스터 노드의 메타데이터에 노드가 추가됩니다. 이 시나리오에서는 모든 노드에서 메타데이터가 일치하고 노드가 사용 가능해진 후에야 새로운 노드와 상호 작용할 수 있습니다. 노드가 사용 가능 상태가 되기 전에는 노드에 대해 알 수 없으며 새로운 노드가 존재하지 않는 것처럼 클러스터에 있는 노드와 상호 작용합니다.

노드 삭제

노드가 제거되면 노드의 엔드포인트가 먼저 메타데이터에서 제거된 후 클러스터에서 노드가 제거됩니다. 이 시나리오에서는 모든 노드의 메타데이터가 일치하고 노드가 사용 가능 상태가 아닐 때 제거할 노드의 엔드포인트를 포함할 시간이 없습니다. 노드 제거 시간 중에는 메타데이터에 노드가 보고되지 않으므로 애플리케이션이 노드가 존재하지 않는 것처럼 나머지 노드 n-1개에 한해 상호 작용합니다.

노드 대체

노드가 실패하면 ElastiCache가 해당 노드의 작동을 중지하고 대체합니다. 대체 프로세스는 몇 분 정도 걸립니다. 이 시간 동안 모든 노트의 메타데이터가 실패한 노드의 엔드포인트를 계속 표시하지만 이 노드와 상호 작용하려는 모든 시도가 실패합니다. 따라서 로직에 항상 재시도 로직을 포함해야 합니다.