乌克兰国旗 我们与乌克兰的朋友和同事站在一起。如需在他们需要时支持乌克兰,请访问此页面: visit this page

Cassandra

版本  2.6 最新 转到最新的 1.x 版本

  • 支持的 Cassandra 版本:4.x, 5.x

本页介绍如何配置 Jaeger 使用现有的 Cassandra 集群作为跟踪数据的存储后端。关于如何部署 Cassandra 集群的说明,请参阅 Apache Cassandra 文档external link - Jaeger 分布式追踪平台

Cassandra 还拥有社区提供的以下官方支持资源:

配置

Jaeger 仓库中提供了使用 Cassandra 作为后端的配置示例:config-cassandra.yamlexternal link - Jaeger 分布式追踪平台。未来,配置文档将根据 schema 自动生成。同时,请参考 config.goexternal link - Jaeger 分布式追踪平台 作为权威来源。

初始化 Schema

在 Jaeger 使用 Cassandra 集群作为存储后端之前,必须初始化一个 keyspace 和数据库 schema。从 v2.1.0 版本开始,Jaeger 可以在启动时自动创建 schema。它默认等同于以下配置:

extensions:
  jaeger_storage:
    backends:
      some_storage:
        cassandra:
          schema:
            create: true
            keyspace: jaeger_dc1
            datacenter: dc1
            trace_ttl: 48h
            dependencies_ttl: 48d
            compaction_window: 2h
            replication_factor: 1

建议根据您的需求自定义这些值,例如,用于更长的数据保留时间或更高的复制因子。

如果 schema.create 设置为 false,则必须手动初始化 schema。Jaeger 仓库中有一个脚本可以生成初始化指令,该指令可以使用 Cassandra 的交互式 shell cqlshexternal link - Jaeger 分布式追踪平台 执行

MODE=test sh ./internal/storage/v1/cassandra/schema/create.sh | cqlsh

同样的脚本被打包成容器镜像(请确保提供正确的 IP 地址)

docker run \
  -e CQLSH_HOST={server IP address}  \
  -e MODE=prod \
  jaegertracing/jaeger-cassandra-schema:2.6.0

对于生产环境部署,请向脚本传递参数 MODE=prod DATACENTER={datacenter},其中 {datacenter} 是 Cassandra 配置/网络拓扑中使用的名称。

该脚本还允许覆盖 TTL、keyspace 名称、复制因子等。运行脚本时不带参数可以查看所有可识别参数的完整列表。

有关 Cassandra schema 管理的更多详细信息,请参阅 此 READMEexternal link - Jaeger 分布式追踪平台

TLS 支持

只要您正确配置了 Cassandra 集群,Jaeger 就支持 TLS 客户端到节点的连接。您可以在 connection: 部分下的 tls: 部分中指定 TLS 证书(.pem 文件)的路径。有关可用属性,请参阅 OpenTelemetry Collector 仓库中的 configtls.ClientConfigexternal link - Jaeger 分布式追踪平台

提示:首先使用 cqlsh 验证 TLS 证书的正确性。

schema 工具也支持 TLS。您需要像这样创建一个自定义的 cqlshrc 文件:

# Creating schema in a cassandra cluster requiring client TLS certificates.
#
# Create a volume for the schema docker container containing four files:
# cqlshrc: this file
# ca-cert: the cert authority for your keys
# client-key: the keyfile for your client
# client-cert: the cert file matching client-key
#
# if there is any sort of DNS mismatch and you want to ignore server validation
# issues, then uncomment validate = false below.
#
# When running the container, map this volume to /root/.cassandra and set the
# environment variable CQLSH_SSL=--ssl
[ssl]
certfile = ~/.cassandra/ca-cert
userkey = ~/.cassandra/client-key
usercert = ~/.cassandra/client-cert
# validate = false

兼容的后端