Dragonfly安装部署文档

​ Dragonfly 作为龙蜥社区的镜像加速标准解决方案,是一款基于 P2P 的智能镜像和文件分发工具。它旨在提高大规模文件传输的效率和速率,最大限度地利用网络带宽。在应用分发、缓存分发、日志分发和镜像分发等领域被大规模使用。

​ 现阶段 Dragonfly 基于 Dragonfly1.x 演进而来,在保持 Dragonfly1.x 原有核心能力的基础上,Dragonfly 在系统架构设计、产品能力、使用场景等几大方向上进行了全面升级。

​ Dragonfly 架构主要分为三部分 Manager、Scheduler、Seed Peer 以及 Peer 各司其职组成 P2P 下载网络,Dfdaemon 可以作为 Seed Peer 和 Peer。详细内容可以参考架构文档(链接见文末),下面是各模块功能:

Manager:维护各 P2P 集群的关联关系、动态配置管理、用户态以及权限管理等功能。也包含了前端控制台,方便用户进行可视化操作集群;

Scheduler:为下载节点选择最优下载父节点。异常情况控制 Dfdaemon 回源。

Peer:通过 Dfdaemon 部署,基于 C/S 架构提供 dfget 命令行下载工具,以及 dfget daemon 运行守护进程,提供任务下载能力。

Dragonfly github地址:https://github.com/dragonflyoss/Dragonfly2

Dragonfly技术架构图

本文介绍如何以docker的方式部署Dragonfly,所需环境:linux,docker,3台机器部署如下节点

192.168.197.140 部署manager、scheduler、seed peer

192.168.197.151 部署dfdaemon

192.168.197.152 部署dfdaemon

以上三台机器都准备有docker环境,且防火墙关闭

docker脚本准备

官方文档准备的是docker-compose运行环境的脚本,且是将所有服务部署在一台机器上,现在需要去github上找到脚本,转为docker run命令脚本来分开部署。

脚本位置:https://github.com/dragonflyoss/Dragonfly2/tree/main/deploy/docker-compose

在192.168.197.140上部署manager、scheduler等

下载manager、scheduler等配置文件

从github deploy/docker-compose/temlate/ 下载配置文件,并重命名

[root@harbor ~]# mkdir -p /etc/dragonfly/config
[root@harbor config]# cd /etc/dragonfly/config
[root@harbor config]# mv manager.template.yaml /etc/dragonfly/config/manager.yaml
[root@harbor config]# mv scheduler.template.yaml /etc/dragonfly/config/scheduler.yaml
[root@harbor config]# mv seed-peer.template.yaml /etc/dragonfly/config/seed-peer.yaml

docker启动redis、mysql

# 启动docker
[root@harbor config]# docker run -d --name dragonfly-redis --restart=always -p 6379:6379 redis:6-alpine --requirepass "dragonfly"
# 启动mysql
[root@harbor config]# docker run -d --name dragonfly-mysql --restart=always -p 3306:3306 --env MARIADB_USER="dragonfly" --env MARIADB_PASSWORD="dragonfly" --env MARIADB_DATABASE="manager" --env MARIADB_ALLOW_EMPTY_ROOT_PASSWORD="yes" mariadb:10.6
# 检查redis、mysql等容器是否成功启动
[root@harbor config]# docker ps | grep redis
[root@harbor config]# docker ps | grep mysql

1、在启动redis和mysql前请确保6379和3306端口没被占用

2、如果采用现有的mysql,则需要初始化mysql数据库、表,否则后续manager无法启动

docker 启动manager

编辑manager.yaml配置,正确填写redis、mysql相关配置,另外部署manager console会占用8080端口,确保8080端口没被占用或者修改rest的8080端口

[root@harbor config]# vim /etc/dragonfly/config/manager.yaml
[root@harbor config]# docker run -d --name dragonfly-manager --restart=always --net=host   -v /tmp/log/dragonfly:/var/log/dragonfly  -v /etc/dragonfly/config/manager.yaml:/etc/dragonfly/manager.yaml    dragonflyoss/manager:latest
# 检查manager是否成功部署
[root@harbor config]# docker ps | grep manager
# 查看日志
[root@harbor config]# docker logs <manager_container_id>

manager部署成功后,访问http://192.168.197.140:8080 可以登录console 账号密码:root/dragonfly,此步骤需要关闭防火墙

