在公司的企业私有云平台建立完成之后,为了便于云主机操作系统与软件快速部署更新,需要搭建企业级内网的开源镜像站。调研了国内各大开源镜像站点的技术之后,最终决定使用清华大学开源软件镜像站开发的镜像管理器 来构建云平台的软件镜像服务,毕竟使用成熟的镜像管理器比从头造轮子还是方便了许多,镜像站不是云的核心服务也不需要投入太多人力去做开发。
本文介绍了从0开始搭建一个内网开源镜像站并为用户提供 web 访问服务的全过程,希望对有构建内网镜像站服务需求的同学有所帮助。
1. 准备工作
镜像站需要一台服务器,如果有条件,建议准备一台专用的X86物理服务器作为镜像站的服务器。服务器推荐配置:
CPU: 8 核心 2.5GHz 以上
内存: 64 GB以上
硬盘: 3TB 以上
网络: 千兆上下行带宽
当然,如果条件不具备,以上配置均可以无视,选择自己最好配置的机器即可,毕竟服务器配置还是取决于最终用户的需求。
特别说要说明的是,硬盘大小要求必须超过需要同步的源文件大小,比如需要同时同步 与 ,就需要准备一块 1.6T 以上大小的硬盘。每个镜像的具体大小可以在清华大学开源软件镜像站 页面查到。
2. 同步源与架构选择
在官方提供的源列表中选择最方便的同步源(最好是支持 rsync 的国内镜像源,但国内目前提供 rsync 服务的镜像源不多,以下是网络收集的部分 rsync 源)。
源列表:+
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/
源列表:
rsync://mirrors.tuna.tsinghua.edu.cn/centos/
rsync://mirror.es.its.nyu.edu/centos/
rsync://centos.sonn.com/CentOS/
EPEL 源列表:
rsync://mirrors.yun-idc.com/epel
rsync://rsync.mirrors.ustc.edu.cn/epel
3. 同步工具
同步原理是使用 rsync 做增量同步。“搭建开源镜像站”一文介绍了几种同步工具,经过验证,还是清华大学开源软件镜像站开发的 最方便易用,所以这里使用 来做同步。
环境与配置
使用 开发,如果使用项目源码编译程序,需要配置 环境。
项目提供预编译版程序,为了简化操作(偷懒),可以直接从 下载使用预编译版本。
4. 系统配置
在操作系统中做如下配置初始化镜像服务器环境。
创建用户及用户组
groupadd -g 2001 mirrorgroup
useradd -u 2101 -g mirrorgroup mirrors
passwd mirrors
注意,以下所有操作如无特殊声明均使用用户。
建立应用及数据目录
建立程序目录:
mkdir /home/mirrors/tunasync
mkdir /home/mirrors/tunasync/conf
mkdir /home/mirrors/tunasync/db
建立镜像数据目录(使用root用户创建):
mkdir /mirrors
修改数据目录用户(使用root用户):
chown -R mirrors:mirrorgroup /mirrors
部署
下载 -linux-bin.tar.gz 到 /home// 目录,随后解压缩,生成 可执行文件。
配置环境变量
编辑 ~/. 文件,增加 :
TUNAPATH=/home/mirrors/tunasync
PATH=$PATH:$TUNAPATH
并执行
source ~/.bash_profile
使得环境变量生效。
5. 同步应用配置
接下来就是最关键的步骤,配置 的同步服务端与客户端。为便于操作管理, 的所有配置文件统一放置在 /home///conf/ 目录下。
配置
创建服务端配置文件 /home///conf/.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 = ""
配置说明
配置
根据需要创建需同步的镜像配置文件。以 镜像为例,同步 需要创建 /home///conf/-.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
配置说明
6. 启动同步应用
启动 需开启 进程与 进程,先启动 ,后启动 。为了便于监控系统进程情况,建立 //log/plog/ 目录,所有进程的工作日志在该目录中(注意,此处日志为系统终端输出日志,与 自身工作日志不同)。同样的,以下命令由 用户操作。
tunasync manager --config /home/mirrors/tunasync/conf/manager.conf >> /mirrors/log/plog/manager.log &
tunasync worker --config /home/mirrors/tunasync/conf/worker-centos.conf >> /mirrors/log/plog/worker-centos.log &