最近在弄 mesos 和 merathon 的集群化部署,节点多了手动一台台去配显然是不现实的,在 github 上找了个 ansible 的自动化部署脚本,一步到位搞定 mesos + zookeeper + haproxy + merathon 的高可用部署,看起来很容易嘛,然后问题就来了。。。

ansible 脚本里安装 mesos 和 merathon 都是利用了 mesosphere 提供的官方 apt 源来进行 apt-get 安装,比手动编译肯定是省事很多,但是!国内的网络实在是太差,访问 repos.mesosphere.io 源下载包速度慢到无法忍受,再加上节点一多,安装速度慢到你能出去旅游一圈再回来。。

痛定思痛之后,我想到找一个国内的 apt 源镜像问题不就解决了嘛!求人不如求己,不如自己搭建一个镜像,正好 ubuntu 上提供了 apt-mirror 这个工具,一般都是用来同步 ubuntu 官方源的,其实拿来同步 mesosphere 这样的第三方源也是可以的,完美!

sudo apt-get install apt-mirror 安装后修改 /etc/apt/mirror.list 文件,类似下面

############# config ##################
#
set base_path /var/spool/apt-mirror
#
set mirror_path /data/apt-mirror
# set skel_path $base_path/skel
# set var_path $base_path/var
# set cleanscript $var_path/clean.sh
# set defaultarch
# set postmirror_script $var_path/postmirror.sh
# set run_postmirror 0
set nthreads 20
set _tilde 0
#
############# end config ##############
deb http://repos.mesosphere.io/ubuntu trusty main
clean http://repos.mesosphere.io/ubuntu

指定了一下 mirror_path 即镜像下载回来存放的目录路径,后面把 mesosphere 官方源的地址写上就可以了,然后就设个 crontab 定时任务每周去同步一把咯。。。

镜像下载回来之后再设个 apache 或者 nginx 什么的提供一个 http 访问服务 http://your-web-server 指向 mirror_path 就行了,要安装 mesos 的时候,deb 源就这么写:(ubuntu 14.04)

deb http://your-web-server/repos.mesosphere.io/ubuntu trusty main

如果觉得地址太长,也可以把 web server 指向 mirror_path 里面的 repos.mesosphere.io 这个目录,这样上面那个地址就可以简化成 http://your-web-server/ubuntu 了。我这样留着,其实是为了以后再 mirror 其他的源,apt-mirror 都会放到 mirror_path 目录的子目录里。

最后,我在国内机房的机器上运行了一次同步,耗时是:

1.8 GiB will be downloaded into archive. Downloading 41 archive files using 20 threads… Begin time: Wed Oct 14 12:41:11 2015 [20]… [19]… [18]… [17]… [16]… [15]… [14]… [13]… [12]… [11]… [10]… [9]… [8]… [7]… [6]… [5]… [4]… [3]… [2]…[1]… [0]… End time: Wed Oct 14 16:17:36 2015

速度太感人了。。。

总结就是:

a.需要批量部署时自建 apt 源是非常有必要的,后期可以节省大量的时间。

b.天朝网络环境真是不怎么样,有能力的还是人肉翻墙吧。。。