我在几台虚拟机上设置了分布式openwhisk安装,如https://github.com/apache/incubator-openwhisk/blob/master/ansible/README_DISTRIBUTED.md所述(还必须手动安装一些VM依赖项,因为它们是预期的,但默认情况下没有安装)。
我的主机文件如下所示:
; the first parameter in a host is the inventory_hostname
; used for local actions only
ansible ansible_connection=local
[registry]
xxx.xx.xx.173 ansible_host=xxx.xx.xx.173
[edge]
xxx.xx.xx.176 ansible_host=xxx.xx.xx.176
[apigateway:children]
edge
[redis:children]
edge
[controllers]
xxx.xx.xx.174 ansible_host=xxx.xx.xx.174
xxx.xx.xx.175 ansible_host=xxx.xx.xx.175
[kafkas]
xxx.xx.xx.176 ansible_host=xxx.xx.xx.176
[zookeepers:children]
kafkas
[invokers]
xxx.xx.xx.174 ansible_host=xxx.xx.xx.174
xxx.xx.xx.175 ansible_host=xxx.xx.xx.175
[db]
xxx.xx.xx.176 ansible_host=xxx.xx.xx.176
一般来说,一切似乎都运行正常,我可以创建动作,调用它们等等。
在托管调用程序和控制器的两个VM上,我打开了htop以检查CPU使用情况,并尝试运行python脚本,并行多次调用相同的操作(素数计算需要时间以获得足够大的输入)。
结果似乎是第一个调用程序在计算发生时在100%CPU上工作,而第二个调用程序仍然在5-7%CPU上空闲。我还尝试了跨多个VM分发组件的不同方法,例如在另一台机器上分别在两台机器和一台控制器上设置调用器,但结果是一样的。
这可能是什么原因?什么可能是使Openwhisk让第二个调用者参与的正确用例?
答案 0 :(得分:2)
在一个小型部署中,有一小部分调用者池严格分配给docker操作。这称为blackbox分数,默认为10%(最少1个调用者,这就是为什么你看到一个加载的调用者和一个空闲的)。
这个最近的拉取请求允许所有的调用者用于少量的调用者(最多为黑盒子部分的倒数):https://github.com/apache/incubator-openwhisk/pull/3751