使用 Docker 构建你的 Serverless 树莓派集群

1.0概述

 

我们将使用 OpenFaaS,它能够让主机或者集群作为支撑 Serverless 功能运行的后端。任何能够使用 Docker 部署的可执行二进制文件、脚本或者编程语言都能在 OpenFaaS 上运作,你可以根据速度和伸缩性选择部署的规模。另一个优点是,它还内建了用户界面和监控系统。

这是我们要执行的步骤:

在一个或多个主机上配置 Docker (树莓派 2 或者 3);
利用 Docker Swarm 将它们连接;
部署 OpenFaaS;

1.1 Docker

Docker 是一项打包和部署应用的技术,支持集群上运行,有着安全的默认设置,而且在搭建集群时只需要一条命令。OpenFaaS 使用 Docker 和 Swarm 在你的可用树莓派上传递你的 Serverless 功能。

2.0安装Docker

curl -sSL https://get.docker.com | sh

之后,用下面这个命令确保你的用户帐号可以访问 Docker 客户端:
usermod pi -aG docker #可能不是pi 比如我的dietpi设备用户名就是dietpi


2.1为其他设备重复以上步骤

3.0创建你的 Swarm 集群

登录你的第一个树莓派,然后输入下面的命令
sudo docker swarm init

你会看到它显示了一个口令,以及其它节点加入集群的命令。接下来使用 ssh 登录每个树莓派,运行这个加入集群的命令。

等待连接完成后,在第一个树莓派上查看集群的节点:

4.0 安装OpenFaaS

你可以看到两个节点启动运行。这时只有一个节点是集群管理者。如果我们的管理节点挂了,集群就进入了不可修复的状态。我们可以通过添加冗余的管理节点解决这个问题。而且它们依然会运行工作负载,除非你明确设置了让你的服务只运作在工作节点上。

要把一个工作节点升级为管理节点,只需要在其中一个管理节点上运行 docker node promote <node_name> 命令。

现在我们继续部署程序,让我们的集群能够运行 Serverless 功能。OpenFaaS 是一个利用 Docker 在任何硬件或者云上让任何进程或者容器成为一个 Serverless 功能的框架。因为 Docker 和 Golang 的可移植性,它也能很好地运行在树莓派上。

登录你的第一个树莓派(你运行 docker swarm init 的节点),然后部署这个项目

git clone https://github.com/alexellis/faas/
cd faas
./deploy_stack.armhf.sh

你的其它树莓派会收到 Docer Swarm 的指令,开始从网上拉取这个 Docker 镜像,并且解压到 SD 卡上。这些工作会分布到各个节点上,所以没有哪个节点产生过高的负载。

这个过程会持续几分钟,你可以用下面指令查看它的完成状况
watch 'docker service ls'
你可以根据服务名查看该服务被调度到哪个树莓派上
docker service ps func_markdown

状态一项应该显示 Running,如果它是 Pending,那么镜像可能还在下载中。

例如,如果你的 IP 地址是 192.168.0.100,那就访问 http://192.168.0.100:8080 。

这是你会看到 FaaS UI(也叫 API 网关)。这是你定义、测试、调用功能的地方。

点击名称为 “func_markdown” 的 Markdown 转换功能,输入一些 Markdown(这是 Wikipedia 用来组织内容的语言)文本。

然后点击 “invoke”。你会看到调用计数增加,屏幕下方显示功能调用的结果。

使用 Docker 构建你的 Serverless 树莓派集群》有5个想法

发表评论

电子邮件地址不会被公开。 必填项已用*标注