代码改变世界

ClickHouse 网络端口

2024-03-20 11:36  abce  阅读(1148)  评论(0编辑  收藏  举报

查看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