환경 공급자
환경 공급자 (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)
- 시작 시 공급자가 Azure IMDS 엔드포인트에 HTTP GET 요청을 보내요
- IMDS 응답에는
compute.platformFaultDomain필드를 포함한 VM 메타데이터가 들어 있어요 - 장애 도메인 값이 반환되어 Helix가 인스턴스를 구성하는 데 사용해요
- 이렇게 해서 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 플러그인 구축에 대한 일반 지침은 플러그인 아키텍처 문서를 보세요.