GCE 확장

GCE 확장 (Google Compute Engine)

gce-extensions 확장은 Druid가 Google Compute Engine(GCE)에서 인스턴스를 자동 확장(autoscale)할 수 있게 해줘요. Managed Instance Groups(MIG)을 사용해서 Middle Manager 인스턴스를 늘렸다 줄였다 해요.

출처: 문서

본문

이 Apache Druid 확장을 사용하려면 extensions load list에 gce-extensions를 포함해 주세요.

gce-extensions

현재 이 확장은 Druid가 GCE에서 인스턴스를 자동 확장하게 하는 것만 지원해요.

확장은 GCE의 Managed Instance Groups(이하 MIG)을 통해 인스턴스를 늘리고 줄여요. 이 선택은 머신 구성을 쉽게 하고 관리를 단순화하기 위해 이뤄졌어요.

이런 이유로 이 확장을 사용하려면 다음을 미리 만들어 두어야 해요.

  • Middle Manager를 실행하는 데 사용할 올바른 머신 타입과 이미지를 가진 인스턴스 템플릿(instance template)
  • 위에서 만든 인스턴스 템플릿을 사용하도록 구성된 MIG

또한 MIG 안의 머신을 재조정(rescale)할 수 있으려면, Overlord가 Compute Engine API의 다음 두 scope를 보장하는 서비스 계정(service account)으로 실행되어야 해요.

https://www.googleapis.com/auth/cloud-platform
https://www.googleapis.com/auth/compute

Overlord Dynamic Configuration

Overlord는 워커 동작을 동적으로 변경할 수 있어요.

JSON 오브젝트는 다음 경로에 POST 요청으로 Overlord에 제출할 수 있어요.

http://<OVERLORD_IP>:<port>/druid/indexer/v1/worker

구성 변경 감사(auditing)를 위한 선택적 헤더 파라미터도 지정할 수 있어요.

헤더 파라미터 이름 설명 기본값
X-Druid-Author 구성 변경을 만든 author. ""
X-Druid-Comment 수행 중인 변경을 설명하는 주석. ""

샘플 워커 구성 스펙은 아래와 같아요.

{
  "autoScaler": {
    "envConfig" : {
      "numInstances" : 1,
      "projectId" : "super-project",
      "zoneName" : "us-central-1",
      "managedInstanceGroupName" : "druid-middlemanagers"
    },
    "maxNumWorkers" : 4,
    "minNumWorkers" : 2,
    "type" : "gce"
  }
}

autoscaler의 구성은 꽤 간단해서 두 개의 레벨로만 이루어져 있어요.

외부 레벨은 type(이 경우 항상 gce)과 두 개의 숫자 값인 maxNumWorkers, minNumWorkers를 지정해요. 이 값들은 어떤 순간에도 인스턴스 수가 있어야 하는 경계를 정의해요.

내부 레벨은 envConfig로, 다음을 지정해요.

  • numInstances: 더 많은 워커를 프로비저닝하는 각 요청에서 몇 개의 워커를 생성할지 지정. 안전하게 1로 두면 돼요.
  • projectId: MIG가 있는 프로젝트의 이름을 지정.
  • zoneName: MIG가 있는 세계의 zone을 식별.
  • managedInstanceGroupName: 생성되거나 제거되는 인스턴스를 담고 있는 MIG를 지정.

여기에 명시된 것 외의 파라미터(selectStrategy 등)에 대해서는 overall 문서의 Overlord Dynamic Configuration 섹션을 참고해 주세요.

Known limitations

이 모듈은 내부적으로 API의 ListManagedInstances 호출을 사용해요. API 문서는 이 호출이 pageToken 인자로 페이지네이션될 수 있다고 말하지만, 해당 호출의 응답은 이 파라미터를 설정할 nextPageToken을 제공하지 않아요. 즉, 확장은 한 번에 최대 500개의 Middle Manager 인스턴스(각 호출에서 반환되는 최대 인스턴스 수)로 안전하게 운영될 수 있어요.

더 알아보기 (Learn more)