跳转到主要内容

ClickHouse 控制平面与您的 BYOC VPC 之间的连接

ClickHouse Cloud 控制平面会维护多种类型的连接,以运行和支持您的 BYOC 部署:
目的连接类型说明
日常运维 — Kubernetes API 服务器通过 IP 过滤的公网 (默认) 或 Tailscale管理服务通过公网与 EKS API 服务器通信,并受 IP 允许列表限制。初始部署完成后,您也可以选择切换到 Tailscale 以实现私有访问。
日常运维 — AWS APIClickHouse VPC → AWS管理服务从 ClickHouse Cloud 自有的 VPC 调用 AWS API (例如 EKS、EC2) 。这不涉及您的 VPC 或 Tailscale。
故障排查 — ClickHouse 服务TailscaleClickHouse 工程师通过 Tailscale 访问 ClickHouse 服务 (例如系统表) 进行诊断。
故障排查 — Kubernetes API 服务器TailscaleClickHouse 工程师通过 Tailscale 访问 EKS API 服务器以进行集群诊断。
下一节将介绍 Tailscale 私有网络如何用于故障排查以及可选的管理访问。

Tailscale 私有网络

Tailscale 在 ClickHouse Cloud 的管理服务与你的 BYOC 部署之间提供零信任的私有网络连接。借助这一安全通道,ClickHouse 工程师无需公共互联网访问或复杂的 VPN 配置,即可执行故障排查和管理操作。

概述

Tailscale 会在 ClickHouse 控制平面 (位于 ClickHouse 的 VPC 中) 与您的 BYOC 数据平面 (位于您的 VPC 中) 之间建立一条加密的私有网络隧道。此连接仅用于:
  • 管理操作:ClickHouse 管理服务与您的 BYOC 基础设施进行协同
  • 故障排查访问:ClickHouse 工程师访问 Kubernetes API 服务器和 ClickHouse 系统表以进行诊断
  • 指标访问:ClickHouse 的集中式监控仪表盘会访问部署在您的 BYOC VPC 内的 Prometheus 栈中的指标,使 ClickHouse 工程师能够了解该环境的可观测性状态。
Tailscale 仅用于管理和故障排查操作。它绝不会用于查询流量或访问客户数据。所有客户数据都保留在您的 VPC 内,绝不会通过 Tailscale 连接传输。

BYOC 中 Tailscale 的工作原理

对于每个需要通过 Tailscale 访问的服务或端点,ClickHouse BYOC 会部署:
  1. Tailnet 地址注册:每个端点都会注册一个唯一的 tailnet 地址 (例如,Kubernetes API 服务器的 k8s.xxxx.us-east-1.aws.byoc.clickhouse-prd.com)
  2. Tailscale agent 容器:一个 Tailscale agent 容器会在你的 EKS 集群中运行,负责:
    • 连接到 Tailscale 协调服务器
    • 注册服务,使其可被发现
    • 与 Nginx pod (容器组) 协调网络设置
  3. Nginx pod (容器组) :一个 Nginx pod (容器组) ,用于:
    • 终止来自 Tailscale 的 TLS 流量
    • 将流量路由到 EKS 集群内相应的 IP 地址

网络连接过程

Tailscale 建立连接的过程如下:
  1. 初始连接
    • 两端的 agent (ClickHouse 工程师的环境和你的 BYOC EKS 集群) 都会连接到 Tailscale 协调服务器
    • EKS 集群中的 agent 会注册 Kubernetes 服务,使其可被发现
    • ClickHouse 工程师必须先在内部申请相应权限,才能看到该服务
  2. 连接模式
    • 直连模式:agent 会尝试通过 NAT 穿透隧道建立直接连接
    • 中继模式:如果直连模式失败,通信会回退到通过 Tailscale DERP (分布式加密中继协议) 服务器中继
  3. 加密
    • 所有通信都会进行端到端加密
    • 每个 agent 都会生成自己的公钥/私钥密钥对 (类似于 PKI)
    • 无论使用直连模式还是中继模式,流量都会保持加密

安全功能

仅出站连接
  • EKS 集群中的 Tailscale agent 会向 Tailscale 协调/中继服务器发起出站连接
  • 无需入站连接——无需在安全组规则中允许流量入站到 Tailscale agent
  • 这可减少攻击面,并简化网络安全配置
