跳至主要内容

AWS 的 BYOC(自带云) - 私人预览

概述

BYOC(自带云)允许您在自己的云基础设施上部署 ClickHouse 云。如果您有特定要求或限制,无法使用 ClickHouse 云托管服务,这将非常有用。

BYOC 目前处于私人预览阶段。如果您想访问,请联系 支持 请参考我们的 服务条款,以获取有关此私人预览的更多信息。

BYOC 目前仅支持 AWS,GCP 和 Microsoft Azure 正在开发中。

注意

BYOC 专为大规模部署而设计。

术语表

  • ClickHouse VPC: ClickHouse 云拥有的 VPC。
  • 客户 BYOC VPC: 客户云帐户拥有的 VPC,由 ClickHouse 云配置和管理,专用于 ClickHouse 云 BYOC 部署。
  • 客户 VPC 客户云帐户拥有的其他 VPC,用于需要连接到客户 BYOC VPC 的应用程序。

架构

指标和日志存储在客户的 BYOC VPC 中。日志目前存储在 EBS 中的本地位置。在未来的更新中,日志将存储在 LogHouse 中,LogHouse 是客户 BYOC VPC 中的 ClickHouse 服务。指标是通过在客户 BYOC VPC 中的本地存储的 Prometheus 和 Thanos 堆栈实现的。


BYOC Architecture

入职流程

在私人预览期间,请联系 ClickHouse 支持,启动入职流程。客户需要拥有专用的 AWS 帐户并了解他们将使用的区域。目前,我们只允许用户在支持 ClickHouse 云的区域中启动 BYOC 服务。

BYOC 设置通过 CloudFormation 堆栈进行管理。此 CloudFormation 堆栈仅创建一个角色,允许 ClickHouse 云中的 BYOC 控制器设置和管理基础设施。用于运行 ClickHouse 的 S3、VPC 和计算资源不属于 CloudFormation 堆栈的一部分。

升级流程

我们定期升级软件,包括 ClickHouse 数据库版本升级、ClickHouse Operator、EKS 和其他组件。

虽然我们努力使升级尽可能无缝(例如,滚动升级和重启),但某些升级,例如 ClickHouse 版本更改和 EKS 节点升级,仍然可能会影响服务。在这种情况下,客户可以指定维护窗口(例如,每周二凌晨 1:00 PDT)。我们确保此类升级仅在计划的维护窗口内执行。

请注意,维护窗口不适用于安全和漏洞修复。这些将作为非循环升级处理,我们会及时与客户沟通,采取必要的措施并协调合适的升级时间,以最大程度地减少对运营的影响。

CloudFormation IAM 角色

引导 IAM 角色

引导 IAM 角色具有以下权限

  • EC2 和 VPC 操作对于设置 VPC 和 EKS 集群是必需的。
  • S3 操作(例如 s3:CreateBucket)对于设置用于 ClickHouse BYOC 存储的存储桶是必需的。
  • route53:* 用于外部 DNS,以便在 route53 中设置记录。
  • IAM 相关操作(例如 iam:CreatePolicy)是控制器创建其他角色所必需的。有关详细信息,请参阅下一节。
  • eks:xx 操作仅限于以 clickhouse-cloud 前缀开头的资源。

控制器创建的其他 IAM 角色

除了通过 CloudFormation 创建的 ClickHouseManagementRole 之外,控制器还会创建一些角色。

这些角色旨在由在客户 EKS 集群中运行的应用程序承担。

  • 状态导出器角色
    • ClickHouse 组件,用于将服务运行状况信息报告回 ClickHouse 云。
    • 需要写入 ClickHouse 云拥有的 SQS 的权限
  • 负载均衡器控制器
    • 标准 AWS 负载均衡器控制器
    • EBS CSI 控制器,用于管理 ClickHouse 服务所需的卷
  • External-dns,用于将 DNS 配置传播到 route53
  • Cert-manager,用于为 BYOC 服务域配置 TLS 证书
  • Cluster autoscaler,用于根据需要扩展节点组

K8s-control-planek8s-worker 角色旨在由 AWS EKS 服务承担。

最后,data-plane-mgmt 用于允许 ClickHouse 云控制平面组件协调必要的自定义资源,例如 ClickHouseCluster 和 Istio 虚拟服务/网关。

网络边界

本节重点介绍进出客户 BYOC VPC 的不同网络流量。

  • 入站: 流向客户 BYOC VPC 的流量。
  • 出站: 从客户 BYOC VPC 发出并发送到该 VPC 外部的流量
  • 公共: 可供公共互联网访问的网络端点地址
  • 私有: 仅可通过私有方式访问的网络端点地址,例如通过 VPC 对等连接、VPC 私有链接和 Tailscale

Istio 入口部署在 AWS NLB 后面,以接收 ClickHouse 客户端流量

入站,公共(可以是私有)

Istio 入口网关终止 TLS。证书由 CertManager 使用 LetsEncrypt 配置,并存储在 EKS 集群中的秘密中。Istio 和 ClickHouse 之间的流量由 AWS 加密,因为它们位于同一个 VPC 中。默认情况下,入口可供公共互联网访问,并具有 IP 允许列表过滤。客户可以选择设置 VPC 对等连接,使其成为私有并禁用公共连接。我们强烈建议您配置IP 过滤器以限制访问。

