> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-parallel-read-in-order-multi-part.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# 架构

> 在您自有的云基础设施上部署 ClickHouse

export const Image = ({img, alt, size = "lg", background}) => {
  const normalizedSize = ["sm", "md", "lg"].includes(size) ? size : "lg";
  const backgroundColor = background === "white" ? "white" : background === "black" ? "rgb(31 31 28)" : undefined;
  return <div className={`ch-image-${normalizedSize}`}>
      <Frame>
        <img src={img} alt={alt} style={{
    backgroundColor
  }} />
      </Frame>
    </div>;
};

<div id="key-concepts">
  ## 关键概念
</div>

下图展示了 ClickHouse Cloud 组织、云账户和 BYOC 基础设施之间的关系。

<Image img="https://mintcdn.com/private-7c7dfe99-parallel-read-in-order-multi-part/xI74_SSNk8kNyW21/images/cloud/reference/byoc-organization-hierarchy.svg?fit=max&auto=format&n=xI74_SSNk8kNyW21&q=85&s=d61fe44a2d70354b5a50b8e372d6cdc5" size="lg" alt="BYOC 组织层级" width="960" height="720" data-path="images/cloud/reference/byoc-organization-hierarchy.svg" />

* **ClickHouse Cloud 组织：** ClickHouse Cloud 中的顶层实体，用于管理用户、计费以及非 BYOC 的 ClickHouse 服务。组织中的用户既可以访问标准 Cloud 服务，也可以访问 BYOC 服务。
* **ClickHouse BYOC 组织：** 一个专门用于管理 BYOC 部署的独立组织。它与 Cloud 组织共享用户，但会关联到一个或多个部署了 BYOC 基础设施的云账户。
* **云账户 / 项目 / 订阅：** 客户自有的 AWS 账户、GCP 项目或 Azure 订阅，BYOC 基础设施就在其中预配。每个账户、项目或订阅都可以在一个或多个区域中承载 BYOC 部署。为实现隔离，建议每个 BYOC 部署使用独立的账户、项目或订阅。
* **BYOC 基础设施：** 部署在云账户某个特定区域内的一组云资源，包括 VPC/VNet、Kubernetes 集群 (EKS/GKE/AKS) 、对象存储桶、IAM 角色/服务账号/服务主体以及相关配套服务。单个云账户可以在不同区域中包含多个 BYOC 基础设施。
* **ClickHouse 服务：** 在某个 BYOC 基础设施内运行的单个 ClickHouse 集群。同一个 BYOC 基础设施内可以运行多个服务。

<Note>
  只有未通过[云服务提供商市场](/zh/products/cloud/reference/billing/marketplace/overview)完成开通的客户，才能在同一组织下混合使用 AWS 账户、GCP 项目和 Azure 订阅。
</Note>

<div id="glossary">
  ## 术语表
</div>

* **ClickHouse VPC:** ClickHouse Cloud 拥有的 VPC。
* **Customer BYOC VPC:** 归客户云账户所有、由 ClickHouse Cloud 预配和管理，且专用于 ClickHouse Cloud BYOC 部署的 VPC。
* **Customer VPC:** 归客户云账户所有的其他 VPC，用于运行需要连接到 Customer BYOC VPC 的应用程序。

<h2 id="architecture">
  技术架构
</h2>

BYOC 将运行在 ClickHouse VPC 中的 **ClickHouse 控制平面** 与完全运行在您的云账户中的 **数据平面** 分离开来。ClickHouse VPC 承载 ClickHouse Cloud 控制台、身份验证、用户管理、API、计费、基础设施管理组件 (如 BYOC 控制器) 以及告警/事件处理工具。这些服务负责对您的部署进行编排和监控，但并不存储您的数据。

