-
[ClickHouse config.xml] listen_try 알아보기Database/Clickhouse 2024. 1. 2. 02:16반응형
- 목차
들어가며.
이번 글에서는 ClickHouse 의 설정 중 <listen_try> 에 대해서 알아봅니다.
<listen_try> 설정은 <listen_host> 와 관련이 있습니다.
아래의 링크는 ClickHouse 의 <listen_host> 에 대한 내용을 포함하고 있습니다.
https://westlife0615.tistory.com/732
[ClickHouse Config] listen_host 설정 알아보기
- 목차 들어가며.이번 글에서는 ClickHouse 의 config.xml 의 설정에 대해서 알아봅니다.listen_host 설정은 ClickHouse 서버가 어떤 Network Interface 를 사용할지 결정하는 설정입니다.일반적으로 아래와 같이
westlife0615.tistory.com
<listen_try> 설정은 ClickHouse 서버가 <listen_host> 에 지정된 Network Interface 와의 연결을 실패하여도 서버가 종료되지 않습니다.
ClickHouse 는 8123 와 9000 Port 를 리스닝하여 클라이언트와의 연결을 유지해야합니다.
이때에 <listen_host> 에 지정된 Network Interface 를 통해서 TCP Connection 이 형성됩니다.
만약 어떠한 이유로 네트워크 스택 상의 문제로 인해서 통신이 수행되지 않아도 <listen_try> 설정 여부에 따라서 ClickHouse 의 종료 여부가 결정됩니다.
<listen_try> 가 설정되지 않거나 1 로 설정되면 ClickHouse 는 네트워크 문제로 인해서 종료되지 않습니다.
만약 <listen_try> 가 0 으로 설정된다면 ClickHouse 의 정상 실행 여부는 네트워크 상태에 의존적이게 됩니다.
<listen_try> 가 비활성화되는 경우.
<listen_try> 설정이 비활성화되는 경우는 ClickHouse 가 네트워크 관련 이슈가 발생한다면 ClickHouse Server 는 종료되게 됩니다.
아래는 존재하지 않는 1.2.3.4 Network Interface 에 연결을 시도하고, <listen_try> 의 값은 0 입니다.
cat <<'EOF'> /tmp/listen.xml <clickhouse> <listen_host>1.2.3.4</listen_host> <listen_try>0</listen_try> </clickhouse> EOF docker run -it --platform linux/amd64 \ --name clickhouse \ --hostname clickhouse \ --mount type=bind,source=/tmp/listen.xml,target=/etc/clickhouse-server/config.d/listen.xml \ altinity/clickhouse-server:23.8.16.42.altinitystable
이 경우에 존재하지 않는 Network Interface 를 활용한 Network Stack 을 생성하게 되고, 이 과정에서 여러 에러가 발생합니다.
그리고 <listen_try> 이 비활성화된 경우에는 ClickHouse Server 는 종료됩니다.
<Error> Application: DB::Exception: Listen [1.2.3.4]:9009 failed: Poco::Exception. Code: 1000, e.code() = 99, Net Exception: Cannot assign requested address: 1.2.3.4:9009 (version 23.8.16.42.altinitystable (altinity build)) <Information> Application: shutting down <Debug> Application: Uninitializing subsystem: Logging Subsystem <Trace> BaseDaemon: Received signal -2 <Information> BaseDaemon: Stop SignalListener thread
하지만 listen_try 이 1 로 설정되는 경우에는 Localhost Loopback Network Interface 에 한하여 동작이 가능합니다.
cat <<'EOF'> /tmp/listen.xml <clickhouse> <listen_host>1.2.3.4</listen_host> <listen_try>1</listen_try> </clickhouse> EOF docker run -it --platform linux/amd64 \ --name clickhouse \ --hostname clickhouse \ --mount type=bind,source=/tmp/listen.xml,target=/etc/clickhouse-server/config.d/listen.xml \ altinity/clickhouse-server:23.8.16.42.altinitystable
마치며.
특정 Network Interface 를 활용해야하는 경우가 아니면, 즉 일반적인 경우에
아래와 같이 Network Interface 의 제약을 적용하지 않고, <listen_try> 설정은 반드시 활성화하는 것이 가장 괜찮다고 판단합니다.
<clickhouse> <listen_host>0.0.0.0</listen_host> <listen_try>1</listen_try> </clickhouse>
반응형'Database > Clickhouse' 카테고리의 다른 글
[ClickHouse] Compact Wide Parts 알아보기 ( part_type ) (0) 2024.01.16 [ClickHouse] Block 알아보기 (0) 2024.01.10 ClickHouse MergeTree 알아보기 (0) 2023.11.07 [ClickHouse] 사용자 추가 및 설정하기 ( user.xml ) (0) 2023.09.27 [ ClickHouse ] arrayMap Function 알아보기 (0) 2023.09.06