샤드 할당 필터링

샤드 할당 필터링 (Shard allocation filtering)

1.0부터 도입되었어요.

샤드 할당 필터링은 노드 속성을 일치시켜 인덱스의 샤드가 어디에 배치될지를 제한할 수 있게 해 줘요. 이 기능으로 샤드를 특정 노드에 고정하거나, 노드를 피하거나, 특정 하드웨어나 존을 요구할 수 있어요. 샤드는 인덱스 수준 샤드 할당 필터링과 클러스터 수준 라우팅 인식을 포함한 모든 활성 필터를 충족하는 노드에만 할당돼요.

출처: 문서

본문

엔드포인트

PUT /{index}/_settings
GET /{index}/_settings

경로 파라미터

사용할 수 있는 경로 파라미터는 아래 표와 같아요. 모든 경로 파라미터는 선택사항이에요.

파라미터 데이터 타입 설명
index String 설정을 갱신하거나 읽을 하나 이상의 쉼표로 구분된 인덱스예요. 모든 인덱스를 대상으로 하려면 _all 또는 *을 사용해요.

내장 및 사용자 지정 속성

내장 속성 또는 직접 정의한 사용자 지정 노드 속성으로 필터링할 수 있어요. 예를 들어 opensearch.yml에 node.attr.zone: zone-a를 추가해 사용자 지정 속성을 정의할 수 있어요. 다음 내장 속성을 지원해요.

속성 설명
_name 노드 이름으로 일치해요.
_host_ip 호스트 IP 주소로 일치해요.
_publish_ip 게시 IP 주소로 일치해요.
_ip _host_ip 또는 _publish_ip 중 하나와 일치해요.
_host 호스트 이름으로 일치해요.
_id 노드 ID로 일치해요.
_tier 데이터 티어 역할로 노드를 일치해요.

필터 유형

다음 인덱스 설정을 사용해요.

설정 효과
index.routing.allocation.include.<attr> 제공된 값 중 하나라도 일치하는 노드에 샤드를 할당해요.
index.routing.allocation.exclude.<attr> 제공된 값 중 하나라도 일치하는 노드에는 샤드를 할당하지 않아요.
index.routing.allocation.require.<attr> 제공된 값 모두를 충족하는 노드에만 샤드를 할당해요.

요청 예시

다음 예제들은 샤드 할당 필터를 사용하는 다양한 방법을 보여줘요.

특정 존에만 인덱스 할당하기

다음 명령을 사용해 인덱스를 zone-a의 노드에 할당해요:

PUT /test-index/_settings
{
  "index.routing.allocation.require.zone": "zone-a"
}

IP로 노드의 하위 집합에 할당하기

PUT /test-index/_settings
{
  "index.routing.allocation.include._ip": "10.0.0.12,10.0.0.13"
}

노드에서 인덱스 제외하기

다음 명령은 인덱스를 data-node-3 노드에서 제외해요:

PUT /test-index/_settings
{
  "index.routing.allocation.exclude._name": "data-node-3"
}

필터 결합하기

다음 명령은 rack을 필수로 구성하면서 data-node-7 노드는 제외해요:

PUT /test-index/_settings
{
  "index": {
    "routing.allocation.require.rack": "r1",
    "routing.allocation.exclude._name": "data-node-7"
  }
}

필터 지우기

필터를 지우려면 값을 null 또는 빈 문자열 ""로 설정해요:

PUT /test-index/settings
{
  "persistent": {
    "index.routing.allocation.exclude._host_ip": null
  }
}

응답 예시

{
  "acknowledged": true
}

더 알아보기 (Learn more)