- LangSmith 托管的 ClickHouse
- 直接或通过云提供商市场配置 ClickHouse Cloud:
- 在您的云提供商的虚拟机上
使用前两个选项(LangSmith 托管的 ClickHouse 或 ClickHouse Cloud)将在您的 VPC 外部配置 ClickHouse 服务。但是,这两个选项都支持私有端点,这意味着您可以将流量定向到 ClickHouse 服务,而无需将其暴露在公共互联网上(例如通过 AWS PrivateLink 或 GCP Private Service Connect)。此外,可以配置敏感信息不存储在 ClickHouse 中。有关更多信息,请通过 support.langchain.com 联系支持团队。
要求
- 一个已配置的 ClickHouse 实例,您的 LangSmith 应用程序将能够访问该实例(有关选项,请参见上文)。
- 一个对 ClickHouse 数据库具有管理员访问权限的用户。此用户将用于创建必要的表、索引和视图。
- 我们支持独立 ClickHouse 和外部管理的集群部署。对于集群部署,请确保所有节点运行相同的版本。请注意,捆绑的 ClickHouse 安装不支持集群设置。
- 我们仅支持 ClickHouse 版本 >= 23.9。使用 ClickHouse 版本 >= 24.2 需要 LangSmith v0.6 或更高版本。
- 我们依赖于在您的 ClickHouse 实例上设置的几个配置参数。这些参数详述如下:
高可用复制 ClickHouse 集群
如果您希望使用多节点 ClickHouse 集群实现高可用性,我们支持此功能,但需要额外的配置。此设置可以使用具有多个节点的 ClickHouse 集群,其中数据通过 Zookeeper 或 ClickHouse Keeper 进行复制。有关 ClickHouse 复制的更多信息,请参阅 ClickHouse 数据复制文档。 为了设置具有复制功能的多节点 ClickHouse 的 LangSmith:- 您需要有一个已设置 Keeper 或 Zookeeper 用于数据复制并具有适当设置的 ClickHouse 集群。请参阅 ClickHouse 复制设置文档。
- 您需要在 LangSmith 配置 部分设置集群设置,特别是
cluster设置以匹配您的 ClickHouse 集群名称。这将在运行 ClickHouse 迁移时使用Replicated表引擎。 - 如果除了高可用性之外,您还想在 ClickHouse 节点之间进行负载均衡(以分发读取或写入),我们建议使用负载均衡器或 DNS 负载均衡在您的 ClickHouse 服务器之间进行轮询。
- 注意:您需要在首次启动 LangSmith 并运行 ClickHouse 迁移之前启用
cluster设置。这是一个要求,因为表引擎需要创建为Replicated表引擎,而不是非复制引擎类型。
cluster 运行迁移时,迁移将创建 Replicated 表引擎类型。这意味着数据将在集群中的服务器之间复制。这是一个主主设置,任何服务器都可以处理读取、写入或合并。
有关复制 ClickHouse 集群的示例设置,请参阅 LangSmith Helm 图表仓库中 examples 下的 复制 ClickHouse 部分。
LangSmith 托管的 ClickHouse
- 如果使用 LangSmith 托管的 ClickHouse,您需要在 LangSmith VPC 和 ClickHouse VPC 之间设置 VPC 对等连接。有关更多信息,请通过 support.langchain.com 联系支持团队。
- 您还需要设置 Blob 存储。您可以在 Blob 存储文档 中阅读更多关于 Blob 存储的信息。
由 LangSmith 管理的 ClickHouse 安装使用 SharedMerge 引擎,该引擎会自动对其进行集群化并分离计算和存储。
参数
您需要向 LangSmith 安装提供几个参数来配置外部 ClickHouse 数据库。这些参数包括:- Host:ClickHouse 数据库的主机名或 IP 地址
- HTTP Port:ClickHouse 数据库监听 HTTP 连接的端口
- Native Port:ClickHouse 数据库监听 原生连接 的端口
- Database:LangSmith 应该使用的 ClickHouse 数据库名称
- Username:用于连接 ClickHouse 数据库的用户名
- Password:用于连接 ClickHouse 数据库的密码
- Cluster (Optional):如果使用外部 ClickHouse 集群,则为 ClickHouse 集群的名称。设置后,LangSmith 将在集群上运行迁移并在实例之间复制数据。
配置
有了这些参数,您可以将 LangSmith 实例配置为使用已配置的 ClickHouse 数据库。您可以通过修改 LangSmith Helm Chart 安装的config.yaml 文件或 Docker 安装的 .env 文件来完成此操作。
ClickHouse 的 TLS
使用此部分配置 ClickHouse 连接的 TLS。有关挂载内部/公共 CA 以使 LangSmith 信任您的 ClickHouse 服务器证书的信息,请参阅 配置自定义 TLS 证书。服务器 TLS(单向)
要为 ClickHouse 连接启用 TLS:- 在配置中设置
tls: true(或使用tlsSecretKey和外部密钥)。 - 使用适当的 TLS 端口(通常 HTTP 为
8443,原生 TCP 连接为9440)。 - 如果使用内部 CA,请使用
config.customCa.secretName和config.customCa.secretKey提供 CA 包。
带客户端认证的双向 TLS (mTLS)
从 LangSmith helm chart 版本 0.12.29 开始,我们支持 ClickHouse 客户端的 mTLS。有关 mTLS 中服务器端认证的信息,请使用 服务器 TLS 步骤(自定义 CA),并附加以下客户端证书配置。 如果您的 ClickHouse 服务器需要客户端证书认证:- 提供一个包含客户端证书和密钥的 Secret。
- 通过
clickhouse.external.clientCert.secretName引用它,并使用certSecretKey和keySecretKey指定键。
用于迁移的非 TLS 原生端口
默认情况下,迁移作业连接到端口9000 进行迁移。如果您的 ClickHouse 实例使用不同的非 TLS 原生端口,您可以使用 CLICKHOUSE_MIGRATE_NATIVE_PORT 环境变量进行配置:
用于证书卷的 Pod 安全上下文
为 mTLS 挂载的证书卷受文件访问限制保护。为确保所有 LangSmith Pod 都能读取证书文件,您必须在 Pod 安全上下文中设置fsGroup: 1000。
您可以通过以下两种方式之一进行配置:
选项 1:使用 commonPodSecurityContext
在顶层设置 fsGroup 以将其应用于所有 Pod:
fsGroup 单独添加到每个 Pod 的安全上下文中。有关完整参考,请参阅 mTLS 配置示例。
将这些文档 通过 MCP 连接到 Claude、VSCode 等,以获取实时答案。

