Cassandra
- 支持的 Cassandra 版本:4.x, 5.x
本页介绍如何配置 Jaeger 使用现有的 Cassandra 集群作为跟踪数据的存储后端。关于如何部署 Cassandra 集群的说明,请参阅 Apache Cassandra 文档 。
Cassandra 还拥有社区提供的以下官方支持资源:
- Docker 容器 用于快速启动单个节点
- Helm Chart 来自 Bitnami
- Kubernetes Operator 来自 DataStax
配置
Jaeger 仓库中提供了使用 Cassandra 作为后端的配置示例: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.6.0
对于生产环境部署,请向脚本传递参数 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 的直接替代品使用,因为它使用相同的数据模型和查询语言。