Skip to main content

개요

ClickHouse의 클러스터 디스커버리 기능을 사용하면 설정 파일에 각 노드를 명시적으로 정의하지 않아도 노드가 자동으로 서로를 발견하고 스스로 등록할 수 있어 클러스터 구성이 간소화됩니다. 특히 각 노드를 수동으로 정의해야 해 번거로운 경우에 유용합니다.
클러스터 디스커버리는 실험적 기능이므로 향후 버전에서 변경되거나 제거될 수 있습니다. 활성화하려면 설정 파일에 allow_experimental_cluster_discovery 설정을 추가하십시오:

원격 서버 구성

기존의 수동 구성

기존에는 ClickHouse에서 클러스터의 각 세그먼트와 레플리카를 구성 파일에 수동으로 지정해야 했습니다:

클러스터 디스커버리 사용

클러스터 디스커버리를 사용하면 각 노드를 명시적으로 정의하는 대신 ZooKeeper에 경로만 지정하면 됩니다. ZooKeeper에서 이 경로 아래에 등록된 모든 노드는 자동으로 감지되어 클러스터에 추가됩니다.
특정 노드의 세그먼트 번호를 지정하려면 <discovery> 섹션 안에 <shard> 태그를 포함할 수 있습니다: node1node2의 경우:
node3node4는 다음과 같습니다:

옵저버 모드

옵저버 모드로 구성된 노드는 스스로를 레플리카로 등록하지 않습니다. 이 노드들은 능동적으로 참여하지 않고 클러스터 내의 다른 활성 레플리카를 관찰하고 발견만 합니다. 옵저버 모드를 활성화하려면 <discovery> 섹션 안에 <observer/> 태그를 포함하십시오:

클러스터 디스커버리

때로는 클러스터 내 호스트뿐 아니라 클러스터 자체를 추가하거나 제거해야 할 수도 있습니다. 이때 여러 클러스터의 루트 경로를 가리키는 <multicluster_root_path> 노드를 사용할 수 있습니다:
이 경우, 다른 호스트가 경로 /clickhouse/discovery/some_new_cluster에 자신을 등록하면 some_new_cluster라는 이름의 클러스터가 추가됩니다. 두 기능을 동시에 사용할 수 있습니다. 호스트는 클러스터 my_cluster에 자신을 등록하는 동시에 다른 클러스터도 디스커버리할 수 있습니다:
제한 사항:
  • 동일한 remote_servers 하위 트리에서는 <path><multicluster_root_path>를 함께 사용할 수 없습니다.
  • <multicluster_root_path><observer/>와 함께만 사용할 수 있습니다.
  • Keeper의 경로 마지막 부분은 클러스터 이름으로 사용되며, 등록 시 이름은 XML 태그에서 가져옵니다.

사용 사례 및 제한 사항

지정된 ZooKeeper 경로에 노드가 추가되거나 제거되면, 구성 변경이나 서버 재시작 없이 클러스터에서 자동으로 감지되거나 제거됩니다. 하지만 이러한 변경 사항은 클러스터 구성에만 영향을 미치며, 데이터나 기존 데이터베이스 및 테이블에는 영향을 미치지 않습니다. 다음은 3개의 노드로 구성된 클러스터 예시입니다:
그런 다음 설정 파일의 remote_servers 섹션에 동일한 항목을 사용해 새 노드를 시작하여 클러스터에 추가합니다:
네 번째 노드는 클러스터에 참여하고 있지만, 테이블 event_table은 여전히 처음 3개의 노드에만 존재합니다:
모든 노드에 테이블을 복제해야 하는 경우, 클러스터 디스커버리 대신 Replicated 데이터베이스 엔진을 사용할 수 있습니다.
마지막 수정일 2026년 7월 3일