검사점 저장소 문제 해결
이 문서에서는 Blob Storage를 검사점 저장소로 사용하는 문제에 대해 설명합니다.
Blob Storage를 검사점 저장소로 사용하는 문제
Blob 스토리지 계정을 처리 지연과 관련된 검사점 저장소로 사용하거나 SDK를 사용할 때 검사점을 만들지 못하는 경우 문제가 표시될 수 있습니다.
Azure Blob Storage를 검사점 저장소로 사용할 때 다음 권장 사항을 따릅니다.
- 각 소비자 그룹에 대해 별도의 컨테이너를 사용합니다. 동일한 스토리지 계정을 사용할 수 있지만 각 그룹당 하나의 컨테이너를 사용합니다.
- 컨테이너를 다른 용도로 사용하지 말고 스토리지 계정을 다른 용도로 사용하지 마세요.
- 스토리지 계정은 배포된 애플리케이션이 있는 지역과 동일한 지역에 있어야 합니다. 애플리케이션이 온-프레미스인 경우 가능한 가장 가까운 지역을 선택해 보세요.
Azure Portal에서 Storage 계정 페이지의 Blob service 섹션에서 다음 설정을 사용하지 않도록 설정해야 합니다.
- 계층 구조 네임스페이스
- Blob 일시 삭제
- 버전 관리
Azure Stack Hub에서 Blob Storage 검사점 저장소 사용
Azure에서 일반적으로 사용할 수 있는 것과 다른 버전의 Storage Blob SDK를 지원하는 환경에서 검사점 저장소로 Azure Blob Storage를 사용하는 경우 코드를 사용하여 Storage 서비스 API 버전을 해당 환경에서 지원하는 특정 버전으로 변경해야 합니다. 예를 들어 Azure Stack Hub 버전 2002에서 Event Hubs를 실행 중인 경우, 스토리지 서비스에 사용할 수 있는 가장 높은 버전은 2017-11-09입니다. 이 경우 코드를 사용하여 스토리지 서비스 API 버전의 대상을 2017-11-09로 지정해야 합니다. 특정 Storage API 버전을 대상으로 지정하는 방법에 대한 예제는 GitHub의 다음 샘플을 참조하세요.
- .NET
- Java.
- JavaScript 또는 TypeScript
- Python - 동기, 비동기
Azure Stack Hub에서 지원하는 버전을 대상으로 지정하지 않고 검사점 저장소로 Blob Storage 사용하는 Event Hubs 수신기를 실행하는 경우 다음과 같은 오류 메시지가 표시됩니다.
The value for one of the HTTP headers is not in the correct format
Python의 샘플 오류 메시지
Python의 경우 azure.core.exceptions.HttpResponseError
의 오류가 EventHubConsumerClient.receive()
의 on_error(partition_context, error)
오류 처리기로 전달됩니다. 그러나 receive()
메서드는 예외를 발생하지 않습니다. print(error)
에서 다음의 예외 정보를 출력합니다.
The value for one of the HTTP headers is not in the correct format.
RequestId:f048aee8-a90c-08ba-4ce1-e69dba759297
Time:2020-03-17T22:04:13.3559296Z
ErrorCode:InvalidHeaderValue
Error:None
HeaderName:x-ms-version
HeaderValue:2019-07-07
로거는 다음과 같은 두 가지 경고를 기록합니다.
WARNING:azure.eventhub.extensions.checkpointstoreblobaio._blobstoragecsaio:
An exception occurred during list_ownership for namespace '<namespace-name>.eventhub.<region>.azurestack.corp.microsoft.com' eventhub 'python-eh-test' consumer group '$Default'.
Exception is HttpResponseError('The value for one of the HTTP headers is not in the correct format.\nRequestId:f048aee8-a90c-08ba-4ce1-e69dba759297\nTime:2020-03-17T22:04:13.3559296Z\nErrorCode:InvalidHeaderValue\nError:None\nHeaderName:x-ms-version\nHeaderValue:2019-07-07')
WARNING:azure.eventhub.aio._eventprocessor.event_processor:EventProcessor instance '26d84102-45b2-48a9-b7f4-da8916f68214' of eventhub 'python-eh-test' consumer group '$Default'. An error occurred while load-balancing and claiming ownership.
The exception is HttpResponseError('The value for one of the HTTP headers is not in the correct format.\nRequestId:f048aee8-a90c-08ba-4ce1-e69dba759297\nTime:2020-03-17T22:04:13.3559296Z\nErrorCode:InvalidHeaderValue\nError:None\nHeaderName:x-ms-version\nHeaderValue:2019-07-07'). Retrying after 71.45254944090853 seconds
다음 단계
분할 및 검사점에 대한 자세한 내용은 다음 문서, 애플리케이션의 여러 인스턴스에서 파티션 부하 분산을 참조하세요.