환경 공급자

환경 공급자 (Environment Provider)

자동 Pinot 인스턴스 구성을 위한 클라우드 환경 공급자를 구성하는 문서예요. 환경 공급자(Environment Provider) 플러그인은 Pinot가 시작 시 클라우드별 인스턴스 메타데이터를 발견하게 해줘요. 이 메타데이터는 장애 도메인, 가용 영역, 기타 데이터 배치와 장애 허용을 개선하는 클라우드별 설정을 구성하는 데 사용돼요.

출처: 문서

본문

환경 공급자 플러그인은 Pinot가 시작 시 클라우드별 인스턴스 메타데이터를 발견하게 해줘요. 이 메타데이터는 데이터 배치와 장애 허용을 개선하는 장애 도메인, 가용 영역, 기타 클라우드별 설정을 구성하는 데 사용돼요.

사용 가능한 구현 (Available Implementations)

플러그인 클래스 이름 클라우드 제공자
Azure org.apache.pinot.plugin.provider.AzureEnvironmentProvider Microsoft Azure

Azure 환경 공급자 (Azure Environment Provider)

Azure 환경 공급자는 Azure 인스턴스 메타데이터 서비스 (IMDS)를 조회해 현재 VM의 플랫폼 장애 도메인을 가져와요. 이 정보는 Pinot의 Helix 기반 클러스터 관리를 통해 개선된 장애 허용을 위해 Azure 장애 도메인에 걸쳐 인스턴스를 분산하는 데 사용돼요.

구성 (Configuration)

속성 타입 필수 설명
maxRetry Integer 예 최대 HTTP 재시도 횟수 (> 0이어야 함)
imdsEndpoint String 예 Azure IMDS 엔드포인트 URL
connectionTimeoutMillis Integer 예 HTTP 연결 타임아웃(밀리초)
requestTimeoutMillis Integer 예 HTTP 요청/응답 타임아웃(밀리초)

예시 구성 (Example Configuration)

pinot.server.environment.provider.className=org.apache.pinot.plugin.provider.AzureEnvironmentProvider
pinot.server.environment.provider.maxRetry=3
pinot.server.environment.provider.imdsEndpoint=http://169.254.169.254/metadata/instance?api-version=2020-09-01
pinot.server.environment.provider.connectionTimeoutMillis=5000
pinot.server.environment.provider.requestTimeoutMillis=5000

동작 방식 (How It Works)

  1. 시작 시 공급자가 Azure IMDS 엔드포인트에 HTTP GET 요청을 보내요
  2. IMDS 응답에는 compute.platformFaultDomain 필드를 포함한 VM 메타데이터가 들어 있어요
  3. 장애 도메인 값이 반환되어 Helix가 인스턴스를 구성하는 데 사용해요
  4. 이렇게 해서 Pinot는 복제본을 장애 도메인에 걸쳐 분산할 수 있으며, Azure 인프라 장애 시 가용성이 개선돼요

Azure IMDS 엔드포인트(169.254.169.254)는 Azure VM 내부에서만 접근할 수 있어요. 이 플러그인은 Azure 인프라에서 Pinot를 실행할 때만 활성화해야 해요.

커스텀 환경 공급자 작성 (Writing a Custom Environment Provider)

커스텀 환경 공급자를 만들려면 PinotEnvironmentProvider 인터페이스를 구현해요:

public interface PinotEnvironmentProvider {
    void init(PinotConfiguration pinotConfiguration);
    String getFailureDomain();
}

Pinot 플러그인 구축에 대한 일반 지침은 플러그인 아키텍처 문서를 보세요.

더 알아보기 (Learn more)