docker启动scheduler

编辑scheduler.yaml配置,正确配置redis、manager等配置,确保相关端口没被占用

[root@harbor config]# vim /etc/dragonfly/config/scheduler.yaml
# 启动scheduler
[root@harbor config]# docker run -d --name dragonfly-scheduler --restart=always --net=host  -v /tmp/log/dragonfly:/var/log/dragonfly  -v /etc/dragonfly/config/scheduler.yaml:/etc/dragonfly/scheduler.yaml   dragonflyoss/scheduler:latest
# 检查scheduler是否正确启动
[root@harbor config]# docker ps | grep scheduler
# 查看日志
[root@harbor config]# docker logs <scheduler_container_id>

docker启动seed-peer

编辑seed-peer.yaml配置,正确配置manager等配置,确保相关端口没被占用

[root@harbor config]# vim /etc/dragonfly/config/seed-peer.yaml
# 启动seed-peer
[root@harbor config]# docker run -d --name dragonfly-seed-peer --restart=always --net=host  -v /tmp/log/dragonfly:/var/log/dragonfly  -v /etc/dragonfly/config/seed-peer.yaml:/etc/dragonfly/dfget.yaml   dragonflyoss/dfdaemon:latest
# 检查seed-peer是否正确启动
[root@harbor config]# docker ps | grep seed-peer
# 查看日志
[root@harbor config]# docker logs <seed-peer_container_id>

以上操作都是192.168.197.140节点上完成

接下来在其他节点配置peer,即dfdaemon

以下操作分别在192.168.197.151、192.168.197.152上执行

下载dfmaemon配置

从github deploy/docker-compose/temlate/ 下载配置文件,并重命名

[root@harbor ~]# mkdir -p /etc/dragonfly/config
[root@harbor config]# cd /etc/dragonfly/config
[root@harbor config]# mv dfget.template.yaml /etc/dragonfly/config/dfget.yaml

docker启动dfmaemon

编辑dfget.yaml配置,正确填写manager和host相关的配置以及确保相关端口没被占用

[root@node1 config]# vim /etc/dragonfly/config/dfget.yaml
# 启动dfdaemon
[root@harbor config]# docker run -d --name dragonfly-dfdaemon --restart=always --net=host  -v /tmp/log/dragonfly:/var/log/dragonfly   -v /etc/dragonfly/config/dfget.yaml:/etc/dragonfly/dfget.yaml  dragonflyoss/dfdaemon:latest
# 检查是否正确启动
[root@harbor config]# docker ps | grep dfdaemon

验证

验证从dfmaemon节点拉取镜像是否经过了dragonfly,编辑/etc/docker/daemon.json文件新增如下配置

[root@node1 config]# vim /etc/docker/daemon.json
{"registry-mirrors": ["http://127.0.0.1:65001"]
}

重启docker服务

[root@node1 config]# systemctl restart docker

拉取镜像

[root@node1 config]# docker pull nginx:latest
# 查看日志
[root@node1 config]# tail -f /tmp/log/dragonfly/daemon/core.log -n 500

如果有类似如下格式的日志,则证明是通过dragonfly来拉取镜像的