在您的 **Customer BYOC VPC** 中，ClickHouse 会预配一个运行 ClickHouse 数据平面的 Kubernetes 集群 (例如 Amazon EKS)。如图所示，其中包括 ClickHouse 集群本身、ClickHouse Operator，以及入口、DNS、证书管理、状态导出器和抓取器等配套服务。专用监控栈 (Prometheus、Grafana、AlertManager 和 Thanos) 也运行在您的 VPC 中，因此您的指标和告警均产生于您的环境，监控数据本身也保留在您的账户内。仅有一小部分运维遥测数据会转发给 ClickHouse Cloud——用于计费的用量指标、服务与备份状态事件，以及健康告警——除此之外不会导出任何内容；完整清单请参阅 [网络边界](/zh/products/bring-your-own-cloud/reference/network-security#outbound-connections)。除上述导出之外，ClickHouse 的仪表盘以及在获批升级处理的情况下其工程师可通过 Tailscale 就地查询该技术栈和您的日志，ClickHouse 侧不会持久化任何数据——请参阅 [ClickHouse data access](/zh/products/bring-your-own-cloud/reference/clickhouse-data-access)。

<br />

<Image img="https://mintcdn.com/private-7c7dfe99-parallel-read-in-order-multi-part/xRBSgHpXzTyj2f9W/images/cloud/reference/byoc-architecture.svg?fit=max&auto=format&n=xRBSgHpXzTyj2f9W&q=85&s=8b8f505d54d7068a785874570e3a2dcf" size="lg" alt="BYOC 架构：位于 ClickHouse VPC 中的 ClickHouse 控制平面管理客户云账户内的 Kubernetes 数据平面；ClickHouse 数据、备份、日志和监控数据均保留在客户账户中，仅导出有限的运维遥测数据。" width="1280" height="762" data-path="images/cloud/reference/byoc-architecture.svg" />

<br />

ClickHouse Cloud 将在您的账户中部署的主要云资源包括：

* **VPC:** 专用于您的 ClickHouse 部署的虚拟私有云。它既可以由 ClickHouse 管理，也可以由您 (客户) 管理，并且通常会与您的应用 VPC 建立对等连接。
* **IAM 角色 and policies:** Kubernetes、ClickHouse 服务和监控栈所需的 IAM 角色和策略。这些可以由 ClickHouse 预配，也可以由客户提供。
* **Storage 桶:** 用于存储数据分区片段、备份，以及 (可选的) 长期指标和日志归档。
* **Kubernetes 集群:** 根据您的云提供商不同，它可以是 Amazon EKS、Google GKE 或 Azure AKS。它承载架构图中显示的 ClickHouse 服务器及配套服务。

默认情况下，ClickHouse Cloud 会预配一个新的专用 VPC，并设置所需的 IAM 角色，以确保 Kubernetes 服务安全运行。对于有更高级网络或安全需求的组织，也可以选择自行管理 VPC 和 IAM 角色。这样可以更灵活地自定义网络配置，并更精细地控制权限。不过，选择自行管理这些资源也会增加您的运维责任。

<div id="data-storage">
  ### 数据存储
</div>

您的 ClickHouse 数据、备份、日志和监控数据都保留在您的云账户内；唯一导出到外部的数据是[网络边界](/zh/products/bring-your-own-cloud/reference/network-security#outbound-connections)中列出的有限范围内的用量和健康状况遥测数据。数据分区片段和备份存储在您的对象存储中 (例如亚马逊 S3) ，而日志则存储在附加到 ClickHouse 节点的存储卷上。在未来的更新中，日志将写入 LogHouse，这是一项基于 ClickHouse 的日志服务，也运行在您的 BYOC VPC 内。指标可以存储在本地，或为了长期保留而存储在您自己账户中的专用桶内 —— 对象存储位于 VPC/VNet 之外，通过提供商的存储 API 路径访问。ClickHouse VPC 与您的 BYOC VPC 之间的控制平面连接仅用于管理操作，绝不承载查询流量。默认情况下，ClickHouse 管理服务通过公网端点访问集群的 Kubernetes API，但该端点绝不会对外完全开放：在 AWS 上，通过 IP 允许列表仅允许 ClickHouse 的出口 IP 范围访问；在 GCP 上，由 Google Cloud IAM 进行授权；在 Azure 上，则由 Microsoft Entra ID 结合 Azure RBAC 进行授权。您也可以按部署改为启用私有连接，即 AWS VPC Lattice、GCP 上基于 DNS 的 GKE 控制平面端点或 Azure Private Link，如图所示。在所有云平台上，ClickHouse 工程师的故障排查访问以及指标和仪表盘数据均通过 Tailscale 传输；即使 Kubernetes API 路径为私有，Tailscale 也依然保留。

<div id="control-plane-communication">
  ### 控制平面通信
</div>

ClickHouse VPC 通过 HTTPS (端口 443) 与你的 BYOC VPC 通信，用于服务管理操作，包括配置更改、健康检查和部署命令。这些流量仅承载用于编排的控制平面数据。关键遥测数据和告警会从你的 BYOC VPC 流向 ClickHouse VPC，以实现资源利用率与健康状况监控。

<div id="key-requirements">
  ## BYOC 的关键要求
</div>

BYOC 部署模型需要具备两个关键组成部分，以确保运行可靠、便于维护且安全：

<div id="cross-account-iam-permissions">
  ### 跨账户 IAM 权限
</div>

ClickHouse Cloud 需要跨账户 IAM 权限，以便在您的云账户中预配和管理资源。这使 ClickHouse 能够：

* **预配基础设施**：创建并配置 VPC、子网、安全组及其他网络组件
* **管理 Kubernetes 集群**：部署并维护 EKS/GKE/AKS 集群、节点组和集群组件
* **创建存储资源**：预配 S3 存储桶或等效的对象存储，用于存放数据和备份
* **管理 IAM 角色**：为 Kubernetes 服务账号及配套服务创建并配置 IAM 角色
* **运行配套服务**：部署并管理监控栈、入口控制器及其他基础设施组件

这些权限通过您在初始引导流程中创建的跨账户 IAM 角色 (AWS)、服务账号 (GCP) 或多租户服务主体 (Azure) 授予。该角色遵循最小权限原则，权限范围仅限于 BYOC 操作所必需的内容。

有关所需具体权限的详细信息，请参阅 [BYOC Privilege Reference](/zh/products/bring-your-own-cloud/reference/privilege)。

<div id="tailscale-private-network">
  ### Tailscale 私有网络连接
</div>

Tailscale 在 ClickHouse Cloud 与您的 BYOC 部署之间提供安全的零信任私有网络。ClickHouse 工程师的故障排查访问，以及 ClickHouse 用于监控您部署的指标和仪表盘，均通过该网络传输；启用私网 API 端点时，Kubernetes API 流量也经由该网络传输。此连接可实现：

* **持续监控**：ClickHouse 工程师可访问部署在您的 BYOC VPC 中的 Prometheus 监控栈，以监控服务健康状况和性能
* **主动维护**：工程师可执行例行维护、升级和故障排查操作
* **紧急支持**：发生服务问题时，工程师可快速访问您的环境以诊断并解决问题
* **基础设施管理**：启用私网 Kubernetes API 端点时，管理服务将通过此连接访问 Kubernetes API，而不再经由其公网端点

您集群中的 Tailscale agent 仅发起**出站连接**：Tailscale 本身无需配置任何入站安全组、防火墙或网络安全组规则，从而降低安全暴露风险。所有访问均具有以下特性：

* **经批准且可审计**：工程师必须通过内部审批系统申请访问权限
* **有时间限制**：访问会在设定期限后自动失效
* **受限**：工程师只能访问系统表和基础设施组件，绝不会访问客户数据
* **已加密**：所有通信均采用端到端加密

“仅出站”这一特性仅针对 Tailscale 本身，并不涵盖所有管理路径。无论经由公网端点还是私有连接，您集群的 Kubernetes API server 仍会在 TCP 443 端口上接受来自 ClickHouse 管理服务的连接；完整的监听器列表请参阅[入站连接](/zh/products/bring-your-own-cloud/reference/network-security#inbound-connections)清单。

有关 Tailscale 在 BYOC 中的工作方式及安全控制的详细信息，请参阅[网络安全文档](/zh/products/bring-your-own-cloud/reference/network-security#tailscale-private-network)。

<h3 id="why-requirements-matter">
  为什么这些要求很重要
</h3>

这两个组件结合使用后，可让 ClickHouse Cloud 实现：

* **保障可靠性**：主动监控并维护您的部署，防患于未然
* **确保安全**：采用最小权限访问，并实现完整审计
* **简化运维**：在您保持控制权的同时，实现基础设施管理自动化
* **提供支持**：在问题发生时快速响应并解决

所有客户数据都保留在您的云账户中，绝不会通过这些管理通道被访问或传输。

**其他建议与注意事项：**

* 确保您的 BYOC VPC 的 CIDR 网段不会与任何计划建立对等连接的现有 VPC 重叠。
* 为资源添加清晰的标签，以简化管理和支持。
* 为实现高可用性，请合理规划子网规模，并将其分布在各个可用区。
* 查阅[安全手册](/zh/products/cloud/guides/security/audit-logging/byoc-security-playbook)，了解当 ClickHouse Cloud 在您的环境中运行时的共享责任和最佳实践。
* 查阅完整的入门指南，获取有关初始账户设置、VPC 配置、网络连接 (例如 VPC peering) 以及 IAM 角色委派的分步说明。

如果您有特殊要求或约束，请联系 ClickHouse 支持团队，获取有关高级网络配置或自定义 IAM 策略的指导。
