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>