Amazon OpenSearch Service의 샤드에 대한 인프라 장애의 영향

Amazon OpenSearch Service의 샤드에 대한 인프라 장애의 영향

소스 노드 : 1783553

아마존 오픈서치 서비스 AWS 클라우드에서 규모에 맞게 OpenSearch 및 레거시 Elasticsearch 클러스터를 쉽게 보호, 배포 및 운영할 수 있게 해주는 관리형 서비스입니다. Amazon OpenSearch Service는 클러스터에 대한 모든 리소스를 프로비저닝하고 시작하며 장애가 발생한 노드를 자동으로 감지 및 교체하여 자체 관리 인프라의 오버헤드를 줄입니다. 이 서비스를 사용하면 최신 버전의 OpenSearch, 19개 버전의 Elasticsearch 지원(1.5~7.10 버전) 및 OpenSearch 대시보드 및 Kibana(1.5 - 7.10 버전).

최신 서비스 소프트웨어 릴리스에서는 노드 오류가 발생할 경우 샤드가 재배포될 때 서비스에서 살아남은 노드가 이전에 실패한 노드에서 호스팅된 샤드에 의해 과부하되지 않도록 부하를 인식하도록 샤드 할당 논리를 업데이트했습니다. 이는 다중 AZ 도메인이 일관되고 예측 가능한 클러스터 성능을 제공하는 데 특히 중요합니다.

일반적으로 샤드 할당 논리에 대한 자세한 배경 정보를 보려면 다음을 참조하십시오. Elasticsearch 샤드 할당 이해하기.

난제

Amazon OpenSearch Service 도메인은 노드 수가 구성된 가용 영역 전체에 균등하게 분산되고 총 샤드 수가 어느 한 인덱스의 샤드가 어느 한 인덱스에 집중되지 않고 사용 가능한 모든 노드에 균등하게 분산되는 경우 "균형"이라고 합니다. 마디. 또한 OpenSearch에는 활성화된 경우 기본 샤드와 해당 복제본이 다른 가용 영역에 할당되도록 하는 "영역 인식"이라는 속성이 있습니다. 데이터 복사본이 두 개 이상인 경우 여러 가용 영역이 있으면 내결함성과 가용성이 향상됩니다. 도메인이 확장 또는 축소되거나 노드 장애가 발생하는 경우 OpenSearch는 영역 인식에 기반한 할당 규칙을 준수하면서 사용 가능한 노드 간에 샤드를 자동으로 재배포합니다.

샤드 밸런싱 프로세스는 샤드가 가용 영역 전체에 고르게 분산되도록 보장하지만 경우에 따라 단일 영역에서 예기치 않은 오류가 발생하면 샤드가 살아남은 노드에 재할당됩니다. 이로 인해 살아남은 노드가 압도되어 클러스터 안정성에 영향을 미칠 수 있습니다.

예를 들어 XNUMX노드 클러스터의 한 노드가 다운되면 OpenSearch는 다음 다이어그램과 같이 할당되지 않은 샤드를 재배포합니다. 여기서 "P"는 기본 샤드 복사본을 나타내고 "R"은 복제본 샤드 복사본을 나타냅니다.

도메인의 이러한 동작은 실패 중과 복구 중 두 부분으로 설명할 수 있습니다.

실패 중

여러 가용 영역에 배포된 도메인은 수명 주기 동안 여러 유형의 장애가 발생할 수 있습니다.

전체 영역 실패

