클릭하우스는 참 자료 찾기가 힘들다. 그만큼 사용이 쉽다는 얘기인 건가 싶기도 하고.
여튼 공식 문서에서는 주키퍼 사용시 마이그레이션 과정을 아래와 같이 설명하고 있다.
https://clickhouse.com/docs/en/operations/clickhouse-keeper#migration-from-zookeeper
ClickHouse Keeper | ClickHouse Docs
ClickHouse Keeper provides the coordination system for data replication and distributed DDL queries execution. ClickHouse Keeper is compatible with ZooKeeper.
clickhouse.com
- 주키퍼 모든 노드 중지
- 권장 사항(이지만 선택 사항) 리더 노드를 시작 후 중지. 주키퍼가 일관된 스냅샷을 생성하게 함.
- 클릭하우스 키퍼 컨버터 실행
clickhouse keeper-converter --zookeeper-logs-dir /var/lib/zookeeper/version-2 --zookeeper-snapshots-dir /var/lib/zookeeper/version-2 --output-dir /path/to/clickhouse/keeper/snapshots - 클릭하우스 노드들에 스냅샷을 복사 하거나 클릭하우스 키퍼를 실행.
clickhouse keeper --config /etc/your_path_to_config/config.xml --daemon
3번을 위해서 현재 주키퍼가 어찌 설정이 되어 있나를 봐야 하는데, zoo.cfg에 dataDir 값을 보면 된다. 내 경우에는 클릭하우스 키퍼 컨버터에 사용할 --zookeeper-logs-dir과 --zookeeper-snapshots-dir 값에 dataDir 값에 version-2만 붙여줬다. (dataDir에 기재된 곳으로 가서 확인해보니 version-2가 있어서 동일하게 적었다.)
4번을 위해 클릭하우스 키퍼 설정이 필요한데, 해당 config.xml파일 내용은
<keeper_server>
<tcp_port>2181</tcp_port>
<server_id>1</server_id>
<log_storage_path>/var/lib/clickhouse/coordination/log</log_storage_path>
<snapshot_storage_path>/var/lib/clickhouse/coordination/snapshots</snapshot_storage_path>
<coordination_settings>
<operation_timeout_ms>10000</operation_timeout_ms>
<session_timeout_ms>30000</session_timeout_ms>
<raft_logs_level>trace</raft_logs_level>
</coordination_settings>
<raft_configuration>
<server>
<id>1</id>
<hostname>zoo1</hostname>
<port>9444</port>
</server>
<server>
<id>2</id>
<hostname>zoo2</hostname>
<port>9444</port>
</server>
<server>
<id>3</id>
<hostname>zoo3</hostname>
<port>9444</port>
</server>
</raft_configuration>
</keeper_server>
Configuring ClickHouse Keeper (clickhouse-keeper) | ClickHouse Docs
ClickHouse Keeper, or clickhouse-keeper, replaces ZooKeeper and provides replication and coordination.
clickhouse.com
다 준비하고 요이땅 하려고 했는데, 리플리카를 쓰던 클러스터에 문제가 있어서 데이터를 다른 클러스터로 옮겼고, 결론적으로 주키퍼가 실행은 되어 있지만, 하는 일이 없는 상태가 돼서 마이그레이션은 필요가 없어졌다.
-_______________________________-........
여튼 마이그레이션을 제외하고 주키퍼 > 클릭하우스 키퍼 전환
클릭하우스 config.xml 파일에 클릭하우스 키퍼 설정을 추가한다. 내 경우에는 서버가 세대라서 server_id만 설정에 맞게 변경해주었다.
<keeper_server>
<tcp_port>2181</tcp_port>
<server_id>1</server_id>
<log_storage_path>/home/clickhouse_keeper/log</log_storage_path>
<snapshot_storage_path>/home/clickhouse_keeper/snapshots</snapshot_storage_path>
<coordination_settings>
<operation_timeout_ms>10000</operation_timeout_ms>
<session_timeout_ms>30000</session_timeout_ms>
<raft_logs_level>trace</raft_logs_level>
</coordination_settings>
<raft_configuration>
<server>
<id>1</id>
<hostname>clickhouse-1</hostname>
<port>9444</port>
</server>
<server>
<id>2</id>
<hostname>clickhouse-2</hostname>
<port>9444</port>
</server>
<server>
<id>3</id>
<hostname>clickhouse-3</hostname>
<port>9444</port>
</server>
</raft_configuration>
</keeper_server>
위 설정에 /home/clickhouse_keeper/log와 /home/clickhouse_keeper/snapshots를 생성 후 권한을 clickhouse로 해준다.
mkdir /home/clickhouse_keeper
mkdir /home/clickhouse_keeper/log
mkdir /home/clickhouse_keeper/snapshots
chown clickhouse.clickhouse /home/clickhouse_keeper/log
chown clickhouse.clickhouse /home/clickhouse_keeper/snapshots
클릭하우스를 실행하고 포트를 확인해주면 기존 주키퍼가 쓰던 2181을 클릭하우스가 쓰고 있고, 9444 포트도 클릭하우스가 쓰고 있다.
systemctl start clickhouse-server
# netstat -nlp | grep clickhouse-s
tcp 0 0 0.0.0.0:8123 0.0.0.0:* LISTEN 31197/clickhouse-se
tcp 0 0 0.0.0.0:2181 0.0.0.0:* LISTEN 31197/clickhouse-se
tcp 0 0 0.0.0.0:9000 0.0.0.0:* LISTEN 31197/clickhouse-se
tcp 0 0 0.0.0.0:9009 0.0.0.0:* LISTEN 31197/clickhouse-se
tcp6 0 0 ::1:8123 :::* LISTEN 31197/clickhouse-se
tcp6 0 0 :::9444 :::* LISTEN 31197/clickhouse-se
tcp6 0 0 ::1:2181 :::* LISTEN 31197/clickhouse-se
tcp6 0 0 ::1:9000 :::* LISTEN 31197/clickhouse-se
tcp6 0 0 ::1:9009 :::* LISTEN 31197/clickhouse-se
문서에 clickhouse-keeper, clickhouse-keeper-converter라고 되어 있어서 따로 실행하는 게 있나 했는데, clickhouse에 포함이 되어 있어서 설정에만 넣어주면 알아서 같이 기동이 된다. clickhouse를 실행해보면
# clickhouse
Use one of the following commands:
clickhouse local [args]
clickhouse client [args]
clickhouse benchmark [args]
clickhouse server [args]
clickhouse extract-from-config [args]
clickhouse compressor [args]
clickhouse format [args]
clickhouse copier [args]
clickhouse obfuscator [args]
clickhouse git-import [args]
clickhouse keeper [args]
clickhouse keeper-converter [args]
clickhouse install [args]
clickhouse start [args]
clickhouse stop [args]
clickhouse status [args]
clickhouse restart [args]
clickhouse static-files-disk-uploader [args]
clickhouse hash-binary [args]
clickhouse keeper 이런 식으로 실행하라고 되어 있기는 하지만, config.xml에 넣어주면 알아서 된다.