제퍼넷 로고

대기 지원 도메인을 사용하여 Amazon OpenSearch 다중 AZ에서 고가용성 달성: 장애 조치에 대한 심층 분석 | 아마존 웹 서비스

시간

아마존 오픈서치 서비스 최근 소개 된 대기 중인 다중 AZ는 중요한 워크로드에 대해 향상된 가용성과 일관된 성능을 기업에 제공하도록 설계된 배포 옵션입니다. 이 기능을 사용하면 관리형 클러스터는 영역 인프라 오류에 대한 복원력을 유지하면서 99.99% 가용성을 달성할 수 있습니다.

이 게시물에서는 대기 모드가 포함된 다중 AZ에서 검색 및 인덱싱이 어떻게 작동하는지 살펴보고 안정성, 단순성 및 내결함성에 기여하는 기본 메커니즘을 자세히 살펴봅니다.

배경

대기가 포함된 다중 AZ는 3개의 가용 영역에 OpenSearch Service 도메인 인스턴스를 배포합니다. 두 개의 영역은 활성 영역으로, 하나는 대기 영역으로 지정됩니다. 이 구성은 모든 영역에서 동일한 용량을 유지함으로써 영역 장애가 발생하는 경우에도 일관된 성능을 보장합니다. 중요한 점은 이 대기 구역은 다음과 같습니다. 정적으로 안정적인 디자인, 장애 발생 시 용량 프로비저닝이나 데이터 이동이 필요하지 않습니다.

일반 작업 중에 활성 영역은 읽기 및 쓰기 요청 모두에 대한 코디네이터 트래픽과 샤드 쿼리 트래픽을 처리합니다. 반면 대기 영역은 복제 트래픽만 수신합니다. OpenSearch 서비스는 쓰기 요청에 동기식 복제 프로토콜을 활용합니다. 이를 통해 서비스는 오류가 발생하는 경우(평균 장애 조치 시간 <= 1분) 대기 영역을 활성 상태로 즉시 승격할 수 있습니다. 영역 장애 조치. 이전 활성 영역은 대기 모드로 강등되고 복구 작업이 시작되어 정상 상태로 복원됩니다.

고가용성을 보장하기 위해 트래픽 라우팅 및 장애 조치 검색

OpenSearch 서비스 도메인에서는 조정자 HTTP(S) 요청, 특히 인덱싱 및 검색 요청을 처리하는 노드입니다. 대기 도메인이 포함된 다중 AZ에서 활성 영역의 데이터 노드는 검색 요청에 대한 조정자 역할을 합니다.

검색 요청의 쿼리 단계에서 코디네이터는 쿼리할 샤드를 결정하고 샤드 복사본을 호스팅하는 데이터 노드에 요청을 보냅니다. 쿼리는 각 샤드에서 로컬로 실행되고 일치하는 문서가 코디네이터 노드로 반환됩니다. 샤드 복사본이 포함된 노드에 요청을 보내는 역할을 담당하는 코디네이터 노드는 두 단계로 프로세스를 실행합니다. 먼저, 트래픽이 샤드 복사본 전체에 균일하게 분산되도록 노드에서 샤드 복사본을 쿼리해야 하는 순서를 정의하는 반복기를 생성합니다. 그 후 해당 요청은 관련 노드로 전송됩니다.

샤드 복사본에 대해 쿼리할 순서가 지정된 노드 목록을 생성하기 위해 코디네이터 노드는 다양한 알고리즘을 사용합니다. 이러한 알고리즘에는 라운드 로빈 선택, 적응형 복제본 선택, 기본 설정 기반 샤드 라우팅 및 가중 라운드 로빈.

대기가 포함된 다중 AZ의 경우 가중치 라운드 로빈 알고리즘이 샤드 복사 선택에 사용됩니다. 이 접근 방식에서는 활성 영역에 가중치 1이 할당되고 대기 영역에 가중치 0이 할당됩니다. 이렇게 하면 대기 가용 영역의 데이터 노드로 읽기 트래픽이 전송되지 않습니다.

가중치는 클러스터 상태 메타데이터에 JSON 객체로 저장됩니다.

"weighted_shard_routing": {
    "awareness": {
        "zone": {
            "us-east-1b": 0,
            "us-east-1d": 1,
            "us-east-1c": 1
         }
     },
     "_version": 3
}

다음 스크린샷과 같이, us-east-1b 지역의 영역 상태는 다음과 같습니다. StandBy, 이는 이 가용 영역의 데이터 노드가 대기 상태에 있으며 로드 밸런서로부터 검색 또는 인덱싱 요청을 수신하지 않음을 나타냅니다.

AWS 콘솔의 가용 영역 상태

안정적인 상태의 운영을 유지하기 위해 대기 가용 영역은 30분마다 순환되어 모든 네트워크 부분이 가용 영역 전체에 걸쳐 포함되도록 합니다. 이 사전 예방적 접근 방식은 읽기 경로의 가용성을 확인하여 잠재적인 오류 발생 시 시스템의 복원력을 더욱 향상시킵니다. 다음 다이어그램은 이 아키텍처를 보여줍니다.