访问控制
  • 在 Tailscale 将工程师路由到客户端点之前,工程师必须先通过内部审批流程申请访问权限
  • 访问具有时效性,并会自动过期
  • 所有访问都会经过审计并记录日志
有关完整的数据访问策略——包括工程师可以查看的内容、基于证书的身份验证以及客户侧审计——请参阅 ClickHouse data access

管理服务访问

默认情况下,ClickHouse 管理服务通过 EKS API 服务器的公网 IP 地址访问您的 BYOC Kubernetes 集群,并且该地址仅允许来自 ClickHouse NAT gateway IP 地址的访问。 可选的专用终结点配置
  • 您可以将 EKS API 服务器配置为仅使用专用终结点
  • 在这种情况下,管理服务将通过 Tailscale 访问 API 服务器 (类似于人工进行的故障排查访问)
  • 同时会保留公网访问,作为紧急调查和支持需求的备用机制

网络流量流向

Tailscale 连接流程
  1. EKS 集群中的 Tailscale agent → Tailscale 协调服务器 (出站)
  2. 工程师机器上的 Tailscale agent → Tailscale 协调服务器 (出站)
  3. 在 agent 之间建立直连或中继连接
  4. 加密流量通过已建立的隧道传输
  5. EKS 中的 Nginx pod (容器组) 终止 TLS 并将流量路由到内部服务
不传输客户数据
  • Tailscale 连接仅用于管理和故障排查
  • 查询流量和客户数据绝不会经过 Tailscale
  • 所有客户数据始终保留在您的 VPC 内
有关 Tailscale 在 BYOC 中如何实现的更多技术细节,请参阅 Building ClickHouse BYOC on AWS blog post。如需了解 ClickHouse 工程师在连接后可以读取哪些内容,以及 ClickHouse 如何审计此类访问,请参阅 ClickHouse data access

网络边界

本节介绍客户 BYOC VPC 的不同网络流量边界:
  • 入站:进入客户 BYOC VPC 的流量。
  • 出站:源自客户 BYOC VPC 并发送到外部目标端的流量。
  • 公网:可通过公共互联网访问的网络端点。
  • 私网:只能通过私有连接访问的网络端点,例如 VPC peering、VPC Private Link 或 Tailscale。
Istio 入口部署在 AWS NLB 后方,用于接收 ClickHouse 客户端流量。 入站,公网或私网 Istio 入口网关负责终止 TLS。由 CertManager 使用 Let’s Encrypt 签发的证书以 Secret 的形式存储在 EKS 集群中。由于 Istio 和 ClickHouse 位于同一 VPC 中,它们之间的流量由 AWS 加密 默认情况下,入口可通过公网访问,并使用 IP allow list 进行过滤。客户可以配置 VPC peering 使其变为私网,并禁用公网连接。我们强烈建议设置 IP 过滤器 以限制访问。

故障排查访问

入站、私网 ClickHouse Cloud 工程师需要通过 Tailscale 获取故障排查访问权限。在 BYOC 部署中,他们通过按需授予的证书式身份验证进行访问。有关完整的访问策略,请参阅 ClickHouse data access

计费抓取器

出站、私有 计费抓取器从 ClickHouse 收集计费数据,并将其发送到由 ClickHouse Cloud 拥有的 S3 存储桶。 它以 sidecar 的形式与 ClickHouse server 容器一同运行,定期抓取 CPU 和内存指标。同一区域内的请求会通过 VPC 网关服务端点进行路由。

告警

出站,公网 AlertManager 已配置为在客户的 ClickHouse 集群处于不健康状态时,向 ClickHouse Cloud 发送告警。 指标和日志都存储在客户的 BYOC VPC 内。日志当前本地存储在 EBS 中。后续更新中,它们将存储在 LogHouse 中;LogHouse 是 BYOC VPC 内的一项 ClickHouse 服务。指标使用 Prometheus 和 Thanos 技术栈,并存储在 BYOC VPC 本地。

服务状态

出站,公网 状态导出器会将 ClickHouse 服务状态信息发送到 ClickHouse Cloud 所拥有的 SQS。
最后修改于 2026年6月10日