Serverless 工程实践 | 自建 Apache OpenWhisk 平台
OpenWhisk 簡介
OpenWhisk 是基于云的分布式事件驅(qū)動的編程服務。OpenWhisk 提供一種編程模型,將事件處理程序注冊到云服務中,以處理各種不同的服務。其可以支持數(shù)千觸發(fā)器和調(diào)用,可以對不同規(guī)模的事件進行響應。
OpenWhisk 是由許多組件構建的,這些組件讓 OpenWhisk 成為一款優(yōu)秀的開源 FaaS 平臺。
Apache OpenWhisk 組件結構
OpenWhisk 部署
實驗機器操作系統(tǒng)為 Ubuntu 18.04 Desktop。使用 GitHub 上所提供的 incubator-openwhisk 進行安裝,如果本機沒有安裝 Git,需要先安裝 Git:
接下來克隆 repo 到本地目錄:
克隆完成之后,顯示如圖所示。
Apache OpenWhisk 項目 Clone
進入 OpenWhisk 目錄,并且執(zhí)行腳本。OpenWhisk 是由 Scala 開發(fā)的,運行需要安裝 Java 環(huán)境。下面的腳本實現(xiàn)了 Java 環(huán)境的安裝,以及其他的所需要的軟件:
Apache OpenWhisk 安裝配置如圖所示。
Apache OpenWhisk 安裝配置
OpenWhisk 使用 ansible 進行部署,環(huán)境變量定義在 ansible/environments/group_vars/all 下:
limits:invocationsPerMinute: "{{ limit_invocations_per_minute | default(60) }}"concurrentInvocations: "{{ limit_invocations_concurrent | default(30) }}"concurrentInvocationsSystem: "{{ limit_invocations_concurrent_system | default (5000) }}"firesPerMinute: "{{ limit_fires_per_minute | default(60) }}"sequenceMaxLength: "{{ limit_sequence_max_length | default(50) }}"上面程序定義了 OpenWhisk 在系統(tǒng)中的限制。
invocationsPerMinute 表示同一個 Namespace 每分鐘調(diào)用 Action 的數(shù)量。
concurrentInvocations 表示同一個 Namespace 的并發(fā)調(diào)用數(shù)量。
concurrentInvocationsSystem 表示系統(tǒng)中所有 Namespace 的并發(fā)調(diào)用數(shù)量。
firesPerMinute 表示同一個 Namespace 中每分鐘調(diào)用 Trigger 的數(shù)量。
sequenceMaxLength 表示 Action 的最大序列長度。
如果需要修改上述的默認值,可以把修改后的值添加到文件
ansible/environments/local/group_vars/all 的末尾。
例如,Action 的最大序列長度為 100,可以將 sequenceMaxLength: 120 添加到文件的末尾。接下來,為 OpenWhisk 配置一個持久存儲的數(shù)據(jù)庫,有 CouchDB 和 Cloudant 可選。以 CouchDB 為例,配置環(huán)境:
在 openwhisk/ansible 目錄下,運行腳本,如圖所示。
執(zhí)行腳本過程
接下來使用 CouchDB 部署 OpenWhisk,確保本地已經(jīng)有了 db_local.ini。在 openwhisk/ 目錄下執(zhí)行部署命令:
如果部署過程中出現(xiàn)問題(如下圖所示),可能是沒有安裝 npm 導致的,此時可以執(zhí)行如下指令。
部署過程可能報錯示例
稍等片刻,可以看到 Build 成功頁面,如圖所示。
Build 成功示例
接下來進入 openwhisk/ansible 目錄:
執(zhí)行腳本過程如圖所示。
執(zhí)行腳本過程
部署成功后,OpenWhisk 會在系統(tǒng)中啟動幾個 Docker 容器。我們可以通過 docker ps 來查看:
安裝成功后的容器列表如圖所示。
安裝成功后的容器列表
開發(fā)者工具
OpenWhisk 提供了一個統(tǒng)一的命令行接口 wsk。生成的 wsk 在 openwhisk/bin 下。其有兩個屬性需要配置。
- API host 用于部署 OpenWhisk 的主機名或 IP 地址的 API。
- Authorization key(用戶名或密碼)用來授權操作 OpenWhisk 的 API。
設置 API host,在單機配置中的 IP 應該為 172.17.0.1,如圖所示。
設置 API host
設置 key:
權限設置如圖所示。
設置權限
OpenWhisk 將 CLI 的配置信息存儲在 ~/.wskprops 中。這個文件的位置也可以通過環(huán)境變量 WSK_CONFIG_FILE 來指定。
驗證 CLI:
體驗測試
創(chuàng)建簡單的動作(action),代碼如下:
創(chuàng)建動作:
函數(shù)創(chuàng)建如圖所示。
創(chuàng)建函數(shù)
觸發(fā)動作:
得到結果,如圖所示。
執(zhí)行函數(shù)
至此,我們完成了 OpenWhisk 項目的部署以及測試。
原文鏈接:https://developer.aliyun.com/article/796083?
版權聲明:本文內(nèi)容由阿里云實名注冊用戶自發(fā)貢獻,版權歸原作者所有,阿里云開發(fā)者社區(qū)不擁有其著作權,亦不承擔相應法律責任。具體規(guī)則請查看《阿里云開發(fā)者社區(qū)用戶服務協(xié)議》和《阿里云開發(fā)者社區(qū)知識產(chǎn)權保護指引》。如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內(nèi)容,填寫侵權投訴表單進行舉報,一經(jīng)查實,本社區(qū)將立刻刪除涉嫌侵權內(nèi)容。總結
以上是生活随笔為你收集整理的Serverless 工程实践 | 自建 Apache OpenWhisk 平台的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 最佳实践丨构建云上私有池(虚拟IDC)的
- 下一篇: 恭喜我的同事黄玉奇入选开放原子开源基金会