Perfetto Bigtrace 在 Kubernetes 上的部署指南

Perfetto Bigtrace 在 Kubernetes 上的部署指南

perfetto Performance instrumentation and tracing for Android, Linux and Chrome (read-only mirror of https://android.googlesource.com/platform/external/perfetto/) perfetto 项目地址: https://gitcode.com/gh_mirrors/pe/perfetto

前言

Perfetto Bigtrace 是一个专为处理大规模追踪数据(O(百万)级别)而设计的分布式系统,它通过在 Kubernetes 集群上部署多个 TraceProcessor 实例来实现高效的数据处理。本文将详细介绍如何在 Google Kubernetes Engine (GKE) 上部署 Bigtrace 系统。

Bigtrace 架构概述

Bigtrace 系统由四个核心组件构成:

  1. 客户端接口

    • Python API:集成在 Perfetto Python 库中,提供类似 TraceProcessor 和 BatchTraceProcessor 的接口
    • Clickhouse:数据仓库解决方案,提供 SQL 接口
    • Superset:可视化界面,支持数据探索和图表生成
  2. 协调器(Orchestrator)

    • 系统的核心组件
    • 负责将追踪数据分片到各个 Worker 节点
    • 管理查询结果的流式传输
  3. 工作节点(Worker)

    • 每个 Worker 运行一个 TraceProcessor 实例
    • 独立处理分配的追踪数据和查询任务
    • 运行在 Kubernetes 的独立 Pod 中
  4. 对象存储(GCS)

    • 存储所有可查询的追踪数据
    • Worker 节点从此处获取数据
    • 支持本地存储用于测试环境

部署准备

环境要求

  1. GCP 项目:需要一个有效的 Google Cloud 项目
  2. 存储服务:已配置的 Google Cloud Storage (GCS)
  3. Kubernetes 集群:Google Kubernetes Engine (GKE)
  4. 工具链
    • gcloud 命令行工具
    • 本地 Perfetto 代码库

服务账号权限

除了默认的 Compute Engine 服务账号权限外,还需要添加:

  • Storage Object User 权限:允许 Worker 节点获取 GCS 认证令牌

集群配置

创建 GKE 集群

  1. 在 GCP 控制台导航至 Kubernetes Engine
  2. 选择创建标准集群
  3. 基础配置:
    • 选择位置类型(推荐使用区域级部署以获得最佳负载均衡性能)
  4. 节点池配置:
    • 选择适当的 VM 类型(推荐 e2-standard-8 或更高配置)
  5. 网络配置:
    • 启用 L4 内部负载均衡器的子集功能(VPC 内内部负载均衡必需)
  6. 完成集群创建

集群认证

执行以下命令获取集群凭证:

gcloud auth login
gcloud container clusters get-credentials [CLUSTER_NAME] --zone [ZONE] --project [PROJECT_NAME]

组件部署流程

协调器(Orchestrator)部署

构建并推送镜像
  1. 配置 Docker 使用 Google Cloud Artifact Registry:

    gcloud auth configure-docker [ZONE]-docker.pkg.dev
    
  2. 构建并推送镜像:

    docker build -t bigtrace_orchestrator infra/bigtrace/docker/orchestrator
    docker tag bigtrace_orchestrator [ZONE]-docker.pkg.dev/[PROJECT_NAME]/[REPO_NAME]/bigtrace_orchestrator
    docker push [ZONE]-docker.pkg.dev/[PROJECT_NAME]/[REPO_NAME]/bigtrace_orchestrator
    
应用部署配置
  1. 修改 orchestrator-deployment.yaml

    • 更新镜像路径
    • 配置 CPU 资源请求和限制
  2. 应用部署和服务配置:

    kubectl apply -f infra/bigtrace/gke/orchestrator-deployment.yaml
    kubectl apply -f infra/bigtrace/gke/orchestrator-ilb.yaml
    

工作节点(Worker)部署

构建并推送镜像
docker build -t bigtrace_worker infra/bigtrace/docker/worker
docker tag bigtrace_worker [ZONE]-docker.pkg.dev/[PROJECT_NAME]/[REPO_NAME]/bigtrace_worker
docker push [ZONE]-docker.pkg.dev/[PROJECT_NAME]/[REPO_NAME]/bigtrace_worker
应用部署配置
  1. 修改 worker-deployment.yaml

    • 更新镜像路径
    • 设置副本数量
    • 配置 CPU 资源
  2. 应用部署和服务配置:

    kubectl apply -f infra/bigtrace/gke/worker-deployment.yaml
    kubectl apply -f infra/bigtrace/gke/worker-service.yaml
    

Clickhouse 部署

构建并推送镜像
docker build -t clickhouse infra/bigtrace/bigtrace_clickhouse
docker tag clickhouse [ZONE]-docker.pkg.dev/[PROJECT_NAME]/[REPO_NAME]/clickhouse
docker push [ZONE]-docker.pkg.dev/[PROJECT_NAME]/[REPO_NAME]/clickhouse
应用部署配置
  1. 按顺序应用所有配置文件:

    kubectl apply -f infra/bigtrace/clickhouse/clickhouse-config.yaml
    kubectl apply -f infra/bigtrace/clickhouse/pvc.yaml
    kubectl apply -f infra/bigtrace/clickhouse/pv.yaml
    kubectl apply -f infra/bigtrace/clickhouse/clickhouse-deployment.yaml
    kubectl apply -f infra/bigtrace/clickhouse/clickhouse-ilb.yaml
    
  2. 关键配置项:

    • 更新镜像路径
    • 设置 Orchestrator 服务地址

部署验证

执行以下命令检查部署状态:

kubectl get deployments

预期输出应显示所有组件(orchestrator、worker 和 clickhouse)均已成功部署。

客户端接入

Clickhouse 客户端连接

使用 clickhouse-client 连接时需指定以下参数:

./clickhouse client --host [ADDRESS] --port [PORT] \
--receive-timeout=1000000 \
--send-timeout=100000 \
--idle_connection_timeout=1000000

Superset 部署

Superset 提供两种部署方式:

  1. 开发环境:在 VM 中部署单实例
  2. 生产环境:在 Kubernetes 上跨 Pod 部署

部署后,可通过 clickhouse-connect 将 Superset 连接到 Clickhouse 服务。

最佳实践

  1. 资源规划

    • 根据预期负载合理设置 Worker 副本数量
    • 为每个组件分配适当的 CPU 资源
  2. 监控与调优

    • 实施集群监控方案
    • 根据性能指标调整资源配置
  3. 安全考虑

    • 限制服务暴露范围
    • 实施适当的访问控制策略

通过以上步骤,您可以在 GKE 上成功部署一个完整的 Perfetto Bigtrace 系统,为大规模追踪数据处理提供强大的分布式计算能力。

perfetto Performance instrumentation and tracing for Android, Linux and Chrome (read-only mirror of https://android.googlesource.com/platform/external/perfetto/) perfetto 项目地址: https://gitcode.com/gh_mirrors/pe/perfetto

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

缪阔孝Ruler

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值