Dragonfly 是一款基于 P2P 的智能镜像和文件分发工具。它旨在提高文件传输的效率和速率,最大限度地利用网络带宽,尤其是在分发大量数据时,例如应用分发、缓存分发、日志分发和镜像分发。
在阿里巴巴,Dragonfly 每个月会被调用 20 亿次,分发的数据量高达 3.4PB。Dragonfly 已成为阿里巴巴基础设施中的重要一环。
尽管容器技术大部分时候简化了运维工作,但是它也带来了一些挑战:例如镜像分发的效率问题,尤其是必须在多个主机上复制镜像分发时。
Dragonfly 在这种场景下能够完美支持 Docker 和 PouchContainer。它也兼容其他格式的容器。相比原生方式,它能将容器分发速度提高 57 倍,并让 Registry 网络出口流量降低 99.5%。
Dragonfly 能让所有类型的文件、镜像或数据分发变得简单而经济。
更多请通过官方文档了解。
纯Docker部署
这里采用多机部署,方案如下:
应用 IP
服务端 172.17.100.120
客户端 172.17.100.121
客户端 172.17.100.122
部署服务端
以docker方式部署,命令如下:
复制
docker run -d --name supernode --restart=always -p 8001:8001 -p 8002:8002
dragonflyoss/supernode:0.3.0 -Dsupernode.advertiseIp=172.17.100.120
部署客户端
准备配置文件
Dragonfly 的配置文件默认位于 /etc/dragonfly 目录下,使用容器部署客户端时,需要将配置文件挂载到容器内。
为客户端配置 Dragonfly Supernode 地址:
复制
cat < /etc/dragonfly/dfget.yml
nodes:
- 172.17.100.120
EOD
启动客户端
复制
docker run -d --name dfclient --restart=always -p 65001:65001
-v /etc/dragonfly:/etc/dragonfly
dragonflyoss/dfclient:v0.3.0 --registry https://index.docker.io
registry是仓库地址,这里使用的官方仓库
修改Docker Daemon配置
我们需要修改 Dragonfly 客户端机器(dfclient0, dfclient1)上 Docker Daemon 配置,通过 mirror 方式来使用 Dragonf