zookeeper / zookeeper_log 서버 설정

zookeeper / zookeeper_log 서버 설정

이 설정들은 ClickHouse가 ZooKeeper 클러스터와 상호작용하는 방법과 zookeeper_log 시스템 테이블 구성을 정의해요. ClickHouse 소스 코드에서 자동으로 생성된 참조 문서예요.

출처: 문서

본문

이 설정들은 ClickHouse 서버를 구성하며 ClickHouse 소스 코드에서 자동으로 생성돼요.

zookeeper

ClickHouse가 ZooKeeper 클러스터와 상호작용할 수 있게 하는 설정을 포함해요. ClickHouse는 복제 테이블을 사용할 때 복제본의 메타데이터를 저장하기 위해 ZooKeeper를 사용해요. 복제 테이블을 사용하지 않는다면 이 파라미터 섹션은 생략할 수 있어요.

다음 설정은 하위 태그로 구성할 수 있어요:

설정 설명
node ZooKeeper 엔드포인트. 여러 엔드포인트를 설정할 수 있어요. 예: <node index="1"><host>example_host</host><port>2181</port></node>. index 속성은 ZooKeeper 클러스터에 연결을 시도할 때 노드 순서를 지정해요.
operation_timeout_ms 한 작업의 최대 타임아웃(밀리초).
session_timeout_ms 클라이언트 세션의 최대 타임아웃(밀리초).
root (선택) ClickHouse 서버가 사용하는 znodes의 루트로 사용되는 znode.
fallback_session_lifetime.min (선택) 기본 노드를 사용할 수 없을 때 fallback 노드로의 zookeeper 세션 수명의 최소 한도(부하 분산). 초 단위로 설정. 기본값: 3시간.
fallback_session_lifetime.max (선택) 기본 노드를 사용할 수 없을 때 fallback 노드로의 zookeeper 세션 수명의 최대 한도(부하 분산). 초 단위로 설정. 기본값: 6시간.
identity (선택) ZooKeeper가 요청된 znodes에 접근하는 데 필요한 사용자와 비밀번호.
use_compression (선택) true로 설정하면 Keeper 프로토콜에서 압축을 활성화해요.
use_xid_64 (선택) 64비트 트랜잭션 ID를 활성화해요. 확장 트랜잭션 ID 포맷을 활성화하려면 true로 설정. 기본값: false.
pass_opentelemetry_tracing_context (선택) Keeper 요청에 OpenTelemetry 추적 컨텍스트 전파를 활성화해요. 활성화하면 Keeper 작업에 대해 추적 스팬이 생성되어 ClickHouse와 Keeper 전반에 걸친 분산 추적을 가능하게 해요. 자세한 내용은 Tracing ClickHouse Keeper Requests를 참고해요. 기본값: false.

또한 ZooKeeper 노드 선택 알고리즘을 고르게 하는 zookeeper_load_balancing 설정(선택)이 있어요:

알고리즘 이름 설명
random ZooKeeper 노드 중 하나를 무작위로 선택.
in_order 첫 번째 ZooKeeper 노드를 선택하고, 사용할 수 없으면 두 번째를 선택하며 이런 식으로 진행.
nearest_hostname 서버의 호스트네임과 가장 유사한 호스트네임을 가진 ZooKeeper 노드를 선택하며, 호스트네임은 이름 접두사로 비교.
hostname_levenshtein_distance nearest_hostname과 같지만 호스트네임을 levenshtein 거리 방식으로 비교.
first_or_random 첫 번째 ZooKeeper 노드를 선택하고, 사용할 수 없으면 나머지 ZooKeeper 노드 중 하나를 무작위로 선택.
round_robin 첫 번째 ZooKeeper 노드를 선택하고, 재연결이 발생하면 다음을 선택.

예시 구성

