跳到主要内容

Docker部署Zipkin

介绍

Zipkin是一个开源的分布式追踪系统,用于收集、分析和可视化微服务架构中的请求链路数据。通过Docker部署Zipkin是最简单快捷的方式,尤其适合开发环境和初学者快速搭建实验环境。本节将详细介绍如何通过Docker运行Zipkin,并配置基础存储后端。

为什么选择Docker?

Docker提供了标准化的运行环境,避免了复杂的依赖安装过程,同时支持快速启动和版本切换。


前置条件

  1. 已安装Docker(官方安装指南
  2. 终端访问权限(Linux/macOS的Terminal或Windows的PowerShell)

基础部署

1. 运行Zipkin默认容器

使用官方镜像启动Zipkin(默认使用内存存储,重启后数据丢失):

bash
docker run -d -p 9411:9411 --name zipkin openzipkin/zipkin

参数说明

  • -d:后台运行容器
  • -p 9411:9411:将容器内9411端口映射到主机
  • --name zipkin:指定容器名称

访问 http://localhost:9411 即可看到Zipkin UI。

注意

此配置仅适合测试环境!生产环境需要配置持久化存储。


2. 持久化存储配置

使用MySQL存储

创建数据库后运行:

bash
docker run -d -p 9411:9411 \
-e STORAGE_TYPE=mysql \
-e MYSQL_HOST=your_mysql_host \
-e MYSQL_USER=zipkin \
-e MYSQL_PASS=zipkin \
-e MYSQL_DB=zipkin \
--name zipkin-mysql \
openzipkin/zipkin

使用Elasticsearch存储

bash
docker run -d -p 9411:9411 \
-e STORAGE_TYPE=elasticsearch \
-e ES_HOSTS=http://elasticsearch:9200 \
--name zipkin-es \
openzipkin/zipkin

高级配置

自定义Docker网络

建议为Zipkin和相关服务创建专用网络:

bash
docker network create zipkin-network
docker run -d --network zipkin-network --name elasticsearch elasticsearch:7
docker run -d -p 9411:9411 \
--network zipkin-network \
-e STORAGE_TYPE=elasticsearch \
-e ES_HOSTS=http://elasticsearch:9200 \
openzipkin/zipkin

实际案例

微服务追踪场景

假设你有以下服务架构:

部署Zipkin后,各服务需要配置上报数据:

java
// Spring Boot示例配置
spring.zipkin.base-url=http://zipkin-host:9411
spring.sleuth.sampler.probability=1.0 # 100%采样率

故障排查

常见问题及解决方案:

  1. 无法访问UI

    • 检查端口映射 docker ps 确认 0.0.0.0:9411->9411/tcp
    • 防火墙规则 sudo ufw allow 9411
  2. 存储连接失败

    • 验证环境变量拼写
    • 检查后端服务日志 docker logs zipkin

总结

通过本指南,你已学会:

  • 使用Docker快速部署Zipkin
  • 配置持久化存储(MySQL/Elasticsearch)
  • 搭建微服务追踪环境

扩展练习

  1. 尝试将Zipkin与Spring Boot应用集成
  2. 使用Docker Compose编排Zipkin+Elasticsearch
  3. 测试不同采样率对系统性能的影响