docker安装部署dragonfly2镜像加速服务

news2024/11/26 4:28:08

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"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/336455.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

鸟哥的Linux私房菜读书笔记:Linux磁盘与文件系统管理

系统管理员很重要的任务之一就是管理好自己的磁盘文件系统&#xff0c; 每个分区不可太大也不能太小&#xff0c; 太大会造成磁盘容量的浪费&#xff0c; 太小则会产生文件无法储存的困扰。 前面谈到的文件权限与属性中&#xff0c; 这些权限与属性分别记录在文件系统的哪个区块…

[Golang实战]如何快速接入chatgpt/openai?[引入go-gpt3][新手开箱可用]

如何快速接入chatgpt?[引入go-gpt3]上文介绍了如何在网页使用chatgpt?V1.介绍下在golang中使用chatgpt?1.查看官网推荐的chatgpt项目2.访问go-gpt33.使用并运行在自己的项目中...(是因为例子很难理解,所以一一对应了属性做了配置)3.1安装项目3.2换上自己的代码3.3换上自己的…

LeetCode - 1109 - 航班预定统计

目录 题目来源 题目描述 示例 提示 题目解析 算法源码 题目来源 1109. 航班预订统计 - 力扣&#xff08;LeetCode&#xff09; 题目描述 这里有 n 个航班&#xff0c;它们分别从 1 到 n 进行编号。 有一份航班预订表 bookings &#xff0c;表中第 i 条预订记录 bookin…

【C语言】BCD码、十进制互相转换

目录 0. 前言&#xff1a; 1. BCD码 2. 算法原理 3. 进制转换 3.1 两位BCD码的转换&#xff1a; 3.2 其他进制转换 3.3 任意进制转二进制 参考资料&#xff1a; 0. 前言&#xff1a; 记录今天用15单片机写DS1302时钟芯片程序的时候遇到的问题 时间显示是这个样的 0 1…

电源浪涌保护器的演化发展与未来创新方向

随着科学信息技术和城市经济的发展&#xff0c;感应雷、电磁脉冲和雷电波浸入所造成的危害大大增加。一般建筑物的外部防雷措施只能预防直击雷&#xff0c;而强大的电磁场产生的感应雷和脉冲电压却能潜入室内危及电路上的设备。如今通讯网络、电脑仪器和各类用电设备越来越精密…

2023VR视频加密解决方案

如今VR技术在各个领域中的使用&#xff0c;使得我们在日常生活中也可以看到它的身影&#xff0c;常见的就是应用到培训、影院和游戏当中&#xff0c;我们都知道VR视频比传统的平面视频能给用户带来更好的体验&#xff0c;而且现在在教育、娱乐等领域VR类视频也越来越多。相比于…

运动基元(二):贝塞尔曲线

贝塞尔曲线是我第一个深入接触并使用于路径规划的运动基元。N阶贝塞尔曲线具有很多优良的特性,例如端点性、N阶可导性、对称性、曲率连续性、凸包性、几何不变性、仿射不变性以及变差缩减性。本章主要介绍贝塞尔曲线用于运动基元时几个特别有用的特性。 一、贝塞尔曲线的定义 …

C++复习笔记4

编译器给一个类默认生成的六个成员函数&#xff1a; 构造函数、析构函数、拷贝构造函数、赋值运算符重载、对象取地址运算符以及常对象取地址运算符。其中析构函数不能重载&#xff0c;默认的拷贝和赋值两个函数存在浅拷贝的问题。 对象取地址运算符重载和常对象取地址运算符…

KD03丨选品种-横截面动量

大家好&#xff0c;今天我们分享可达鸭系列第3篇策略——横截面动量。 想必这种逻辑大家也都熟悉&#xff0c;为了照顾大部分新人朋友&#xff0c;开始还是简单介绍一下该该逻辑理论。 横截面是一种非时序动量逻辑&#xff0c;从统计学感性描述&#xff08;非严谨客观描述&am…

windows安装PaddleSpeech(无需visual studio)

前言 首先啊&#xff0c;狠狠的批评一下paddle&#xff0c;不想看请直接跳到用法&#xff0c;另外我python版本是3.9&#xff0c;所以包找的也都是3.9。 1.分成许多子项目涵盖AI的不同领域&#xff0c;初心是好&#xff0c;安装起来得安装多个环境。 2.官方文档推荐linux安装&…

