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