用 Docker 在卡片机上打造经济、高效的家用服务器集群(一)

出品丨Docker公司(ID:docker-cn)

编译丨小东

每周一、三、五晚6点10分 与您不见不散

说在前面

今天我将为广大 Docker 爱好者带来一个系列教程,在这个教程中,我将为大家演示如何在家中使用容器在非常便宜的硬件上运行网站及相关服务 —— 即手把手教您打造一个“家庭版实验室”。第一章内容我会先从背景、物理服务器和集群这三部分为大家介绍。

背 景

我花费了很多的时间和精力来打造我的“家庭版实验室”,可能有点过多,但是我真的非常喜欢它。我一直想拥有一些面向公众的网站和端点,那样我就可以与大家一起玩、一起分享。同时,我也希望这个“家庭版实验室”能够自动更新,因为我不想花费大量时间手动部署应用程序。更重要的是,我不想在闲暇时花费很多金钱与时间在更新应用程序上。所以我制作了这个教程,帮助大家打造一个属于自己的、自动化的“家庭版实验室”。

此图为奋斗目标

下列4项就是我对“家庭版实验室”的要求:

代码更改时自动更新;

配置更改时自动更新;

易于扩展和规模化;

便宜;

我从一台总共拥有2 GB 内存的 Pine64 服务器开始起步,用它运行了4到5个容器。在编写这篇教程的时候,这个堆栈已经有3台服务器了,并且托管了超过30个容器。没错,我要炫耀一下。

物理服务器

目前的设置有2台 Pine64卡片机和一台来自同一制造商的 Rock64 卡片机,它们都是64位ARM服务器。总的来说,我现在拥有12个CPU核心,7 GB内存来帮助我运行所有服务。它们都是功能强大的卡片计算机,每台卡片机只有15-45美元(根据内存的大小)。(PS:国内售价200-300元/台)

Rock64 卡片机

Pine64 卡片机

您可以在卡片机上运行不同版本的Linux。我选择使用Ubuntu的衍生品—— Armbian 。 因为Armbian 只对少数几个在arm64 / aarch64架构上的系统提供官方支持,而Ubuntu就是其中之一,对于Docker来说这一点尤为重要。使用 Armbian 意味着安装和升级 Docker 都会变得非常简单:

对于我目前所使用的应用程序来说,这些卡片机的性能似乎很好。当内存开始变得不够用时,我可以再订购一台卡片机并将其添加到集群中。上次我花费了大约30分钟(包括下载基础镜像并将其写入SD卡的时间)就将它设置好了。

集 群

我希望我的服务能够使用所有可用的服务器,我并不在意是否要最大限度地使用它们,只要应用程序以合理的方式分布在服务器之间就可以了。我还希望避免为服务器端点捆绑 IP 地址来保持动态和便携性。对于这个用例,Docker 和 Swarm 堆栈提供了莫大的帮助。

将所有应用程序打包成 Docker 镜像,并且以容器的方式运行它们,使应用程序更具便携性。我甚至为多个处理器架构( amd64 、 arm 和 arm64 )来构建它们,所以在未来如果我想的话,就可以在 Raspberry Pi (树莓派)或 x86 NUC 上运行它们。Docker 为我们提供了一套统一部署应用程序的方式(不管应用程序使用的是什么编程语言,或需要什么依赖关系)。

Docker Swarm 负责集群逻辑。一个节点是领导者,加入的新节点就像:

$ docker swarm join --token SWMTKN-1-abcd-efgh 192.168.1.1:2377

所有应用程序都作为在 YAML 文件中描述的 Swarm 服务来运行。这使得我可以定义它们的运行时属性、定义作为环境变量的配置和定义其它元数据标签。添加一个新的应用程序就像在这个文件中定义它的名字、镜像和设置一样简单,然后再次部署堆栈就可以了。实际部署是自动化的,相关服务(如反向代理和监控)会自动重新配置。

这一切都意味着,无论何时更新堆栈或其中的应用程序,所有东西都会在“git push”之后自动处理。这真的是太酷了!

(PS:在这个系列教程的后续部分,会有Docker及其相关自动化的更多内容,敬请关注!)

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180207G0ZMDY00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券