内容简介:公司的企业私有云平台建立之后,为了便于云主机操作系统与软件快速更新,需要搭建企业内网的开源镜像站。调研了国内各大开源镜像站点的技术之后,最终决定使用清华大学开源软件镜像站开发的镜像管理器本文介绍了从0开始搭建一个内网开源镜像站并为用户提供 web 访问服务的全过程,希望对有构建内网镜像站服务需求的同学有所帮助。镜像站需要一台服务器,如果有条件,建议准备一台专用的X86物理服务器作为镜像站的服务器。服务器推荐配置:
公司的企业私有云平台建立之后,为了便于云主机操作系统与软件快速更新,需要搭建企业内网的开源镜像站。调研了国内各大开源镜像站点的技术之后,最终决定使用清华大学开源软件镜像站开发的镜像管理器 tunasync 来构建云平台的软件镜像服务,毕竟使用成熟的镜像管理器比从头造轮子还是方便了许多,镜像站不是云的核心服务也不需要投入太多人力去做开发。
本文介绍了从0开始搭建一个内网开源镜像站并为用户提供 web 访问服务的全过程,希望对有构建内网镜像站服务需求的同学有所帮助。
1. 准备工作
镜像站需要一台服务器,如果有条件,建议准备一台专用的X86物理服务器作为镜像站的服务器。服务器推荐配置:
CPU: 8 核心 2.5GHz 以上
内存: 64 GB以上
硬盘: 3TB 以上
网络: 千兆上行带宽及以上
当然,如果条件不具备,以上配置可以无视,选择自己最好配置的机器即可,毕竟服务器配置还是取决于最终用户的需求。
特别说要说明的是,硬盘大小要求必须超过需要同步的源文件大小,比如需要同时同步 CentOS 与 Ubuntu,就需要准备一块 1.6T 以上大小的硬盘。每个镜像的具体大小可以在清华大学开源软件镜像站 同步状态 页面查到。
2. 同步源与架构选择
在官方提供的源列表中选择最方便的同步源(支持rsync的国内镜像源)。 Ubuntu 源列表: https://launchpad.net/ubuntu/+archivemirrors
rsync://mirrors.shuosc.org/ubuntu/ rsync://mirrors.sohu.com/ubuntu/ rsync://mirrors.tuna.tsinghua.edu.cn/ubuntu/ rsync://mirrors.ustc.edu.cn/ubuntu/ rsync://mirrors.yun-idc.com/ubuntu/
CentOS 源列表: https://www.centos.org/download/mirrors/
rsync://mirrors.tuna.tsinghua.edu.cn/centos/ rsync://mirror.es.its.nyu.edu/centos/ rsync://centos.sonn.com/CentOS/
EPEL 源列表: https://admin.fedoraproject.org/mirrormanager/mirrors/EPEL
rsync://mirrors.yun-idc.com/epel rsync://rsync.mirrors.ustc.edu.cn/epel
3. 同步工具
同步原理是使用 rsync 做增量同步。“ 搭建开源镜像站 ”一文介绍了几种同步工具,经过验证,还是 清华大学开源软件镜像站 开发的 tunasync 最方便易用,所以这里使用 tunasync 来做同步。
环境与配置
tunasync 使用 Golang 开发,如果使用项目源码编译程序,需要配置 Golang 环境。
tunasync 项目提供预编译版程序,为了简化操作(偷懒),可以直接从 Github releases 下载使用预编译版本。
4. 系统配置
在操作系统中做如下配置初始化镜像服务器环境。
创建用户及用户组
groupadd -g 2001 mirrorgroup useradd -u 2101 -g mirrorgroup mirrors passwd mirrors
注意,以下所有操作如无特殊声明均使用mirrors用户。
建立应用及数据目录
建立程序目录:
mkdir /home/mirrors/tunasync mkdir /home/mirrors/tunasync/conf mkdir /home/mirrors/tunasync/db
建立镜像数据目录(使用root用户创建):
mkdir /mirrors
修改数据目录用户(使用root用户):
chown -R mirrors:mirrorgroup /mirrors
部署 tunasync
下载 tunasync-linux-bin.tar.gz 到 /home/mirrors/tunasync
目录,随后解压缩,生成 tunasync 可执行文件。
配置环境变量
编辑 ~/.bash_profile 文件,增加 TUNAPATH:
TUNAPATH=/home/mirrors/tunasync PATH=$PATH:$TUNAPATH
并执行
source ~/.bash_profile
使得环境变量生效。
5. 同步应用配置
接下来就是最关键的步骤,配置 tunasync 的同步服务端与客户端。为便于操作管理,tunasync 的所有配置文件统一放置在 /home/mirrors/tunasync/conf/
目录下。
manager 配置
创建服务端配置文件 /home/mirrors/tunasync/conf/manager.conf
,内容如下:
debug = false [server] addr = "127.0.0.1" port = 14242 ssl_cert = "" ssl_key = "" [files] db_type = "bolt" db_file = "/home/mirrors/tunasync/db/manager.db" ca_cert = ""
配置说明
-
port:监听端口,由于我下载的预编译版 tunasync 的一个小 bug,这里的
port
需固定配置为 14242 -
ssl_cert与ssl_key:ssl 配置,不需要 ssl 的同学不用配置
-
db_file:数据库文件,目前统一放在
/home/mirrors/tunasync/db/
目录
worker 配置
根据需要创建需同步的镜像配置文件。以 CentOS 镜像为例,同步 CentOS 需要创建 /home/mirrors/tunasync/conf/worker-centos.conf
,文件内容如下:
[global] name = "centos_worker" log_dir = "/mirrors/log/tunasync/{{.Name}}" mirror_dir = "/mirrors" concurrent = 10 interval = 1440 [manager] api_base = "http://localhost:14242" token = "some_token" ca_cert = "" [cgroup] enable = false base_path = "/sys/fs/cgroup" group = "tunasync" [server] hostname = "localhost" listen_addr = "127.0.0.1" listen_port = 16010 ssl_cert = "" ssl_key = "" [[mirrors]] name = "centos" provider = "rsync" upstream = "rsync://mirrors.tuna.tsinghua.edu.cn/centos/" use_ipv6 = false
配置说明
-
global name:worker 进程名称,用于程序识别
-
log_dir:tunasync 的日志路径
-
mirror_dir:镜像下载地址
-
concurrent:并发线程数
-
interval:rsync 同步周期,以分钟为单位
-
api_base:manager 地址,注意此处需与 manager 所在服务器配置保持一致
-
server listen_port:该 worker 自身的监听端口,如果同一台服务器上有多个 worker,各个 worker 的配置文件中务必配置不同端口
-
mirrors name:镜像名称,tunasync 会在镜像根目录下建立一个该名称的目录用于下载镜像
-
upstream:同步地址,注意,参数最后需要有“/”,否则启动 tunasync 时会报错
6. 启动同步应用
启动 tunasync 需开启 manager 进程与 worker 进程,先启动 manager,后启动 worker。为了便于监控系统进程情况,建立 /mirrors/log/plog/
目录,所有进程的工作日志在该目录中(注意,此处日志为系统终端输出日志,与 tunasync 自身工作日志不同)。同样的,以下命令由 mirrors 用户操作。
- 开启manager服务(后台进程):
tunasync manager --config /home/mirrors/tunasync/conf/manager.conf >> /mirrors/log/plog/manager.log &
- 开启 worker 服务(根据需要同步的镜像开启,这里以 CentOS 为例):
tunasync worker --config /home/mirrors/tunasync/conf/worker-centos.conf >> /mirrors/log/plog/worker-centos.log &
7. 提供 http 服务
镜像下载完成之后可以为内网用户开放 web 访问服务。理论上可以根据需要提供各种 ftp/http/rsync 服务,不过从用户友好性角度考虑,这里提供最常见的 http 服务。
http 服务需要搭建 apache 服务器,可能有些同学不了解 apache 的操作配置,这里也一并介绍下 apache 的搭建过程(基于 CentOS 7 环境),熟悉 apache 的同学可以跳过本章节。
7.1 配置 yum 源
在 /etc/yum.repos.d
目录下,备份 CentOS-Base.repo,随后下载某个源服务器的 repo 文件(这里以网易的源为例)
mv CentOS-Base.repo CentOS-Base.repo.bak mv CentOS-Media.repo CentOS-Media.repo.bak wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
随后运行以下命令生成yum缓存
yum clean all yum makecache
7.2 安装 apache 服务器
运行 yum install httpd
安装 apache。
7.3 配置apache服务器
编辑 /etc/httpd/conf/httpd.conf
文件,将web目录指向提供的镜像目录(这里以“/mirrors”目录为例。在 httpd.conf
中修改以下配置内容:
DocumentRoot "/mirrors"
添加目录访问权限:
<Directory "/mirrors"> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory>
并根据需要补充 index.html
和配置的 web 文件到 /mirrors
目录。
7.4 防火墙配置
CentOS 7 系统打开http服务端口:
firewall-cmd --permanent --zone=public --add-service=http firewall-cmd --permanent --zone=public --add-service=https firewall-cmd --reload
7.5 配置访问权限
镜像目录权限设置(DocumentRoot 参数对应的所有层级目录均设置为 755 权限)
chmod 755 /mirrors
SELINUX权限设置
chcon -R -t httpd_sys_content_t /home/mirrors/mirror/
7.6 设置启动项
开启 apache 服务器并设置开机启动项
systemctl start httpd.service systemctl enable httpd.service
个人网易开源镜像站的样式基础上创建了一个简单的 web 程序,大家可以在 Github/weyo/mirrors
上下载使用(所有 web 文件放到 /mirrors
目录即可)。
至此,同步服务以及 web 访问服务全部搭建完成,内网的小伙伴们可以通过浏览器访问镜像站了 http://服务器IP/ 。
8. 运行维护
tunasync 还提供了一个管理工具 tunasynctl,可以用于对镜像服务做更多维度的管理。
- 更新镜像信息
tunasynctl set-size -w <worker-id> <mirror> <size>
- 获取任务状态信息并保存为 json 文件
wget -c http://localhost:14242/jobs -O /mirrors/jobs.json -o /mirrors/log/plog/wget.log
以上任务可以整合为crontab定时任务,并同步到 web 前端页面中。
9. mirrors 项目说明
以上镜像站搭建过程中所使用的脚本、配置、html 文件等源码已经整合到 Github 的 mirrors 项目中,可以直接应用该项目文件搭建镜像站。该项目目录结构如下:
mirrors ├─ ─ ─ tunasync # tunasync 相关文件 │ ├─ ─ conf # tunasync 配置文件 │ └─ ─ scripts # 用于获取同步状态的定时脚本 └─ ─ ─ web # web 文件 ├─ ─ index.html ├─ ─ .help # 帮助文件 └─ ─ .resource # css/img/js 等资源文件 ├─ css ├─ img └─ js
使用方法
/home/mirrors/tunasync /mirrors tunasync/scripts/updateTunasync.sh
以上是关于镜像站搭建的全部内容,关于镜像站搭建的问题欢迎感兴趣的同学交流反馈,最后,特别感谢以下站点为本文提供的 工具 或思路或方法,Thanks!
Reference & 致谢
[1] 搭建开源镜像站
[2] 清华大学开源软件镜像站
[3] 网易开源镜像站
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 开源库架构实战——从0到1搭建属于你自己的开源库
- 使用开源的SRS 搭建一个直播服务
- 再谈使用开源软件搭建数据分析平台 原 荐
- 开源:vue2和thinkphp搭建的前后端分离项目
- 开源可视化搭建平台-码良新功能桌面端页面制作
- Elide 4.2.4 发布,雅虎开源的应用数据 API 搭建平台
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Geometric Folding Algorithms
Erik D Demaine / Cambridge University Press / 2008-8-21 / GBP 35.99
Did you know that any straight-line drawing on paper can be folded so that the complete drawing can be cut out with one straight scissors cut? That there is a planar linkage that can trace out any alg......一起来看看 《Geometric Folding Algorithms》 这本书的介绍吧!