- 支持的 Cassandra 版本:4.x、5.x
本页介绍如何配置 Jaeger 使用现有的 Cassandra 集群作为链路追踪数据的存储后端。有关如何部署 Cassandra 集群的说明,请参阅 Apache Cassandra 文档。
Cassandra 还提供以下来自社区的官方支持资源:
- Docker 容器,用于快速启动单节点
- Bitnami 提供的 Helm chart
- DataStax 提供的 Kubernetes Operator
配置
Jaeger 使用 Cassandra 后端的示例配置可在 Jaeger 仓库中找到:config-cassandra.yaml。未来配置文档将从 schema 自动生成。在此之前,请参考 config.go 作为权威来源。
初始化 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 cqlsh 执行:
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.17
对于生产部署,请向脚本传递 MODE=prod DATACENTER={datacenter} 参数,其中 {datacenter} 是 Cassandra 配置/网络拓扑中使用的名称。
该脚本还允许覆盖 TTL、keyspace 名称、复制因子等。运行脚本时不带参数即可查看所有可识别参数的完整列表。
有关 Cassandra schema 管理的更多详细信息,请参阅此 README。
TLS 支持
只要您正确配置了 Cassandra 集群,Jaeger 就支持 TLS 客户端到节点的连接。您可以在 connection: 下的 tls: 部分指定 TLS 证书(.pem 文件)的路径。有关可用属性,请参阅 OpenTelemetry Collector 仓库中的 configtls.ClientConfig。
提示:建议先使用 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
兼容的后端
- ScyllaDB 可以用作 Cassandra 的替代方案,因为它使用相同的数据模型和查询语言。