<zookeeper>
    <node>
        <host>example1</host>
        <port>2181</port>
    </node>
    <node>
        <host>example2</host>
        <port>2181</port>
    </node>
    <session_timeout_ms>30000</session_timeout_ms>
    <operation_timeout_ms>10000</operation_timeout_ms>
    <!-- Optional. Chroot suffix. Should exist. -->
    <root>/path/to/zookeeper/node</root>
    <!-- Optional. Zookeeper digest ACL string. -->
    <identity>user:password</identity>
    <!--<zookeeper_load_balancing>random / in_order / nearest_hostname / hostname_levenshtein_distance / first_or_random / round_robin</zookeeper_load_balancing>-->
    <zookeeper_load_balancing>random</zookeeper_load_balancing>
    <!-- Optional. Enable 64-bit transaction IDs. -->
    <use_xid_64>false</use_xid_64>
    <!-- Optional. Enable OpenTelemetry tracing context propagation. -->
    <pass_opentelemetry_tracing_context>false</pass_opentelemetry_tracing_context>
</zookeeper>

참고

zookeeper_log

zookeeper_log 시스템 테이블의 설정이에요.

다음 설정은 하위 태그로 구성할 수 있어요:

설정 설명 기본값 참고
database 데이터베이스 이름.
table 시스템 테이블 이름.
engine 시스템 테이블의 MergeTree 엔진 정의. partition_by 또는 order_by가 정의되어 있으면 사용할 수 없어요. 지정하지 않으면 기본으로 MergeTree가 선택돼요
partition_by 시스템 테이블의 사용자 지정 파티셔닝 키. 시스템 테이블에 engine이 지정되어 있으면 partition_by 파라미터를 'engine' 안에 직접 지정해야 해요
ttl 테이블 TTL 지정. 시스템 테이블에 engine이 지정되어 있으면 ttl 파라미터를 'engine' 안에 직접 지정해야 해요
order_by 시스템 테이블의 사용자 지정 정렬 키. engine이 정의되어 있으면 사용할 수 없어요. 시스템 테이블에 engine이 지정되어 있으면 order_by 파라미터를 'engine' 안에 직접 지정해야 해요
storage_policy 테이블에 사용할 스토리지 정책 이름(선택). 시스템 테이블에 engine이 지정되어 있으면 storage_policy 파라미터를 'engine' 안에 직접 지정해야 해요
settings MergeTree 동작을 제어하는 추가 파라미터(선택). 시스템 테이블에 engine이 지정되어 있으면 settings 파라미터를 'engine' 안에 직접 지정해야 해요
flush_interval_milliseconds 메모리 버퍼에서 테이블로 데이터를 플러시하는 주기. 7500
max_size_rows 로그의 최대 라인 수. 플러시되지 않은 로그가 max_size에 도달하면 로그가 디스크로 덤프돼요. 1048576
reserved_size_rows 로그를 위해 미리 할당하는 메모리 크기(라인 수). 8192
buffer_size_rows_flush_threshold 라인 수 임계값. 이 임계값에 도달하면 로그를 디스크로 플러시하는 작업이 백그라운드에서 시작돼요. max_size_rows / 2
flush_on_crash 크래시 발생 시 로그를 디스크로 덤프할지 여부. false

또한 모든 시스템 로그 테이블의 기본 플러시 정책을 제어하는 서버 수준 설정이 있어요:

<default_system_log_flush_policy>
    <skip_alias_columns>true</skip_alias_columns>
</default_system_log_flush_policy>
설정 설명 기본값
skip_alias_columns true이면 ALIAS 열이 시스템 로그 테이블 스키마에서 제외돼요. S3 기반 시스템 로그에 필요해요. false

예시

<clickhouse>
    <zookeeper_log>
        <database>system</database>
        <table>zookeeper_log</table>
        <flush_interval_milliseconds>7500</flush_interval_milliseconds>
        <ttl>event_date + INTERVAL 1 WEEK DELETE</ttl>
    </zookeeper_log>
</clickhouse>

더 알아보기 (Learn more)