{"level":"debug","ts":"2023-02-10 08:00:42.529","caller":"transport/transport.go:202","msg":"round trip directly, method: GET, url: https://index.docker.io/v2/library/nginx/manifests/latest"}
{"level":"debug","ts":"2023-02-10 08:00:43.767","caller":"transport/transport.go:202","msg":"round trip directly, method: GET, url: https://index.docker.io/v2/library/nginx/manifests/sha256:7f797701ded5055676d656f11071f84e2888548a2e7ed12a4977c28ef6114b17"}
{"level":"debug","ts":"2023-02-10 08:00:44.800","caller":"transport/transport.go:198","msg":"round trip with dragonfly: https://index.docker.io/v2/library/nginx/blobs/sha256:3f8a00f137a0d2c8a2163a09901e28e2471999fde4efc2f9570b91f1c30acf94"

docker安装部署dragonfly2镜像加速服务相关推荐

  1. centos 7 Docker 安装及配置镜像加速

    centos 7 Docker 安装及配置镜像加速 文章目录 centos 7 Docker 安装及配置镜像加速 Docker 版本 基于 `CentOS `安装 `Docker` 引擎 系统要求 卸 ...

  2. saiku docker配置部署_【安装教程】01 Gitea Docker 安装部署 - 【SkywenCode】技术团队基...

    在2016年-2019年,SkywenCode技术团队使用码云Gitee 作为线上代码库管理,基于敏捷开发和持续构建的思路,我们整体基础建设以Drone / Jenkins + Docker 的方式构 ...

  3. ITOP-1 Docker安装部署itop

    ITOP-1 Docker安装部署itop 一.Docker安装部署 1.下载docker源 2.yum安装docker,并运行 3.配置docker镜像加速地址 二.ITOP部署 1.登录[dock ...

  4. 使用docker安装部署Spark集群来训练CNN(含Python实例)

    使用docker安装部署Spark集群来训练CNN(含Python实例) 本博客仅为作者记录笔记之用,不免有很多细节不对之处. 还望各位看官能够见谅,欢迎批评指正. 博客虽水,然亦博主之苦劳也. 如需 ...

  5. Docker安装部署及使用

    Docker安装部署及使用 实验内容 安装Docker. 创建自己的第一个容器 容器使用,查看.启动.进入.停止.删除对应容器. 容器安装MySQL. Experimental environment ...

  6. Docker安装部署(详细版)

    文章目录 Docker 安装部署 简介 安装 调优 目录迁移 日志调优 磁盘优化 业务命令 docker 构建容器时推荐追加的脚本 问题 Docker 安装部署 简介 Docker 是一个开源的应用容 ...

  7. Docker安装部署超详细教程(2021版)

    一.前提条件 1.1. 内核 Docker运行对内核要求比较高,因此一般建议直接在Ubuntu这样的平台运行.但作为一个容器标准,Docker也是支持其他如CentOS, Mac OS X, Wind ...

  8. Docker——安装部署

    前言 从 2017 年 3 月开始 docker 在原来的基础上分为两个分支版本: Docker CE 和 Docker EE. Docker CE 即社区免费版,Docker EE 即企业版,强调安 ...

  9. 【Docker安装部署FastDFS详细过程】

    0.国人之光~FastDFS 分布式文件存储的由来: 在我们的项目中有很多需要存储的内容出现,比如图片,视频,文件等等,在早期的时候用户量不大,产生的文件也不是很多,这时我们可以把文件和服务程序放在一 ...

最新文章

  1. bootstrap之双日历时间段选择控件—daterangepicker(汉化版)
  2. 网站开发建设过程中所涉及到的技术问题应当如何面对?
  3. 51nod 1127 最短的包含字符串(尺取法)
  4. PAT-Mars number
  5. php curlopt_postfields,PHP的CURLOPT_POSTFIELDS参数使用数组和字符串的区别 - CSDN博客
  6. Linux下如何让普通用户具备sudo执行权限(普通用户提权)
  7. oracle 循环select查询的结构集,执行insert到指定表保存
  8. CentOS 7下编译FreeSWITCH 1.6
  9. Flash遮罩之光芒四射、佛光普照
  10. Binder机制详解
  11. IDEA 创建文件类型与预期文件类型不符时,如何更改
  12. win10系统设置还原点,系统永不奔溃
  13. 计算机显示器是指什么,电脑的显示器是什么 选购显示器的小技巧
  14. java刻画三角形和梯形和圆形_三角形、梯形和圆形的类封装
  15. 小米6线刷兼救砖_解账户锁_纯净刷机包_教程
  16. 【altium designer】画原理图
  17. mongoDb内嵌文档的数据查询
  18. 华硕顽石第四代FL5900u拆机换电池
  19. 看顶级渣男如何邀约100个女朋友(一)
  20. reason:The server time zone value '???ú±ê×??±??' is unrecognized or represents more than one time zo

热门文章

  1. 我爱学习网络 2022-12-25
  2. 第二次结对编程之测试缤纷桌面
  3. 程序设计:蒜头君的数轴
  4. Python 进制转换,十进制与2进制、8进制、16进制之间的转换
  5. 教你如何在Ubuntu上安装最新版QQ(而不是那个老掉牙的2012国际版)
  6. 群晖NAS 7.X版搭建博客网站,并内网穿透发布公网可访问 1-8
  7. MFC 数据有效机制(DDV)
  8. 聚氯乙烯含汞废水处理工艺
  9. 基于vue springboot的前后端分离的化妆品商城
  10. 2008春晚诗朗诵《心里话》之程序员版