访问模式
ClickHouse集群创建完成后,用户可以通过BLB(负载均衡)、JDBC或HTTP直连三种方式访问集群。通过BLB访问适用于业务程序不希望直接维护多个ClickHouse节点IP的场景;通过JDBC访问适用于Java应用直接集成ClickHouse数据源的场景;通过HTTP直连访问适用于脚本调用、临时查询和跨语言集成场景。
通过BLB访问ClickHouse集群
BLB(负载均衡)可以将客户端请求分发到ClickHouse集群的多个Core节点,对外提供统一的访问地址,避免业务程序直接依赖单个节点IP。
前提条件
- 已创建BMR ClickHouse集群,且集群处于运行中状态。
- 已开通百度智能云负载均衡BLB服务。
- 客户端网络能够访问BLB实例。
获取Core节点内网IP
BLB后端需要绑定的是ClickHouse集群Core节点的内网IP,操作步骤如下:
- 登录MapReduce控制台,进入集群列表页面。
- 单击ClickHouse集群名称,进入集群详情页。
- 单击左侧节点管理,在实例信息部分展开
CORE实例组。 - 在展开后的节点列表中,查看并记录各Core节点的内网IP。内网IP位于Core节点列表的“内网IP”列。

说明:建议绑定ClickHouse集群Core节点的内网IP,不要绑定Master节点IP。若集群有多个Core节点,建议将全部Core节点内网IP都添加为BLB后端,以获得负载均衡效果。
创建并配置BLB实例
- 参考创建应用型BLB实例,创建一个应用型BLB实例。
注意:ClickHouse集群仅支持通过应用型BLB接入,创建时请选择"应用型"实例类型。BLB实例建议与ClickHouse集群选择相同地域及私有网络(VPC),避免跨网络访问导致的连通性问题。
- 参考BLB快速入门,在BLB实例中添加监听器与后端服务器,将上一步获取到的Core节点内网IP添加为后端地址。
- 表一 BLB关键配置项说明
| 配置项 | 配置项说明 |
|---|---|
| 实例类型 | 应用型BLB,仅应用型BLB支持按IP添加后端服务器 |
| 后端服务器IP | ClickHouse集群Core节点的内网IP,可添加多个 |
| 后端服务器端口 | ClickHouse服务端口,以集群实际配置为准 |
| 监听端口 | 客户端访问BLB使用的端口 |
| 健康检查 | 建议开启,检查端口与后端服务器端口保持一致,用于探测Core节点是否可正常提供服务 |
- 配置完成后,在BLB实例详情页获取BLB提供的服务地址。
通过BLB地址访问ClickHouse
获取BLB服务地址后,使用clickhouse-client验证访问:
1clickhouse-client -h <BLB服务地址> --port <监听端口> -u admin --password <集群密码>
参数说明:
| 参数 | 说明 |
|---|---|
<BLB服务地址> |
BLB实例详情页中的服务地址 |
<监听端口> |
BLB中配置的监听端口 |
<集群密码> |
创建ClickHouse集群时设置的密码,默认账户为admin |
注意事项
- BLB后端地址填写的是ClickHouse集群Core节点内网IP,若集群发生扩容或缩容,需要同步在BLB中添加或移除对应的后端地址,否则会出现请求转发到已下线节点的情况。
-
若通过BLB访问失败,建议按以下顺序排查:
- 确认BLB后端是否已添加全部需要访问的Core节点内网IP,且IP填写正确。
- 确认BLB监听端口与后端服务器端口(ClickHouse服务端口)配置一致。
- 确认BLB实例详情页中健康检查状态是否正常,若节点异常会被自动隔离。
- 确认客户端网络、安全组或防火墙是否放通了到BLB监听端口的访问。
- 确认BLB实例与ClickHouse集群处于同一私有网络(VPC),跨网络场景需额外配置网络互通。
通过JDBC访问ClickHouse集群
用户可以通过JDBC方式访问ClickHouse集群,Java应用可以直接连接Core节点内网IP,也可以连接BLB服务地址,两种方式的连接串格式相同,仅主机和端口不同。
前提条件
- 已创建BMR ClickHouse集群。
- 客户端已引入ClickHouse JDBC Driver依赖。
- 已获取ClickHouse集群访问账号和密码。
引入JDBC Driver依赖
Java应用需要引入ClickHouse官方JDBC Driver依赖,Maven坐标如下:
1<dependency>
2 <groupId>com.clickhouse</groupId>
3 <artifactId>clickhouse-jdbc</artifactId>
4 <version>0.9.8</version>
5 <classifier>all</classifier>
6</dependency>
Driver Class名称为com.clickhouse.jdbc.ClickHouseDriver。
说明:以上版本号仅为示例,请以ClickHouse JDBC官方文档中的最新版本为准。
获取访问地址
- 登录MapReduce控制台,进入集群列表页面。
- 单击ClickHouse集群名称,进入集群详情页。
-
单击左侧节点管理,在实例信息部分展开实例组:
- 直连Core节点:展开
CORE实例组,获取任一Core节点的内网IP(内网访问)或公网IP(如已分配,公网访问)。 - 通过BLB访问:参考本文"通过BLB访问ClickHouse集群"完成配置,获取BLB服务地址。
- 直连Core节点:展开
JDBC连接示例
JDBC官方连接串格式为:
1jdbc:(ch|clickhouse)[:<protocol>]://endpoint[:port][/<database>][?param1=value1¶m2=value2]
直接连接Core节点:
1jdbc:clickhouse:http://<Core节点IP>:<ClickHouse端口>/<数据库名>
通过BLB连接:
1jdbc:clickhouse:http://<BLB服务地址>:<监听端口>/<数据库名>
参数说明:
| 参数 | 说明 |
|---|---|
<Core节点IP> |
ClickHouse集群Core节点的内网IP或公网IP |
<BLB服务地址> |
BLB实例提供的服务地址 |
<ClickHouse端口> |
ClickHouse服务端口,以集群实际配置为准 |
<监听端口> |
BLB中配置的监听端口 |
<数据库名> |
需要访问的ClickHouse数据库名称 |
连接时需要提供访问账户及密码,默认账户为admin,密码为创建集群时设置的集群密码,可通过Properties传入:
1import java.sql.Connection;
2import java.sql.DriverManager;
3import java.util.Properties;
4
5public class ClickHouseJdbcExample {
6 public static void main(String[] args) throws Exception {
7 String url = "jdbc:clickhouse:http://<访问地址>:<端口>/<数据库名>";
8
9 Properties properties = new Properties();
10 properties.setProperty("user", "admin");
11 properties.setProperty("password", "<集群密码>");
12
13 try (Connection conn = DriverManager.getConnection(url, properties)) {
14 // 使用connection执行查询
15 }
16 }
17}
注意事项
- 生产环境建议通过BLB地址访问ClickHouse集群,避免业务程序直接依赖单个Core节点IP;单节点直连方式适用于调试或临时验证场景。
- 若使用Core节点IP直连,节点发生变更(扩容、缩容、替换)后需要同步修改客户端连接配置。
- 若使用公网IP访问,需确认所访问节点已分配公网IP,并放通安全组中ClickHouse服务端口的公网访问权限;未分配公网IP的节点无法通过公网直连。
更多JDBC参数(如SSL、超时时间等)和用法,请参考ClickHouse JDBC官方文档。
通过HTTP直连访问ClickHouse集群
ClickHouse提供HTTP接口,用户可以通过curl、脚本或支持HTTP请求的应用程序访问ClickHouse集群。HTTP方式适用于临时查询、接口调试、脚本调用和跨语言集成场景。
说明:HTTP直连通常连接单个Core节点IP或BLB服务地址。生产环境建议优先通过BLB服务地址访问,避免业务程序直接依赖单个Core节点。
前提条件
- 已创建BMR ClickHouse集群。
- 客户端网络能够访问ClickHouse服务地址。
- 已获取ClickHouse集群访问账号和密码。
- 已确认ClickHouse HTTP服务端口。ClickHouse默认HTTP端口为
8123,实际端口请以集群配置为准。
获取访问地址
- 登录MapReduce控制台,进入集群列表页面。
- 单击ClickHouse集群名称,进入集群详情页。
- 单击左侧节点管理,在实例信息部分展开
CORE实例组,获取Core节点IP。 -
根据访问方式选择连接地址:
- 直连Core节点:使用Core节点内网IP或公网IP。
- 通过BLB访问:使用 BLB 的访问地址连接 ClickHouse。配置 BLB 时,请将部署 ClickHouse 服务的节点添加为后端服务器,并配置对应的服务端口。
验证HTTP服务连通性
使用/ping接口验证HTTP服务是否可达:
1curl 'http://<访问地址>:<HTTP端口>/ping'
正常情况下返回:
1Ok.
执行SQL查询
通过GET方式执行简单只读查询:
1curl 'http://<访问地址>:<HTTP端口>/?query=SELECT%201'
通过POST方式执行SQL查询:
1echo 'SELECT 1' | curl 'http://<访问地址>:<HTTP端口>/' --data-binary @-
带账号密码访问示例:
1echo 'SELECT 1' | curl 'http://<访问地址>:<HTTP端口>/' \
2 -u admin:<集群密码> \
3 --data-binary @-
参数说明:
| 参数 | 说明 |
|---|---|
<访问地址> |
Core节点IP或BLB服务地址 |
<HTTP端口> |
ClickHouse HTTP服务端口,默认端口为8123,实际端口请以集群配置为准 |
<集群密码> |
创建ClickHouse集群时设置的密码,默认账户为admin |
注意事项
- GET方式适合简单只读查询;较长SQL或包含复杂语句的查询建议使用POST方式提交。
- 若通过BLB访问HTTP接口,BLB监听端口需要转发到ClickHouse HTTP服务端口。
- 若通过Core节点IP直连,节点发生变更后需要同步修改客户端配置。
- 若访问失败,请检查HTTP端口是否正确、安全组或防火墙是否放通、客户端网络是否能够访问目标地址。
更多HTTP接口使用方式,请参考ClickHouse HTTP接口官方文档。
评价此篇文章