클러스터는 다양한 이유로 인해 단일 가용 영역과 해당 영역의 모든 노드를 잃을 수 있습니다. 현재 서비스는 손실된 노드를 나머지 정상 가용 영역에 배치하려고 합니다. 또한 서비스는 여전히 할당 규칙을 따르는 동안 나머지 노드에서 손실된 샤드를 다시 생성하려고 시도합니다. 이로 인해 의도하지 않은 결과가 발생할 수 있습니다.

  • 영향을 받는 영역의 샤드가 정상 영역에 재할당되면 추가 CPU 주기 및 네트워크 대역폭을 사용하므로 대기 시간을 늘릴 수 있는 샤드 복구가 트리거됩니다.
  • n-AZ, n-copy 설정(n>1)의 경우 살아남은 n-1 가용 영역에 n번째 샤드 복사본이 할당됩니다. 이는 샤드 배포에 왜곡을 유발할 수 있으므로 바람직하지 않을 수 있습니다. 노드 간 불균형 트래픽. 이러한 노드는 오버로드되어 추가 장애로 이어질 수 있습니다.

부분 영역 장애

부분 영역 장애가 발생하거나 도메인에서 가용 영역의 일부 노드만 손실되는 경우 Amazon OpenSearch Service는 장애가 발생한 노드를 가능한 한 빨리 교체하려고 합니다. 그러나 노드를 교체하는 데 너무 오래 걸리는 경우 OpenSearch는 해당 영역의 할당되지 않은 샤드를 가용 영역에서 살아남은 노드에 할당하려고 시도합니다. 서비스가 영향을 받는 가용 영역의 노드를 교체할 수 없는 경우 구성된 다른 가용 영역에 노드를 할당할 수 있으며, 이로 인해 영역 전체와 영역 내에서 샤드 배포가 더욱 왜곡될 수 있습니다. 이것은 다시 의도하지 않은 결과를 초래합니다.

  • 도메인의 노드에 추가 샤드를 수용할 수 있는 충분한 저장 공간이 없는 경우 도메인이 쓰기 차단되어 인덱싱 작업에 영향을 미칠 수 있습니다.
  • 샤드의 왜곡된 분포로 인해 도메인은 노드 전체에서 왜곡된 트래픽을 경험할 수 있으며, 이로 인해 읽기 및 쓰기 작업에 대한 대기 시간 또는 시간 초과가 추가로 증가할 수 있습니다.

회복

현재 도메인의 원하는 노드 수를 유지하기 위해 Amazon OpenSearch Service는 위의 실패 섹션에서 설명한 시나리오와 유사하게 나머지 정상 가용 영역에서 데이터 노드를 시작합니다. 이러한 사건 이후 모든 가용 영역에 적절한 노드 배포를 보장하기 위해 AWS의 수동 개입이 필요했습니다.

변경되는 사항

전반적인 장애 처리를 개선하고 장애가 도메인 상태 및 성능에 미치는 영향을 최소화하기 위해 Amazon OpenSearch Service는 다음 변경 사항을 수행하고 있습니다.

  • 강제 구역 인식: OpenSearch에는 샤드를 할당해야 하는 가용 영역을 설정하는 데 사용되는 강제 인식이라는 기존 샤드 밸런싱 구성이 있습니다. 예를 들어 zone이라는 인식 속성이 있고 zone1zone2, 하나의 영역만 사용할 수 있는 경우 강제 인식을 사용하여 OpenSearch가 복제본을 할당하지 못하도록 할 수 있습니다.
cluster.routing.allocation.awareness.attributes: zone
cluster.routing.allocation.awareness.force.zone.values: zone1,zone2

이 예제 구성에서 다음으로 두 개의 노드를 시작하면 node.attr.zone 로 설정 zone1 XNUMX개의 샤드와 XNUMX개의 복제본으로 인덱스를 생성하면 OpenSearch는 인덱스를 생성하고 XNUMX개의 기본 샤드를 할당하지만 복제본은 할당하지 않습니다. 복제본은 한 번만 노드에 할당됩니다. node.attr.zone 로 설정 zone2 사용할 수 있습니다.

