在一个单节点企业内部无服务器框架上设置 Apache OpenWhisk on IBM Power
- UID
- 1066743
|
在一个单节点企业内部无服务器框架上设置 Apache OpenWhisk on IBM Power
简介无服务器计算是云计算领域中的一种新的执行模型,它使得开发人员可以仅关注编码,无需担忧基础架构。无服务器框架会负责处理负载平衡、容错,以及软件开发人员担心的其他基础架构琐事。
Apache OpenWhisk 是一种无服务器框架,它能帮助开发人员快速轻松地构建功能丰富的应用程序,为触发对事件的响应提供内在支持。
OpenWhisk on Power可在本地使用 OpenWhisk 创建无服务器基础架构。这在许多场景中都很有帮助。无服务器后端服务为开发人员消除了基础架构和操作复杂性的难题,比如容错、负载平衡和自动扩展。这有助于开发人员集中精力编写代码,而将执行工作交给 OpenWhisk。由于大部分应用程序代码都是与架构无关的(比如 Python、Java、Scala 和 Nodejs),所以开发人员无需担心运行代码的架构后端。
使用无服务器后端时,因为代码仅在被调用时运行,资源利用率得到了显著提升。无服务器框架开始越来越多地用于为物联网 (IoT) 解决方案执行边缘计算。
IBM®ower® 服务器上已支持并提供了 OpenWhisk,它使用 Docker 作为主要运行时。要获得更多信息,。
因此,为了能在 IBM Power 服务器上使用无服务器计算,下一步操作通常是启用 OpenWhisk 。
环境要求请参考以下环境细节,在 Power 上构建 OpenWhisk:
- 获取 Ubuntu 16.04 ppc64le 环境。该环境可以是裸机或虚拟机。在环境中安装 Python。如果需要获得适用于 Ubuntu 16.04 的 ppc64le 云虚拟机,请访问
- 确保您拥有足够的网络访问权,以便下载各种 Docker 包。
前提条件OpenWhisk 框架是使用从 Docker Hub 中的各种来源获得的一组 Docker 映像来构建的。一些映像已经可用于基于 IBM POWER®处理器的硬件,另一些映像提供与 OpenWhisk 安装程序期望的版本不同的版本。只有很少的几个映像必须按照本文中的说明进行手动构建,然后才能在 Docker 注册表中默认提供它们。为了克服一些映像问题,您需要执行以下步骤:
设置一个临时性的 CouchDB 实例OpenWhisk 的部署脚本是用 CouchDB 1.6 编写的。但是,官方 ppc64le/CouchDB 提供的是 2.0.0 映像。CouchDB 在 2.0.0 中更改了一些 API 路径。这导致映像无法通过 OpenWhisk 的默认设置进行使用。因此,您需要完成以下过程:
- 使用以下命令手动运行 Docker:
docker run -p 5984:5984 -d ppc64le/couchdb:2.0.0
|
- 创建一个管理用户和密码(我们使用了样本值):
curl -X POST -H "Content-Type: application/json" http://127.0.0.1:5984/_cluster_setup -d
'{"action": "enable_cluster", "bind_address":"0.0.0.0", "username": "admin", "password":"password"}
|
- 要在启动时创建系统数据库,请运行以下命令:
运行这些命令后,会在一个单节点集群上完成 CouchDB 的初始设置。要获得更多信息,请访问:
备注:这是一个临时性的 CouchDB 实例。通过向这个 CouchDB 容器传递一个能持久保存状态的磁盘,可以将它转变为非临时性的实例。
构建 gliderlabs/registratorDocker Hub 中没有针对 IBM Power Architecture®的 Docker 映像注册器。需要完成以下步骤来手动构建用于 Power 的映像:
- 创建 存储库的一个 Git 克隆。
- 根据官方 alpine 3.6 ppc64le 映像修改 Docker 文件来。原始映像是使用 alpine 3.5 构建的。
构建 ches/kafkaOpenWhisk 需要 ches/kafka,因为它通过使用此映像提供的脚本来创建 Apache Kafka 主题。没有适用于 ppc64le 的此类映像,所以需要手动构建它。
- 创建 存储库的一个 Git 克隆。
- 将基础映像更改为 ppc64le/javapenjdk-8-jre。
将 OpenWhisk 部署到 Power 上下节会介绍将 Apache OpenWhisk 部署到 IBM Power Architecture 上需要执行的步骤。
克隆 power-support 分支IBM Power Architecture 对 OpenWhisk 的支持还没有合并到上游,但可以暂时从获得此支持。
您应该克隆此存储库并切换到 power-support 分支。
设置 CouchDB 凭证将 CouchDB 设置时配置的用户 ID 和密码信息手动填充到 openwhisk/db_local.ini 文件中,以运行后续步骤。
请参考下面的样本文件:
[db_creds]
db_provider=CouchDB
db_username=admin
db_password=password
db_protocol=http
db_host=172.17.0.1 //This is your Ubuntu machine’s IP.
db_port=5984
|
将 OpenWhisk 安装到 Power 上目前为止,执行这些步骤是为了给运行 OpenWhisk 安装程序制造条件。如果已成功执行上述步骤,最好执行以下步骤,开始将 Apache OpenWhisk 安装到 Power Architecture 上。
- 将 OpenWhisk 存储库克隆到 /home/ubuntu 下后,请运行以下命令:
- cd /home/ubuntu/openwhisk; cd tools/ubuntu-setup && ./all.sh
- ./gradlew distDocker
- 切换到 openwhisk/ansible 下的 ansible 目录并运行以下命令:
ansible-playbook -i environments/local/host setup.yml
ansible-playbook -i environments/local/host prereq.yml
ansible-playbook -i environments/<environment> couchdb.yml
ansible-playbook -i environments/<environment> initdb.yml
ansible-playbook -i environments/<environment> wipe.yml
ansible-playbook -i environments/<environment> openwhisk.yml
ansible-playbook -i environments/<environment> postdeploy.yml
|
备注:用于 OpenWhisk 的 consul 映像的版本为 0.7.5,而 Power 服务器上提供的版本为 0.8.1。可以手动获取 consul 映像的 0.8.1 版,并在 openwhisk/group_vars/all 文件中更新正确的 consul 名称或版本。
在 OpenWhisk 上运行样本命令成功运行前面的步骤后,您应该已经有一个一体式 OpenWhisk 框架在 Power 上运行。以下步骤将指导您运行一些样本命令,帮助您理解 OpenWhisk 中的实用功能:
- 运行以下命令来设置授权密钥:
/home/ubuntu/openwhisk/ansible/../bin/wsk property set --auth
`cat /home/ubuntu/openwhisk/ansible/files/auth.guest`
|
设置授权密钥后,不需要在每次运行 wsk 命令行时都使用它。
- 运行以下命令来设置 API 主机 IP:/home/ubuntu/openwhisk/ansible/../bin/wsk property set --apihost 172.17.0.1
- 运行以下命令来创建一个 OpenWhisk 操作:/home/ubuntu/openwhisk/ansible/../bin/wsk -i action create hello hello.js
验证显示的输出类似以下消息:
操作实质上是一段应基于触发器来运行的代码。
- 运行以下命令,调用 OpenWhisk 操作来执行一次测试:
/home/ubuntu/openwhisk/ansible/../bin/wsk -i action invoke --blocking hello
ok: invoked /_/hello with id 1319b4cb784743c8bf405c32caa972b4
|
除此之外,OpenWhisk 还提供了一个,这些包可用于各种各样的使用场景。
备注:OpenWhisk Git 存储库的分支只能用于概念证明,不能用于生产。将它向上合并到 OpenWhisk 的主要 Git 存储库还需要一些额外工作,可能要对多架构 OpenWhisk 部署的实现做进一步整理和设计,并慎重讨论。
结束语本文介绍了建立一个全功能 OpenWhisk 集群需要执行的步骤。研究表明,基础平台切换成了 IBM Power 服务器时,使用 OpenWhisk 的用户体验几乎没变。
无服务器框架变得越来越受欢迎,而 IBM Power 硬件可能是运行一些无服务器客户解决方案的最佳平台,这得益于该架构的出色平台优势。 |
|
|
|
|
|