ClickHouse 網路埠

abce發表於2024-03-20

檢視clickhouse預設都啟用了哪些埠

# netstat -tulpn |grep LISTEN|grep click
tcp        0      0 0.0.0.0:9004            0.0.0.0:*               LISTEN      578/clickhouse-serv 
tcp        0      0 0.0.0.0:9005            0.0.0.0:*               LISTEN      578/clickhouse-serv 
tcp        0      0 0.0.0.0:9009            0.0.0.0:*               LISTEN      578/clickhouse-serv 
tcp        0      0 0.0.0.0:8123            0.0.0.0:*               LISTEN      578/clickhouse-serv 
tcp        0      0 0.0.0.0:9000            0.0.0.0:*               LISTEN      578/clickhouse-serv 

從輸出結果可以看到,有五個埠。接下來看看這些埠的分別是用來幹什麼的。這可以透過從clickhouse的配置檔案中檢視:

# cat /etc/clickhouse-server/config.xml | grep 9004 | head -1
    <mysql_port>9004</mysql_port>
mysql模擬埠,用於mysql客戶端訪問clickouse
    
# cat /etc/clickhouse-server/config.xml | grep 9005 | head -1
    <postgresql_port>9005</postgresql_port>
postgresql模擬埠,用於psql客戶端訪問clickouse
    
# cat /etc/clickhouse-server/config.xml | grep 9009 | head -1
    <interserver_http_port>9009</interserver_http_port>
低階別資料訪問,用於資料交換、複製和伺服器間通用的通訊    
    
# cat /etc/clickhouse-server/config.xml | grep 8123 | head -1
    <http_port>8123</http_port>
http協議埠,用於web互動、jdbc、odbc

# cat /etc/clickhouse-server/config.xml | grep 9000 | head -1
    <tcp_port>9000</tcp_port>
9000是本地協議埠,即clickhouse的tcp協議埠。由 ClickHouse 應用程式和程序(如 Clickhouse-伺服器、Clickhouse-客戶端和本地 ClickHouse 工具)使用。用於分散式查詢的伺服器間通訊。

clickhouse還支援很多其它介面,因此除了上面這些埠之外,還會用到其它很多埠。以下所有埠列表:

描述

2181

zookeeper預設服務埠

8123

http api介面,用於jdbc、odbc和web介面的http請求

8443

https預設埠

9000

本地協議埠,即clickhouse的tcp協議埠。由 ClickHouse 應用程式和程序(如 Clickhouse-伺服器、Clickhouse-客戶端和本地 ClickHouse 工具)使用。用於分散式查詢的伺服器間通訊。

9004

mysql模擬埠,用於mysql客戶端訪問clickouse

9005

postgresql模擬埠,用於psql客戶端訪問clickouse

9009

低階別資料訪問,用於資料交換、複製和伺服器間通用的通訊

9010

伺服器間通用的通訊的ssl/tls 埠

9011

PROXYv1協議埠

9019

jdbc橋

9100

gRPC埠

9181

建議的ClickHouse Keeper埠

9234

建議的ClickHouse Keeper Raft埠

9363

Prometheus埠

9281

推薦的SSL ClickHouse Keeper

9440

原生SSL/TLS協議埠

42000

Graphite default port

客戶化 clickhouse 網路配置

可以在/etc/clickhouse-server/config.d/目錄下建立新增一個檔案,用於客戶化網路配置,當然也可以在 /etc/clickhouse-server/config.xml 中直接配置。例如:

# cat /etc/clickhouse-server/config.d/listen.xml
<clickhouse>
     <!-- Listen wildcard address to allow accepting connections from other containers and host network. -->
    <listen_host>::</listen_host>
    <listen_host>0.0.0.0</listen_host>
    ...
</clickhouse>

這裡,<listen_host>的設定非常重要,除了開放埠,還可以鎖定指定的ip地址。 示例中有兩天配置,一個用於ipv6,一個用於ipv4

移除開放的埠

比如是在容器中執行,想關閉mysql和pg的模擬埠。

mkdir config.d
cat << EOF > ./config.d/disable_mysql_and_postresql_ports.xml
<clickhouse>
   <!-- Disable MySQL and PostreSQL emulation ports -->
   <mysql_port remove="true"/>
   <postgresql_port remove="true"/>
</clickhouse>
EOF

這裡用到的remove屬性。可以把該檔案放在config.d中,也可以將該檔案放在/etc/clickhouse-server/conf.d中。

修改埠號

跟移除埠類似,可以使用replace屬性、或者增加一個更新條目來過載對應的配置條目。比如,想把http協議埠8123改成8823。

cat << EOF > ./config.d/http_port.xml
<clickhouse>
   <!-- Change HTTP client port -->
   <http_port>8823</http_port>
</clickhouse>
EOF

增加埠

cat << EOF > ./config.d/prometheus.xml
<clickhouse>
    <prometheus>
        <endpoint>/metrics</endpoint>
        <port>9363</port>
        <metrics>true</metrics>
        <events>true</events>
        <asynchronous_metrics>true</asynchronous_metrics>
        <status_info>true</status_info>
    </prometheus>
</clickhouse>
EOF

相關文章