故障排除访问

ClickHouse 云工程师需要通过 Tailscale 进行故障排除访问。他们将被配置为对 BYOC 部署进行即时证书身份验证。

入站,公共(可以是私有)

计费抓取器

出站,私有

计费抓取器从 ClickHouse 收集计费数据并将其发送到 ClickHouse 云拥有的 S3 存储桶中。抓取器是一个组件,它充当 ClickHouse 服务器容器旁边的边车。它会定期从 ClickHouse 抓取 CPU 和内存指标。对同一区域的请求将通过 VPC 网关服务端点完成。

警报

出站,公共

AlertManager 被配置为在客户 ClickHouse 集群不健康时向 ClickHouse 云发出警报。指标和日志存储在客户的 BYOC VPC 中。日志目前存储在 EBS 中的本地位置。在未来的更新中,日志将存储在 LogHouse 中,LogHouse 是客户 BYOC VPC 中的 ClickHouse 服务。指标是通过在客户 BYOC VPC 中的本地存储的 Prometheus 和 Thanos 堆栈实现的。

服务状态

出站

状态导出器将 ClickHouse 服务状态信息发送到 ClickHouse 云拥有的 SQS。

功能

支持的功能

  • SharedMergeTree:ClickHouse Cloud 和 BYOC 使用相同的二进制文件和配置
  • 用于管理服务状态的控制台访问
    • 支持的操作包括启动、停止和终止
    • 查看服务和状态
  • 备份和还原
  • 手动垂直和水平扩展
  • 通过 Falco (falco-metrics) 进行运行时安全监控和警报
  • 通过 Tailscale 实现零信任网络
  • 监控:云控制台附带内置的健康状况仪表板,允许用户监控服务健康状况
  • 对于选择使用集中式仪表板进行监控的用户,我们支持 Prometheus 刮取。我们目前支持 Prometheus、Grafana 和 Datadog。有关设置的详细说明,请参阅Prometheus 文档
  • VPC 对等连接
  • 列在此页面上的集成
  • 安全的 S3

计划的功能(目前不支持)

  • AWS PrivateLink
  • AWS KMS 也称为 CMEK(客户管理的加密密钥)
  • 用于摄取的 ClickPipes
  • 自动扩展
  • 空闲
  • MySQL 接口

常见问题解答

计算

我可以在此单个 EKS 集群中创建多个服务吗?

可以。对于每个 AWS 账户和区域组合,基础设施只需要配置一次。

BYOC 支持哪些区域?

BYOC 支持与 ClickHouse Cloud 相同的区域集合。

会有一些资源开销吗?除了 ClickHouse 实例之外,运行服务还需要哪些资源?

除了 Clickhouse 实例(ClickHouse 服务器和 ClickHouse Keeper)之外,我们还运行 clickhouse-operator、aws-cluster-autoscaler、Istio 等服务以及我们的监控堆栈。

目前,我们在一个专用节点组中拥有 3 个 m5.xlarge 节点(每个 AZ 一个),用于运行这些工作负载。

网络和安全

在设置完成后,我们可以撤销安装过程中设置的权限吗?

目前还不行。

您是否考虑过为 ClickHouse 工程师访问客户基础设施进行故障排除提供一些未来的安全控制措施?

是的。在我们的路线图上,我们将实施一种客户控制的机制,客户可以通过该机制批准工程师访问集群。目前,工程师必须通过我们的内部升级流程才能获得即时访问集群的权限。这将被我们的安全团队记录和审计。

您如何设置 VPC 对等连接?

创建和删除 VPC 对等连接可以通过支持升级进行。先决条件是,对等连接的 VPC 之间需要有互不重叠的 CIDR 范围。

完成 ClickHouse 支持的 VPC 对等连接配置后,用户需要完成几个操作。

  1. 您将在对等连接的 VPC 的 AWS 账户中收到一个 VPC 对等连接请求,需要接受该请求。请导航到VPC -> 对等连接 -> 操作 -> 接受请求
  1. 调整对等连接的 VPC 的路由表。在需要连接到 ClickHouse 实例的对等连接的 VPC 中找到子网。编辑子网的路由表,添加一条具有以下配置的路由
  • 目标:ClickHouse BYOC VPC CIDR(例如 10.0.0.0/16)
  • 目标:对等连接,pcx-12345678(实际 ID 将出现在下拉列表中)

BYOC network configuration
  1. 检查现有的安全组,确保没有规则阻止 BYOC VPC 的访问。

现在应该可以从对等连接的 VPC 访问 ClickHouse 服务。

为了私下访问 ClickHouse 服务,会为用户提供一个私有负载均衡器和端点,以便用户可以从其对等连接的 VPC 私下连接。端点类似于带有-private 后缀的公共端点。例如,如果公共端点是h5ju65kv87.mhp0y4dmph.us-west-2.aws.byoc.clickhouse.cloud,那么私有端点将是h5ju65kv87-private.mhp0y4dmph.us-west-2.aws.byoc.clickhouse.cloud