anaconda详细介绍、安装及使用(python)

anaconda详细介绍、安装及使用1 介绍1.1 简介1.2 特点1.3 版本下载2 Anaconda管理Python包命令3 安装3.1 windows安装4 操作4.1 Conda 操作4.2 Anaconda Navigator 操作4.3 Spyder 操作4.4 Jupyter Notebook 操作5 示例参考1 介绍 1.1 简介 Anaconda是用于科学计算&#xff08…

力扣sql简单篇练习(十四)

力扣sql简单篇练习(十四) 1 银行账户概要|| 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 1.2 示例sql语句 # 高于相当于大于的意思 SELECT u.name,t.balance FROM Users u INNER JOIN (SELECT account,sum(amount) balanceFROM TransactionsGROUP BY accountHAVIN…

Kafka入门(四)

下面尝试一下Kafka 的生产者客户端和消费者客户端的实现。 1、客户端简介 生产者就是负责向Kafka发送消息的应用程序&#xff0c;消费者就是拉取Kafka消息的应用程序。 在Kafka的历史版本中&#xff0c;主要的客户端如下&#xff1a; 基于Scala语言编写的客户端&#xff0c;称…

JAVA工具篇--3 maven项目转gradle项目

前言&#xff1a;将已有的Maven 项目转换为Gradle 项目&#xff1b; 1 项目转换&#xff1a; 1.1 winr 打开cmd命令窗口, 然后进入到maven项目根目录后&#xff0c;输入命令: gradle init --info --type pom1.2 选择构建的语言&#xff1a; 输入 1 然后回车&#xff1b; 1.3…

Rust编码的信息窃取恶意软件源代码公布,专家警告已被利用

黑客论坛上发布了一个 用Rust编码的信息窃取恶意软件源代码 &#xff0c;安全分析师警告&#xff0c;该恶意软件已被积极用于攻击。 该恶意软件的开发者称&#xff0c;仅用6个小时就开发完成&#xff0c;相当隐蔽&#xff0c; VirusTotal的检测率约为22% 。 恶意软件开发者在…

canal使用说明:MySQL、Redis实时数据同步

1. canal简介 canal是阿里开源的数据同步工具&#xff0c;基于bin log可以将数据库同步到其他各类数据库中&#xff0c;目标数据库支持mysql,postgresql,oracle,redis,MQ,ES等 canal分成服务端deployer和客户端adapter&#xff0c;我们可以部署多个&#xff0c;同时为了方便管…

AssertionError: 618 columns passed, passed data had 508 columns【已解决】

问题描述 程序中断&#xff0c;报错如下AssertionError: 618 columns passed, passed data had 508 columns Exception has occurred: ValueError 618 columns passed, passed data had 508 columns AssertionError: 618 columns passed, passed data had 508 columnsThe abo…

< CSDN周赛解析:第 27 期 >

CSDN周赛解析&#xff1a;第 27 期&#x1f449; 前言&#x1f449; 第一题&#xff1a; 幸运数字> 解析> 解决方案> 拓展知识&#x1f449; 第二题&#xff1a; 投篮> 解析> 解决方案&#x1f449; 第三题&#xff1a; 通货膨胀-x国货币> 解析> 解决方案…

数字展陈技术,让珍贵馆藏资源走出深闺

这篇文章来自于笔者2017年发表在《档案时空》第12期的一篇文章&#xff0c;原名为《数字展陈技术在档案展览中的应用》。 档案时空 时隔5年&#xff0c;数字视觉技术的发展突飞猛进&#xff0c;特别是这两年元宇宙浪潮席卷全球&#xff0c;VR/AR/MR技术的综合应用给受众带来非一…

【PyTorch】教程:对抗学习实例生成

ADVERSARIAL EXAMPLE GENERATION 研究推动 ML 模型变得更快、更准、更高效。设计和模型的安全性和鲁棒性经常被忽视&#xff0c;尤其是面对那些想愚弄模型故意对抗时。 本教程将提供您对 ML 模型的安全漏洞的认识&#xff0c;并将深入了解对抗性机器学习这一热门话题。在图像…