檢視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