我可以选择为 EKS 集群创建的 VPC IP 范围吗?

您可以选择 VPC CIDR 范围,因为这会影响 VPC 对等连接功能。在入职期间,请在支持工单中说明这一点。

创建的 VPC IP 范围的大小是多少?

我们建议预留至少 /22 用于未来的潜在扩展,但如果您希望限制大小,可以使用 /23,如果可能的话,您将被限制为 30 个服务器 pod。

我可以决定维护频率吗?

联系支持部门以安排维护窗口。请预期至少两周一次的更新计划。

可观察性

内置监控工具

可观察性仪表板

ClickHouse Cloud 包含一个高级可观察性仪表板,它显示内存使用情况、查询速率和 I/O 等指标。这可以通过 ClickHouse Cloud Web 控制台界面的监控部分访问。


Observability dashboard

高级仪表板

您可以使用来自系统表(如system.metricssystem.eventssystem.asynchronous_metrics 等等)的指标自定义仪表板,以便详细监控服务器性能和资源利用率。


Advanced dashboard

Prometheus 集成

ClickHouse Cloud 提供一个 Prometheus 端点,您可以使用该端点刮取指标以进行监控。这允许与 Grafana 和 Datadog 等工具集成以进行可视化。

通过 https 端点 /metrics_all 的示例请求

curl --user <username>:<password> https://i6ro4qarho.mhp0y4dmph.us-west-2.aws.byoc.clickhouse.cloud:8443/metrics_all

示例响应

# HELP ClickHouse_CustomMetric_StorageSystemTablesS3DiskBytes The amount of bytes stored on disk `s3disk` in system database
# TYPE ClickHouse_CustomMetric_StorageSystemTablesS3DiskBytes gauge
ClickHouse_CustomMetric_StorageSystemTablesS3DiskBytes{hostname="c-jet-ax-16-server-43d5baj-0"} 62660929
# HELP ClickHouse_CustomMetric_NumberOfBrokenDetachedParts The number of broken detached parts
# TYPE ClickHouse_CustomMetric_NumberOfBrokenDetachedParts gauge
ClickHouse_CustomMetric_NumberOfBrokenDetachedParts{hostname="c-jet-ax-16-server-43d5baj-0"} 0
# HELP ClickHouse_CustomMetric_LostPartCount The age of the oldest mutation (in seconds)
# TYPE ClickHouse_CustomMetric_LostPartCount gauge
ClickHouse_CustomMetric_LostPartCount{hostname="c-jet-ax-16-server-43d5baj-0"} 0
# HELP ClickHouse_CustomMetric_NumberOfWarnings The number of warnings issued by the server. It usually indicates about possible misconfiguration
# TYPE ClickHouse_CustomMetric_NumberOfWarnings gauge
ClickHouse_CustomMetric_NumberOfWarnings{hostname="c-jet-ax-16-server-43d5baj-0"} 2
# HELP ClickHouseErrorMetric_FILE_DOESNT_EXIST FILE_DOESNT_EXIST
# TYPE ClickHouseErrorMetric_FILE_DOESNT_EXIST counter
ClickHouseErrorMetric_FILE_DOESNT_EXIST{hostname="c-jet-ax-16-server-43d5baj-0",table="system.errors"} 1
# HELP ClickHouseErrorMetric_UNKNOWN_ACCESS_TYPE UNKNOWN_ACCESS_TYPE
# TYPE ClickHouseErrorMetric_UNKNOWN_ACCESS_TYPE counter
ClickHouseErrorMetric_UNKNOWN_ACCESS_TYPE{hostname="c-jet-ax-16-server-43d5baj-0",table="system.errors"} 8
# HELP ClickHouse_CustomMetric_TotalNumberOfErrors The total number of errors on server since the last restart
# TYPE ClickHouse_CustomMetric_TotalNumberOfErrors gauge
ClickHouse_CustomMetric_TotalNumberOfErrors{hostname="c-jet-ax-16-server-43d5baj-0"} 9

身份验证

可以使用 ClickHouse 用户名和密码对进行身份验证。我们建议创建一个具有最小权限的专用用户来刮取指标。至少,在所有副本的system.custom_metrics 表上需要READ 权限。例如

GRANT REMOTE ON *.* TO scraping_user          
GRANT SELECT ON system.custom_metrics TO scraping_user

配置 Prometheus

下面显示了一个示例配置。targets 端点与用于访问 ClickHouse 服务的端点相同。

global:
scrape_interval: 15s

scrape_configs:
- job_name: "prometheus"
static_configs:
- targets: ["localhost:9090"]
- job_name: "clickhouse"
static_configs:
- targets: ["<subdomain1>.<subdomain2>.aws.byoc.clickhouse.cloud:8443"]
scheme: https
metrics_path: "/metrics_all"
basic_auth:
username: <KEY_ID>
password: <KEY_SECRET>
honor_labels: true

另请参阅这篇博文ClickHouse 的 Prometheus 设置文档.