菜单
开源

配置 IPv6

可以将 Tempo 配置为使用互联网协议版本 6 (IPv6) 在组件之间进行通信。

注意

底层基础设施必须支持此地址族。此配置可在单栈 IPv6 环境中使用,也可在同时存在 IPv6 和 IPv4 的双栈环境中使用。在双栈场景中,一次只能配置一个地址族,并且所有组件都必须配置为该地址族。

协议配置

此示例监听配置将允许 gRPC 和 HTTP 服务器在 IPv6 上监听,并配置各种 memberlist 组件以启用 IPv6。

yaml
memberlist:
  bind_addr:
    - '::'
  bind_port: 7946

compactor:
  ring:
    kvstore:
      store: memberlist
    enable_inet6: true

metrics_generator:
  ring:
    enable_inet6: true

ingester:
  lifecycler:
    enable_inet6: true

server:
  grpc_listen_address: '::0'
  grpc_listen_port: 9095
  http_listen_address: '::0'
  http_listen_port: 3200

Kubernetes 服务配置

每个面向工作负载的服务都需要配置 spec.ipFamiliesspec.ipFamilyPolicy。请参阅此 compactor 示例。

yaml
apiVersion: v1
kind: Service
metadata:
  labels:
    name: compactor
  name: compactor
  namespace: trace
spec:
  clusterIP: fccb::31a7
  clusterIPs:
    - fccb::31a7
  internalTrafficPolicy: Cluster
  ipFamilies:
    - IPv6
  ipFamilyPolicy: SingleStack
  ports:
    - name: compactor-http-metrics
      port: 3200
      protocol: TCP
      targetPort: 3200
  selector:
    app: compactor
    name: compactor
  sessionAffinity: None
  type: ClusterIP

您可以从 Pod 内部检查监听服务。

sh
❯ k exec -it compactor-55c778b8d9-2kch2 -- sh
/ # apk add iproute2
OK: 12 MiB in 27 packages
/ # ss -ltn -f inet
State   Recv-Q   Send-Q     Local Address:Port     Peer Address:Port  Process
/ # ss -ltn -f inet6
State    Recv-Q   Send-Q     Local Address:Port     Peer Address:Port  Process
LISTEN   0        4096                   *:7946                *:*
LISTEN   0        4096                   *:9095                *:*
LISTEN   0        4096                   *:3200                *:*