Amazon OpenSearch Service는 다중 AZ 도메인에서 강제 인식 구성을 사용하여 샤드가 영역 인식 규칙에 따라서만 할당되도록 합니다. 이렇게 하면 정상 가용 영역의 노드에서 부하가 갑자기 증가하는 것을 방지할 수 있습니다.

  • 로드 인식 샤드 할당: Amazon OpenSearch Service는 프로비저닝된 용량, 실제 용량 및 총 샤드 복사본과 같은 요소를 고려하여 노드당 예상 평균 샤드를 기반으로 노드에 더 많은 샤드로 과부하가 걸리는지 계산합니다. 노드가 이 제한을 초과하는 샤드 수를 할당한 경우 샤드 할당을 방지합니다.

주의 사항 할당되지 않은 일차 복사는 클러스터가 임박한 데이터 손실을 방지하기 위해 오버로드된 노드에서 여전히 허용됩니다.

마찬가지로 수동 복구 문제(위의 복구 섹션에 설명된 대로)를 해결하기 위해 Amazon OpenSearch Service도 내부 조정 구성 요소를 변경하고 있습니다. 새로운 변경 사항이 적용되면 Amazon OpenSearch Service는 이전에 설명한 실패 시나리오를 통과하더라도 나머지 가용 영역에서 노드를 시작하지 않습니다.

현재 및 새로운 동작 시각화

예를 들어 Amazon OpenSearch Service 도메인은 3-AZ, 6개의 데이터 노드, 12개의 기본 샤드 및 24개의 복제본 샤드로 구성됩니다. 도메인은 각 영역에 두 개의 노드가 있는 AZ-1, AZ-2 및 AZ-3에 걸쳐 프로비저닝됩니다.

현재 샤드 할당:
총 샤드 수: 기본 12개 + 복제본 24개 = 샤드 36개
가용 영역 수: 3
영역당 샤드 수(영역 인식이 참임): 36/3 = 12
가용 영역당 노드 수: 2
노드당 샤드 수: 12/2 = 6

다음 다이어그램은 도메인 설정을 시각적으로 보여줍니다. 원은 노드에 할당된 샤드 수를 나타냅니다. Amazon OpenSearch Service는 노드당 XNUMX개의 샤드를 할당합니다.

AZ-3의 한 노드에 장애가 발생하는 부분 영역 장애 중에 장애가 발생한 노드는 나머지 영역에 할당되고 영역의 샤드는 사용 가능한 노드를 기반으로 재분배됩니다. 위에서 설명한 변경 후 클러스터는 노드 장애 후 새 노드를 생성하거나 샤드를 재배포하지 않습니다.


위의 다이어그램에서 AZ-3에서 하나의 노드가 손실되면 Amazon OpenSearch Service는 동일한 영역에서 교체 용량을 시작하려고 시도합니다. 그러나 일부 중단으로 인해 영역이 손상되어 교체를 시작하지 못할 수 있습니다. 이러한 경우 서비스는 다른 정상 영역에서 부족한 용량을 시작하려고 시도하며 이로 인해 가용 영역 전체에서 영역 불균형이 발생할 수 있습니다. 영향을 받는 영역의 샤드는 동일한 영역에서 살아남은 노드에 채워집니다. 그러나 새로운 동작으로 서비스는 동일한 영역에서 시작 용량을 시도하지만 불균형을 피하기 위해 다른 영역에서 부족 용량 시작을 피합니다. 샤드 할당자는 또한 살아남은 노드가 과부하되지 않도록 합니다.


마찬가지로 AZ-3의 모든 노드가 손실되거나 AZ-3이 손상된 경우 Amazon OpenSearch Service는 나머지 가용 영역에서 손실된 노드를 불러오고 노드의 샤드도 재배포합니다. 그러나 새로운 변경 이후 Amazon OpenSearch Service는 나머지 영역에 노드를 할당하지 않거나 손실된 샤드를 나머지 영역에 다시 할당하려고 시도합니다. Amazon OpenSearch Service는 복구가 발생하고 복구 후 도메인이 원래 구성으로 돌아갈 때까지 기다립니다.