정상 상태 작동

이전 다이어그램에서 Zone-C에는 가중치가 부여된 라운드 로빈 가중치가 0으로 설정되어 있습니다. 이렇게 하면 대기 영역의 데이터 노드가 인덱싱 또는 검색 트래픽을 수신하지 않습니다. 코디네이터는 데이터 노드에 샤드 복사본을 쿼리할 때 가중치가 부여된 라운드 로빈 가중치를 사용하여 쿼리할 노드의 순서를 결정합니다. 대기 가용 영역에 대한 가중치는 0이므로 코디네이터 요청은 전송되지 않습니다.

OpenSearch Service 클러스터에서는 다음 스크린샷과 같이 가용 영역 회전 지표를 사용하여 언제든지 활성 영역과 대기 영역을 확인할 수 있습니다.

가용 영역 순환 지표

영역 중단 중에 대기 가용 영역은 검색 요청에 대해 페일오픈 모드로 원활하게 전환됩니다. 즉, 활성 가용 영역에서 정상적인 샤드 복사본을 사용할 수 없는 경우 샤드 쿼리 트래픽은 대기 상태에서도 모든 가용 영역으로 라우팅됩니다. 이러한 장애 개방 접근 방식은 장애 발생 시 검색 요청이 중단되지 않도록 보호하여 지속적인 서비스를 보장합니다. 다음 다이어그램은 이 아키텍처를 보여줍니다.

영역 오류 중 읽기 장애 조치

앞의 다이어그램에서 안정된 상태 동안 샤드 쿼리 트래픽은 활성 가용 영역(Zone-A 및 Zone-B)의 데이터 노드로 전송됩니다. Zone-A의 노드 장애로 인해 대기 가용 영역(Zone-C)이 실패하여 샤드 쿼리 트래픽을 가져오므로 검색 요청에는 영향이 없습니다. 결국 Zone-A는 비정상으로 감지되고 읽기 장애 조치는 대기를 Zone-A로 전환합니다.

쓰기 장애 시 장애 조치가 고가용성을 보장하는 방법

OpenSearch 서비스 복제 모델은 쓰기 요청이 사용자에게 승인되기 전에 모든 샤드 복사본의 승인이 필요한 동기식 특성을 특징으로 하는 기본 백업 모델을 따릅니다. 이 복제 모델의 주목할만한 단점 중 하나는 쓰기 경로에 장애가 있을 경우 속도가 느려질 수 있다는 것입니다. 이러한 시스템은 활성 리더 노드를 사용하여 오류나 지연을 식별한 다음 이 정보를 모든 노드에 브로드캐스트합니다. 이러한 문제를 감지하는 데 걸리는 시간(평균 감지 시간)과 이후 문제를 해결하는 데 걸리는 시간(평균 복구 시간)에 따라 시스템이 손상된 상태에서 작동하는 기간이 결정됩니다. 또한 영역 간 통신에 영향을 미치는 네트워킹 이벤트는 복제의 동기식 특성으로 인해 쓰기 요청을 크게 방해할 수 있습니다.

OpenSearch 서비스는 쓰기 트래픽을 복제하고 선출된 리더를 통해 메타데이터 업데이트를 조정하기 위해 내부 노드 간 통신 프로토콜을 활용합니다. 결과적으로 스트레스를 받는 영역을 대기 상태로 두는 것은 쓰기 장애 문제를 효과적으로 해결하지 못합니다.

영역 쓰기 장애 조치: 영역 간 복제 트래픽 차단

대기 모드가 포함된 다중 AZ의 경우 영역 장애 및 네트워킹 이벤트와 같은 예상치 못한 이벤트 중에 발생하는 잠재적인 성능 문제를 완화하려면 영역 쓰기 장애 조치가 효과적인 접근 방식입니다. 이 접근 방식에는 클러스터에서 영향을 받는 영역의 노드를 단계적으로 제거하여 영역 간의 수신 및 송신 트래픽을 효과적으로 차단하는 작업이 포함됩니다. 영역 간 복제 트래픽을 분리하면 영역 오류의 영향을 영향을 받는 영역 내에 포함할 수 있습니다. 이는 고객에게 보다 예측 가능한 경험을 제공하고 시스템이 계속해서 안정적으로 작동하도록 보장합니다.

정상적인 쓰기 장애 조치

OpenSearch Service 내에서 쓰기 장애 조치 조정은 잘 정의된 메커니즘을 통해 선출된 리더 노드에 의해 수행됩니다. 이 메커니즘에는 클러스터 상태 게시를 위한 합의 프로토콜이 포함되어 있으며, 폐기를 위한 단일 영역(항상)을 지정하기 위해 모든 노드 간의 만장일치 합의를 보장합니다. 중요한 점은 영향을 받는 영역과 관련된 메타데이터가 모든 노드에 복제되어 가동 중단 시 전체 재시작 중에도 지속성을 보장한다는 것입니다.

