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

简介: 在这个教程中,我将为大家演示如何在家中使用容器在非常便宜的硬件上运行网站及相关服务 —— 即手把手教您打造一个“家庭版实验室”。

screenshot

本文首发自“Docker公司”公众号(ID:docker-cn)
编译丨小东
每周一、三、五 与您不见不散!


背 景

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


screenshot

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

  1. 代码更改时自动更新;
  2. 配置更改时自动更新;
  3. 易于扩展和规模化;
  4. 便宜;

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

如果对我的“家庭版实验室”感兴趣,您可以在 demo.viktoradam.net 中看到它。同时,您也可以继续关注我们的公众号,我会为大家持续更新这个系列教程。


物理服务器

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

screenshot


Rock64 卡片机

screenshot


Pine64 卡片机

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

$ curl -fsSL get.docker.com | sudo sh

对于我目前所使用的应用程序来说,这些卡片机的性能似乎很好。当内存开始变得不够用时,我可以再订购一台卡片机并将其添加到集群中。上次我花费了大约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及其相关自动化的更多内容,敬请关注!)

相关文章
|
1月前
|
存储 Linux Docker
docker在欧拉服务器上编译安装应该注意什么?如何操作?
【10月更文挑战第31天】docker在欧拉服务器上编译安装应该注意什么?如何操作?
57 2
|
2月前
|
网络安全 Docker 容器
|
2月前
|
安全 Docker 容器
|
2月前
|
网络安全 Docker 容器
|
2月前
|
网络安全 数据安全/隐私保护 Docker
|
2月前
|
运维 监控 数据安全/隐私保护
管理 Docker Swarm 集群注意事项
【10月更文挑战第7天】
42 3
|
2月前
|
负载均衡 监控 安全
如何管理 Docker Swarm 集群和节点
【10月更文挑战第7天】
54 3
|
2月前
|
关系型数据库 MySQL Linux
基于阿里云服务器Linux系统安装Docker完整图文教程(附部署开源项目)
基于阿里云服务器Linux系统安装Docker完整图文教程(附部署开源项目)
324 3
|
2月前
|
弹性计算 数据库连接 Nacos
阿里云ECS服务器在docker中部署nacos
docker pull nacos 失败,docker部署nacos遇到的问题,nacos数据库连接,nacos端口映射
133 1
|
26天前
|
API Docker 容器
【赵渝强老师】构建Docker Swarm集群
本文介绍了如何使用三台虚拟主机构建Docker Swarm集群。首先在master节点上初始化集群,然后通过特定命令将node1和node2作为worker节点加入集群。最后,在master节点上查看集群的节点信息,确认集群构建成功。文中还提供了相关图片和视频教程,帮助读者更好地理解和操作。