가용 영역 손실을 견딜 수 있는 충분한 용량으로 도메인이 프로비저닝되지 않은 경우 도메인의 처리량이 감소할 수 있습니다. 따라서 도메인 크기를 조정하는 동안 모범 사례를 따르는 것이 좋습니다. 즉, 단일 가용 영역 장애의 손실을 견딜 수 있도록 충분한 리소스를 프로비저닝해야 합니다.


현재 도메인이 복구되면 가용 영역 간에 용량 균형을 맞추기 위해 서비스에 수동 개입이 필요하며 여기에는 샤드 이동도 포함됩니다. 그러나 새로운 동작을 사용하면 영향을 받는 영역에서 용량이 반환되고 샤드도 자동으로 복구된 노드에 할당되기 때문에 복구 프로세스 중에 개입이 필요하지 않습니다. 이렇게 하면 나머지 리소스에 대한 경쟁 우선 순위가 없습니다.

당신은 무엇을 기대할 수

Amazon OpenSearch Service 도메인을 최신 서비스 소프트웨어 릴리스로 업데이트하면 모범 사례로 구성된 가용 영역에서 하나 이상의 데이터 노드가 손실된 후에도 더 예측 가능한 성능을 갖게 됩니다. 노드에서 샤드 초과 할당 사례가 줄어듭니다. 단일 영역 장애를 허용할 수 있도록 충분한 용량을 프로비저닝하는 것이 좋습니다.

복제본 샤드를 오버로드된 노드에 할당하지 않기 때문에 이러한 예기치 않은 오류가 발생하는 동안 때때로 도메인이 노란색으로 변하는 것을 볼 수 있습니다. 그러나 이것이 잘 구성된 도메인에서 데이터 손실이 있음을 의미하지는 않습니다. 정전 중에도 모든 예비 서버가 할당되도록 할 것입니다. 도메인의 노드 균형을 관리하고 장애가 복구되면 복제본이 할당되도록 자동 복구가 수행됩니다.

이러한 새로운 변경 사항을 도메인에 적용하려면 Amazon OpenSearch Service 도메인의 서비스 소프트웨어를 업데이트하십시오. 서비스 소프트웨어 업데이트 프로세스에 대한 자세한 내용은 Amazon OpenSearch 서비스 설명서.

결론

이 게시물에서 우리는 Amazon OpenSearch Service가 최근 영역 중단 시 가용 영역 전체에 노드와 샤드를 배포하는 로직을 어떻게 개선했는지 살펴봤습니다.

이 변경 사항은 노드 또는 영역 장애 시 서비스가 보다 일관되고 예측 가능한 성능을 보장하는 데 도움이 됩니다. 도메인은 쓰기 및 읽기를 처리하는 동안 증가된 대기 시간이나 쓰기 블록을 볼 수 없습니다. 이전에는 노드에 샤드가 과도하게 할당되어 더 일찍 표면화되었습니다.


저자 소개

북타와르 칸 Amazon OpenSearch Service에서 근무하는 선임 소프트웨어 엔지니어입니다. 그는 분산 및 자율 시스템에 관심이 있습니다. 그는 OpenSearch에 적극적으로 기여하고 있습니다.

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

쇼리아 두타 비스와스 Amazon Web Services에서 AWS OpenSearch를 담당하는 소프트웨어 엔지니어입니다. 그는 복원력이 뛰어난 분산 시스템을 구축하는 데 열정적입니다.

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

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

존 핸들러 AWS 검색 기술(Amazon CloudSearch 및 Amazon OpenSearch Service)을 전문으로 하는 수석 수석 솔루션 아키텍트입니다. Palo Alto에 기반을 둔 그는 광범위한 고객이 검색 및 로그 분석 워크로드를 올바르게 배포하고 제대로 작동하도록 돕습니다.

타임 스탬프 :

더보기 AWS 빅 데이터