또한 리더 노드는 I/O 펜싱을 시작하기 전 처음에 영향을 받는 영역의 노드를 5분 동안 대기 상태로 배치하여 원활하고 우아한 전환을 보장합니다. 이러한 의도적인 접근 방식은 새로운 코디네이터 트래픽이나 샤드 쿼리 트래픽이 영향을 받은 영역 내의 노드로 전달되는 것을 방지합니다. 이를 통해 이러한 노드는 진행 중인 작업을 정상적으로 완료하고 서비스가 중단되기 전에 모든 진행 중인 요청을 점진적으로 처리할 수 있습니다. 다음 다이어그램은 이 아키텍처를 보여줍니다.

네트워킹 이벤트 중 쓰기 장애 조치

리더 노드에 대한 쓰기 장애 조치를 구현하는 과정에서 OpenSearch 서비스는 다음 주요 단계를 따릅니다.

  • 지도자 퇴위 – 리더 노드가 쓰기 장애 조치가 예정된 영역에 위치하게 되면 시스템은 리더 노드가 자발적으로 리더십 역할에서 물러나도록 보장합니다. 이러한 포기는 통제된 방식으로 수행되며 전체 프로세스는 다른 적격 노드로 넘겨져 필요한 작업을 담당하게 됩니다.
  • 해임될 지도자의 재선을 막는다 – 쓰기 장애 조치로 표시된 영역에서 리더가 재선출되는 것을 방지하기 위해 적격 리더 노드가 쓰기 장애 조치 작업을 시작할 때 폐기될 리더 노드가 추가 선택에 참여하지 않도록 조치를 취합니다. 이는 폐기될 리더 노드를 투표 구성에서 제외하여 클러스터 운영의 중요한 단계에서 투표하는 것을 효과적으로 방지함으로써 달성됩니다.

쓰기 장애 조치 영역과 관련된 메타데이터는 클러스터 상태 내에 저장되며 이 정보는 다음과 같이 분산 OpenSearch Service 클러스터의 모든 노드에 게시됩니다.

"decommissionedAttribute": {
    "awareness": {
        "zone": "us-east-1c"
     },
     "status": "successful",
     "requestID": "FLoyf5v9RVSsaAquRNKxIw"
}

다음 스크린샷은 영역의 네트워킹 속도가 느려지는 동안 쓰기 장애 조치(failover)가 가용성 복구에 도움이 된다는 것을 보여줍니다.

쓰기 장애 조치로 가용성 복구 지원

쓰기 장애 조치(failover) 후 영역 복구

영역 재커미셔닝 프로세스는 영역 쓰기 장애 조치(failover) 후 복구 단계에서 중요한 역할을 합니다. 영향을 받은 영역이 복원되고 안정적인 것으로 간주되면 이전에 폐기되었던 노드가 클러스터에 다시 합류하게 됩니다. 이 재커미셔닝은 일반적으로 영역이 재커미셔닝된 후 2분 이내에 발생합니다.

이를 통해 피어 노드와 동기화하고 복제본 샤드에 대한 복구 프로세스를 시작하여 클러스터를 원하는 상태로 효과적으로 복원할 수 있습니다.

결론

OpenSearch Service Multi-AZ with Standby의 도입은 기업에 중요한 워크로드에 대한 고가용성과 일관된 성능을 달성할 수 있는 강력한 솔루션을 제공합니다. 이 배포 옵션을 사용하면 기업은 인프라의 탄력성을 강화하고 클러스터 구성 및 관리를 단순화하며 모범 사례를 시행할 수 있습니다. 가중치가 적용된 라운드 로빈 샤드 복사본 선택, 사전 예방적 장애 조치 메커니즘, 페일오픈 대기 가용 영역과 같은 기능을 갖춘 OpenSearch Service Multi-AZ with Standby는 까다로운 엔터프라이즈 환경에 안정적이고 효율적인 검색 환경을 보장합니다.

대기가 포함된 다중 AZ에 대한 자세한 내용은 다음을 참조하십시오. 내부 Amazon OpenSearch 서비스: 대기 상태의 다중 AZ.


저자에 관하여


안슈 아가르왈
 Amazon Web Services에서 AWS OpenSearch를 담당하는 선임 소프트웨어 엔지니어입니다. 그녀는 확장 가능하고 매우 안정적인 시스템 구축과 관련된 문제를 해결하는 데 열정적입니다.


나하타 리샤브
 Amazon Web Services에서 OpenSearch를 담당하는 소프트웨어 엔지니어입니다. 그는 분산 시스템의 문제 해결에 매료되었습니다. 그는 OpenSearch에 적극적으로 기여하고 있습니다.


북타와르 칸
Amazon OpenSearch Service를 담당하는 수석 엔지니어입니다. 그는 분산 및 자율 시스템에 관심이 있습니다. 그는 OpenSearch에 적극적으로 기여하고 있습니다.


란지스 라마찬드라
Amazon Web Services의 Amazon OpenSearch Service에서 일하는 엔지니어링 관리자입니다.

spot_img

최신 인텔리전스

spot_img

VC 카페

VC 카페

라이프사이VC

라이프사이VC