内容


在一个单节点企业内部无服务器框架上设置 Apache OpenWhisk on IBM Power

OpenWhisk 中的 IBM Power Architecture 概念证明支持

Comments

简介

无服务器计算是云计算领域中的一种新的执行模型,它使得开发人员可以仅关注编码,无需担忧基础架构。无服务器框架会负责处理负载平衡、容错,以及软件开发人员担心的其他基础架构琐事。

Apache OpenWhisk 是一种无服务器框架,它能帮助开发人员快速轻松地构建功能丰富的应用程序,为触发对事件的响应提供内在支持。

OpenWhisk on Power

可在本地使用 OpenWhisk 创建无服务器基础架构。这在许多场景中都很有帮助。无服务器后端服务为开发人员消除了基础架构和操作复杂性的难题,比如容错、负载平衡和自动扩展。这有助于开发人员集中精力编写代码,而将执行工作交给 OpenWhisk。由于大部分应用程序代码都是与架构无关的(比如 Python、Java、Scala 和 Nodejs),所以开发人员无需担心运行代码的架构后端。

使用无服务器后端时,因为代码仅在被调用时运行,资源利用率得到了显著提升。无服务器框架开始越来越多地用于为物联网 (IoT) 解决方案执行边缘计算。

IBM®Power® 服务器上已支持并提供了 OpenWhisk,它使用 Docker 作为主要运行时。要获得更多信息,请参阅 Docker on IBM Power Systems

因此,为了能在 IBM Power 服务器上使用无服务器计算,下一步操作通常是启用 OpenWhisk 。

环境要求

请参考以下环境细节,在 Power 上构建 OpenWhisk:

  • 获取 Ubuntu 16.04 ppc64le 环境。该环境可以是裸机或虚拟机。在环境中安装 Python。如果需要获得适用于 Ubuntu 16.04 的 ppc64le 云虚拟机,请访问 https://cloud-images.ubuntu.com/xenial/current/
  • 确保您拥有足够的网络访问权,以便下载各种 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 的默认设置进行使用。因此,您需要完成以下过程:

  1. 使用以下命令手动运行 Docker:
    docker run -p 5984:5984 -d ppc64le/couchdb:2.0.0
  2. 创建一个管理用户和密码(我们使用了样本值):
    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"}
  3. 要在启动时创建系统数据库,请运行以下命令:
    curl -X PUT http://admin:password@127.0.0.1:5984/_config
    curl -X PUT http://admin:password@127.0.0.1:5984/_membership
    curl -X PUT http://admin:password@127.0.0.1:5984/_global_changes

运行这些命令后,会在一个单节点集群上完成 CouchDB 的初始设置。要获得更多信息,请访问:http://docs.couchdb.org/en/2.0.0/install/#single-node-setup

备注:这是一个临时性的 CouchDB 实例。通过向这个 CouchDB 容器传递一个能持久保存状态的磁盘,可以将它转变为非临时性的实例。

构建 gliderlabs/registrator

Docker Hub 中没有针对 IBM Power Architecture®的 Docker 映像注册器。需要完成以下步骤来手动构建用于 Power 的映像:

  1. 创建 https://github.com/gliderlabs/registrator 存储库的一个 Git 克隆。
  2. 根据官方 alpine 3.6 ppc64le 映像修改 Docker 文件来。原始映像是使用 alpine 3.5 构建的。

构建 ches/kafka

OpenWhisk 需要 ches/kafka,因为它通过使用此映像提供的脚本来创建 Apache Kafka 主题。没有适用于 ppc64le 的此类映像,所以需要手动构建它。

将 OpenWhisk 部署到 Power 上

下节会介绍将 Apache OpenWhisk 部署到 IBM Power Architecture 上需要执行的步骤。

克隆 power-support 分支

IBM Power Architecture 对 OpenWhisk 的支持还没有合并到上游,但可以暂时从 GitHub 获得此支持。

您应该克隆此存储库并切换到 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 上。

  1. 将 OpenWhisk 存储库克隆到 /home/ubuntu 下后,请运行以下命令:
    1. cd /home/ubuntu/openwhisk; cd tools/ubuntu-setup && ./all.sh
    2. ./gradlew distDocker
  2. 切换到 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 中的实用功能:

  1. 运行以下命令来设置授权密钥:
    /home/ubuntu/openwhisk/ansible/../bin/wsk property set  --auth 
    `cat /home/ubuntu/openwhisk/ansible/files/auth.guest`

    设置授权密钥后,不需要在每次运行 wsk 命令行时都使用它。

  2. 运行以下命令来设置 API 主机 IP:

    /home/ubuntu/openwhisk/ansible/../bin/wsk property set --apihost 172.17.0.1

  3. 运行以下命令来创建一个 OpenWhisk 操作:

    /home/ubuntu/openwhisk/ansible/../bin/wsk -i action create hello hello.js

    验证显示的输出类似以下消息:

    ok: created action hello

    操作实质上是一段应基于触发器来运行的代码。

  4. 运行以下命令,调用 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 硬件可能是运行一些无服务器客户解决方案的最佳平台,这得益于该架构的出色平台优势。

致谢

感谢 IBM Systems 的 Linux 技术中心 STSM 团队的 Pradipta Kumar Banerjee 为创作本文不断提供反馈和指导。

参考资料


评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Linux
ArticleID=1052226
ArticleTitle=在一个单节点企业内部无服务器框架上设置 Apache OpenWhisk on IBM Power
publish-date=11202017