0

当我使用 cloudify(2.7) 部署应用程序时,它包括两个服务(例如服务 A 依赖于服务 B),这里是 app-application.groovy

application {
    name "app"

    service {
        name = "B"
    }

    service {
        name = "A"
        dependsOn = [ "B" ]
    }
}

当服务 B 有 2 个实例时,服务 B 的一个实例可用,服务 A 开始调用启动事件,但服务 A 依赖于服务 B 的所有实例,是否有一些配置可以解决?

4

1 回答 1

0

从https://groups.google.com/forum/#!topic/cloudify-developers/TZzwfzY-rLY复制我的答案:

Cloudify 2.7 中的默认行为是在服务所依赖的所有服务至少有一个运行实例时启动服务。如果你想等待另一个服务的所有实例(或一些其他依赖逻辑),你应该在你的生命周期脚本中实现它。您可以使用服务上下文 API 访问其他服务的状态:http: //getcloudify.org/guide/2.7/developing/the_service_context_api.html

例如,您可以添加一个“preInstall”事件,该事件使用 waitForInstances() API 来等待所需数量的实例。请注意,此 API 可让您访问可能尚未启动的实例。您可以通过调用来检查实例的当前状态:

serviceInstance.getMonitors("USM_State")

USM_State 的可能值可在此处获得: https ://github.com/CloudifySource/cloudify/blob/master/dsl/src/main/java/org/cloudifysource/dsl/internal/CloudifyConstants.java#L35

因此,值为 2 表示正在运行的实例。

于 2014-09-28T11:56:08.847 回答