如何在 Apache ***lyn 的蓝图中使用子网

Posted

技术标签:

【中文标题】如何在 Apache ***lyn 的蓝图中使用子网【英文标题】:How to use subnets in blueprints of Apache ***lyn 【发布时间】:2015-11-02 03:04:18 【问题描述】:

我正在尝试在我的蓝图中使用子网(在 AWS 中预先创建)在 Apache ***lyn 中运行它。

我有以下没有子网的蓝图,它可以正常工作。 (Ambari 服务器,具有两个 Hadoop 节点的集群)

name: IDA Ambari All Services without Security Group
description: This Application is used to build one Ambari Server and a Cluster of Ambari Agents
origin: vendor
location: 
  jclouds:aws-ec2:
    region: eu-central-1
    identity: identity
    credential: credential
    osFamily: RHEL
    osVersionRegex: 6.*
    hardwareId: m3.medium
services:
- type: io.***lyn.ambari.AmbariCluster
  ***lyn.config:
    initialSize: 2
    install.version: 2.1.0
    services:
      - FALCON

在我添加子网的新名称(以下蓝图的最后几行)的那一刻,Apache ***lyn 中的部署失败。

name: IDA Ambari All Services without Security Group
description: This Application is used to build one Ambari Server and a Cluster of Ambari Agents
origin: vendor
location: 
  jclouds:aws-ec2:
    region: eu-central-1
    identity: identity
    credential: credential
    osFamily: RHEL
    osVersionRegex: 6.*
    hardwareId: m3.medium
services:
- type: io.***lyn.ambari.AmbariCluster
  ***lyn.config:
    initialSize: 2
    install.version: 2.1.0
    services:
      - FALCON
    provisioning.properties:
      networkName: subnet-003dfb7b

我想问题出在蓝图中的 jclouds 配置上。但我不知道。

错误:

在节点中

启动失败并出现错误:java.lang.IllegalStateException: Node in 集群 DynamicClusterImplid=tEESwAU9 失败:2 个并行子节点中的 2 个 任务失败,2 个错误包括:错误调用开始于 AmbariAgentImplid=AS9jZ9AC:org.jclouds.compute.RunNodesException: 运行 1 个节点时出错 组(布鲁克林-gaho-root-ida-ambar-xydd-ambariagent-as9j-as9j) 位置(eu-central-1)图像(ami-6cd3ee71)尺寸(m3.medium) 选项(inboundPorts=[22, 2], scriptPresent=true, userMetadata=名称=***lyn-gaho-root-ida-ambar-xydd-ambariagent-as9j-as9j-jn19, 布鲁克林用户=root,布鲁克林应用程序 ID=XYDdTpTx,布鲁克林应用程序名称=IDA 没有安全组的 Ambari 所有服务, 布鲁克林实体 ID=AS9jZ9AC,布鲁克林实体名称=AmbariAgent:AS9j, 布鲁克林服务器创建日期=2015-08-10-1421, userDataCksum=2f4a740b, subnetId=subnet-003dfb7b)执行失败: 0 个错误[s] 节点故障:1) 节点上的 NoSuchElementException eu-central-1/i-4af7818b:java.util.NoSuchElementException:不能 连接到节点 id=eu-central-1/i-4af7818b 上的任何 IP 地址端口 22, providerId=i-4af7818b,位置=范围=ZONE,id=eu-central-1b, 描述=eu-central-1b,父级=eu-central-1,iso3166Codes=[DE-HE], 组=布鲁克林-gaho-root-ida-ambar-xydd-ambariagent-as9j-as9j, imageId=eu-central-1/ami-6cd3ee71,os=family=rhel,arch=hvm, 版本=6.6, 描述=411009282317/RightImage_RHEL_6.6_x64_v14.2.1_HVM_EBS, is64Bit=true,状态=RUNNING[运行],loginPort=22, 主机名=ip-172-31-17-195,私有地址=[172.31.17.195], 公共地址=[52.28.233.226],硬件=id=m3.medium, providerId=m3.medium, 处理器=[cores=1.0, speed=3.0], ram=3840, 卷=[type=LOCAL, size=4.0, device=/dev/sdb, bootDevice=false, 耐用=假,id=vol-e940020b,类型=SAN,设备=/dev/sda1, bootDevice=true,durable=true],hypervisor=xen, supportsImage=Predicates.and(Predicates.alwaysTrue(),Predicates.or(requiresVirtualizationType(hvm),requiresVirtualizationType(paravirtual)),Predicates.alwaysTrue(),Predicates.alwaysTrue()), 登录用户=root 在 org.jclouds.compute.util.ConcurrentOpenSocketFinder.findOpenSocketOnNode(ConcurrentOpenSocketFinder.java:107) 在 org.jclouds.compute.functions.CreateSshClientOncePortIsListeningOnNode.apply(CreateSshClientOncePortIsListeningOnNode.java:66) 在 org.jclouds.compute.functions.CreateSshClientOncePortIsListeningOnNode.apply(CreateSshClientOncePortIsListeningOnNode.java:40) 在 org.jclouds.compute.callables.SudoAwareInitManager.init(SudoAwareInitManager.java:67) 在 org.jclouds.compute.callables.RunScriptOnNodeAsInitScriptUsingSsh.init(RunScriptOnNodeAsInitScriptUsingSsh.java:64) 在 org.jclouds.compute.callables.RunScriptOnNodeAsInitScriptUsingSshAndBlockUntilComplete.init(RunScriptOnNodeAsInitScriptUsingSshAndBlockUntilComplete.java:77) 在 org.jclouds.compute.callables.RunScriptOnNodeAsInitScriptUsingSshAndBlockUntilComplete.init(RunScriptOnNodeAsInitScriptUsingSshAndBlockUntilComplete.java:38) 在 org.jclouds.compute.strategy.InitializeRunScriptOnNodeOrPlaceInBadMap.call(InitializeRunScriptOnNodeOrPlaceInBadMap.java:61) 在 org.jclouds.compute.strategy.InitializeRunScriptOnNodeOrPlaceInBadMap.call(InitializeRunScriptOnNodeOrPlaceInBadMap.java:34) 在 org.jclouds.compute.strategy.CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.call(CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.java:119) 在 org.jclouds.compute.strategy.CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.call(CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.java:49) 在 java.util.concurrent.FutureTask.run(FutureTask.java:262) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 在 java.lang.Thread.run(Thread.java:745) 1 错误[s] 运行失败 任务开始 2 个节点(并行)(OnIRxglV):2 个并行子节点中的 2 个 任务失败,2 个错误包括:错误调用开始于 AmbariAgentImplid=AS9jZ9AC:org.jclouds.compute.RunNodesException: 运行 1 个节点时出错 组(布鲁克林-gaho-root-ida-ambar-xydd-ambariagent-as9j-as9j) 位置(eu-central-1)图像(ami-6cd3ee71)尺寸(m3.medium) 选项(inboundPorts=[22, 2], scriptPresent=true, userMetadata=名称=***lyn-gaho-root-ida-ambar-xydd-ambariagent-as9j-as9j-jn19, 布鲁克林用户=root,布鲁克林应用程序 ID=XYDdTpTx,布鲁克林应用程序名称=IDA 没有安全组的 Ambari 所有服务, 布鲁克林实体 ID=AS9jZ9AC,布鲁克林实体名称=AmbariAgent:AS9j, 布鲁克林服务器创建日期=2015-08-10-1421, userDataCksum=2f4a740b, subnetId=subnet-003dfb7b)执行失败: 0 个错误[s] 节点故障:1) 节点上的 NoSuchElementException eu-central-1/i-4af7818b:java.util.NoSuchElementException:不能 连接到节点 id=eu-central-1/i-4af7818b 上的任何 IP 地址端口 22, providerId=i-4af7818b,位置=范围=ZONE,id=eu-central-1b, 描述=eu-central-1b,父级=eu-central-1,iso3166Codes=[DE-HE], 组=布鲁克林-gaho-root-ida-ambar-xydd-ambariagent-as9j-as9j, imageId=eu-central-1/ami-6cd3ee71,os=family=rhel,arch=hvm, 版本=6.6, 描述=411009282317/RightImage_RHEL_6.6_x64_v14.2.1_HVM_EBS, is64Bit=true,状态=RUNNING[运行],loginPort=22, 主机名=ip-172-31-17-195,私有地址=[172.31.17.195], 公共地址=[52.28.233.226],硬件=id=m3.medium, providerId=m3.medium, 处理器=[cores=1.0, speed=3.0], ram=3840, 卷=[type=LOCAL, size=4.0, device=/dev/sdb, bootDevice=false, 耐用=假,id=vol-e940020b,类型=SAN,设备=/dev/sda1, bootDevice=true,durable=true],hypervisor=xen, supportsImage=Predicates.and(Predicates.alwaysTrue(),Predicates.or(requiresVirtualizationType(hvm),requiresVirtualizationType(paravirtual)),Predicates.alwaysTrue(),Predicates.alwaysTrue()), 登录用户=root 在 org.jclouds.compute.util.ConcurrentOpenSocketFinder.findOpenSocketOnNode(ConcurrentOpenSocketFinder.java:107) 在 org.jclouds.compute.functions.CreateSshClientOncePortIsListeningOnNode.apply(CreateSshClientOncePortIsListeningOnNode.java:66) 在 org.jclouds.compute.functions.CreateSshClientOncePortIsListeningOnNode.apply(CreateSshClientOncePortIsListeningOnNode.java:40) 在 org.jclouds.compute.callables.SudoAwareInitManager.init(SudoAwareInitManager.java:67) 在 org.jclouds.compute.callables.RunScriptOnNodeAsInitScriptUsingSsh.init(RunScriptOnNodeAsInitScriptUsingSsh.java:64) 在 org.jclouds.compute.callables.RunScriptOnNodeAsInitScriptUsingSshAndBlockUntilComplete.init(RunScriptOnNodeAsInitScriptUsingSshAndBlockUntilComplete.java:77) 在 org.jclouds.compute.callables.RunScriptOnNodeAsInitScriptUsingSshAndBlockUntilComplete.init(RunScriptOnNodeAsInitScriptUsingSshAndBlockUntilComplete.java:38) 在 org.jclouds.compute.strategy.InitializeRunScriptOnNodeOrPlaceInBadMap.call(InitializeRunScriptOnNodeOrPlaceInBadMap.java:61) 在 org.jclouds.compute.strategy.InitializeRunScriptOnNodeOrPlaceInBadMap.call(InitializeRunScriptOnNodeOrPlaceInBadMap.java:34) 在 org.jclouds.compute.strategy.CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.call(CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.java:119) 在 org.jclouds.compute.strategy.CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.call(CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.java:49) 在 java.util.concurrent.FutureTask.run(FutureTask.java:262) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 在 java.lang.Thread.run(Thread.java:745) 1 错误[s]

在 Ambari 服务器中

启动失败并出现错误:java.lang.IllegalStateException: Node in 集群 DynamicClusterImplid=tEESwAU9 失败:2 个并行子节点中的 2 个 任务失败,2 个错误包括:错误调用开始于 AmbariAgentImplid=AS9jZ9AC:org.jclouds.compute.RunNodesException: 运行 1 个节点时出错 组(布鲁克林-gaho-root-ida-ambar-xydd-ambariagent-as9j-as9j) 位置(eu-central-1)图像(ami-6cd3ee71)尺寸(m3.medium) 选项(inboundPorts=[22, 2], scriptPresent=true, userMetadata=名称=***lyn-gaho-root-ida-ambar-xydd-ambariagent-as9j-as9j-jn19, 布鲁克林用户=root,布鲁克林应用程序 ID=XYDdTpTx,布鲁克林应用程序名称=IDA 没有安全组的 Ambari 所有服务, 布鲁克林实体 ID=AS9jZ9AC,布鲁克林实体名称=AmbariAgent:AS9j, 布鲁克林服务器创建日期=2015-08-10-1421, userDataCksum=2f4a740b, subnetId=subnet-003dfb7b)执行失败: 0 个错误[s] 节点故障:1) 节点上的 NoSuchElementException eu-central-1/i-4af7818b:java.util.NoSuchElementException:不能 连接到节点 id=eu-central-1/i-4af7818b 上的任何 IP 地址端口 22, providerId=i-4af7818b,位置=范围=ZONE,id=eu-central-1b, 描述=eu-central-1b,父级=eu-central-1,iso3166Codes=[DE-HE], 组=布鲁克林-gaho-root-ida-ambar-xydd-ambariagent-as9j-as9j, imageId=eu-central-1/ami-6cd3ee71,os=family=rhel,arch=hvm, 版本=6.6, 描述=411009282317/RightImage_RHEL_6.6_x64_v14.2.1_HVM_EBS, is64Bit=true,状态=RUNNING[运行],loginPort=22, 主机名=ip-172-31-17-195,私有地址=[172.31.17.195], 公共地址=[52.28.233.226],硬件=id=m3.medium, providerId=m3.medium, 处理器=[cores=1.0, speed=3.0], ram=3840, 卷=[type=LOCAL, size=4.0, device=/dev/sdb, bootDevice=false, 耐用=假,id=vol-e940020b,类型=SAN,设备=/dev/sda1, bootDevice=true,durable=true],hypervisor=xen, supportsImage=Predicates.and(Predicates.alwaysTrue(),Predicates.or(requiresVirtualizationType(hvm),requiresVirtualizationType(paravirtual)),Predicates.alwaysTrue(),Predicates.alwaysTrue()), 登录用户=root 在 org.jclouds.compute.util.ConcurrentOpenSocketFinder.findOpenSocketOnNode(ConcurrentOpenSocketFinder.java:107) 在 org.jclouds.compute.functions.CreateSshClientOncePortIsListeningOnNode.apply(CreateSshClientOncePortIsListeningOnNode.java:66) 在 org.jclouds.compute.functions.CreateSshClientOncePortIsListeningOnNode.apply(CreateSshClientOncePortIsListeningOnNode.java:40) 在 org.jclouds.compute.callables.SudoAwareInitManager.init(SudoAwareInitManager.java:67) 在 org.jclouds.compute.callables.RunScriptOnNodeAsInitScriptUsingSsh.init(RunScriptOnNodeAsInitScriptUsingSsh.java:64) 在 org.jclouds.compute.callables.RunScriptOnNodeAsInitScriptUsingSshAndBlockUntilComplete.init(RunScriptOnNodeAsInitScriptUsingSshAndBlockUntilComplete.java:77) 在 org.jclouds.compute.callables.RunScriptOnNodeAsInitScriptUsingSshAndBlockUntilComplete.init(RunScriptOnNodeAsInitScriptUsingSshAndBlockUntilComplete.java:38) 在 org.jclouds.compute.strategy.InitializeRunScriptOnNodeOrPlaceInBadMap.call(InitializeRunScriptOnNodeOrPlaceInBadMap.java:61) 在 org.jclouds.compute.strategy.InitializeRunScriptOnNodeOrPlaceInBadMap.call(InitializeRunScriptOnNodeOrPlaceInBadMap.java:34) 在 org.jclouds.compute.strategy.CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.call(CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.java:119) 在 org.jclouds.compute.strategy.CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.call(CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.java:49) 在 java.util.concurrent.FutureTask.run(FutureTask.java:262) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 在 java.lang.Thread.run(Thread.java:745) 1 错误[s] 运行失败 任务开始 2 个节点(并行)(OnIRxglV):2 个并行子节点中的 2 个 任务失败,2 个错误包括:错误调用开始于 AmbariAgentImplid=AS9jZ9AC:org.jclouds.compute.RunNodesException: 运行 1 个节点时出错 组(布鲁克林-gaho-root-ida-ambar-xydd-ambariagent-as9j-as9j) 位置(eu-central-1)图像(ami-6cd3ee71)尺寸(m3.medium) 选项(inboundPorts=[22, 2], scriptPresent=true, userMetadata=名称=***lyn-gaho-root-ida-ambar-xydd-ambariagent-as9j-as9j-jn19, 布鲁克林用户=root,布鲁克林应用程序 ID=XYDdTpTx,布鲁克林应用程序名称=IDA 没有安全组的 Ambari 所有服务, 布鲁克林实体 ID=AS9jZ9AC,布鲁克林实体名称=AmbariAgent:AS9j, 布鲁克林服务器创建日期=2015-08-10-1421, userDataCksum=2f4a740b, subnetId=subnet-003dfb7b)执行失败: 0 个错误[s] 节点故障:1) 节点上的 NoSuchElementException eu-central-1/i-4af7818b:java.util.NoSuchElementException:不能 连接到节点 id=eu-central-1/i-4af7818b 上的任何 IP 地址端口 22, providerId=i-4af7818b,位置=范围=ZONE,id=eu-central-1b, 描述=eu-central-1b,父级=eu-central-1,iso3166Codes=[DE-HE], 组=布鲁克林-gaho-root-ida-ambar-xydd-ambariagent-as9j-as9j, imageId=eu-central-1/ami-6cd3ee71,os=family=rhel,arch=hvm, 版本=6.6, 描述=411009282317/RightImage_RHEL_6.6_x64_v14.2.1_HVM_EBS, is64Bit=true,状态=RUNNING[运行],loginPort=22, 主机名=ip-172-31-17-195,私有地址=[172.31.17.195], 公共地址=[52.28.233.226],硬件=id=m3.medium, providerId=m3.medium, 处理器=[cores=1.0, speed=3.0], ram=3840, 卷=[type=LOCAL, size=4.0, device=/dev/sdb, bootDevice=false, 耐用=假,id=vol-e940020b,类型=SAN,设备=/dev/sda1, bootDevice=true,durable=true],hypervisor=xen, supportsImage=Predicates.and(Predicates.alwaysTrue(),Predicates.or(requiresVirtualizationType(hvm),requiresVirtualizationType(paravirtual)),Predicates.alwaysTrue(),Predicates.alwaysTrue()), 登录用户=root 在 org.jclouds.compute.util.ConcurrentOpenSocketFinder.findOpenSocketOnNode(ConcurrentOpenSocketFinder.java:107) 在 org.jclouds.compute.functions.CreateSshClientOncePortIsListeningOnNode.apply(CreateSshClientOncePortIsListeningOnNode.java:66) 在 org.jclouds.compute.functions.CreateSshClientOncePortIsListeningOnNode.apply(CreateSshClientOncePortIsListeningOnNode.java:40) 在 org.jclouds.compute.callables.SudoAwareInitManager.init(SudoAwareInitManager.java:67) 在 org.jclouds.compute.callables.RunScriptOnNodeAsInitScriptUsingSsh.init(RunScriptOnNodeAsInitScriptUsingSsh.java:64) 在 org.jclouds.compute.callables.RunScriptOnNodeAsInitScriptUsingSshAndBlockUntilComplete.init(RunScriptOnNodeAsInitScriptUsingSshAndBlockUntilComplete.java:77) 在 org.jclouds.compute.callables.RunScriptOnNodeAsInitScriptUsingSshAndBlockUntilComplete.init(RunScriptOnNodeAsInitScriptUsingSshAndBlockUntilComplete.java:38) 在 org.jclouds.compute.strategy.InitializeRunScriptOnNodeOrPlaceInBadMap.call(InitializeRunScriptOnNodeOrPlaceInBadMap.java:61) 在 org.jclouds.compute.strategy.InitializeRunScriptOnNodeOrPlaceInBadMap.call(InitializeRunScriptOnNodeOrPlaceInBadMap.java:34) 在 org.jclouds.compute.strategy.CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.call(CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.java:119) 在 org.jclouds.compute.strategy.CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.call(CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.java:49) 在 java.util.concurrent.FutureTask.run(FutureTask.java:262) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 在 java.lang.Thread.run(Thread.java:745) 1 错误[s]

有什么想法吗??

【问题讨论】:

布鲁克林失败的本质是什么? ***lyn.incubator.apache.org/v/0.7.0-incubating/ops/… 的故障排除概述描述了如何使用“活动”窗格来识别失败的操作及其错误。如果您可以查找此信息并将其添加到您的问题中,这将有助于诊断问题。 我不知道布鲁克林如何使用networkName: subnet-003dfb7b选项的详细信息,但错误说它无法连接到节点的任何地址的端口22(172.31.17.195 , 52.28.233.226)。看起来您正在点击 jclouds 邮件列表中提到的this issue?如果是这样,我们应该在 jclouds 中提出一个适当的 JIRA,以便正确修复它。 啊,我觉得这个问题听起来很熟悉 - 我过去曾报告过它! @IkerAguayo 我很确定我有解决此问题的方法,让我检查一下我的笔记... @IgnasiBarrera 是的,看起来这就是问题所在。您能否在 jclouds 中打开票证以解决问题(请发布 url) @RichardDowner 那太好了! 【参考方案1】:

堆栈跟踪有点密集,但在中间我们可以看到:

could not connect to any ip address port 22 on node

这表明 jclouds 正在尝试连接到新节点,但它无法这样做。

最可能的原因是实例没有正确配置的安全组。

如果给定子网 ID,jclouds 有一个错误会阻止它创建安全组:请参阅 JCLOUDS-987: AWS EC2: if specifying subnet ID, security groups are not created。

您可以通过提前创建一个打开所需端口的安全组来解决此问题 - 这将是端口 22,以及实体所需的任何端口(在本例中为 Ambari)。然后,您可以使用蓝图中的 ***lyn 的 templateOptions 属性将其传递给 jclouds。

例如:

name: IDA Ambari All Services with explicit Security Group
description: This Application is used to build one Ambari Server and a Cluster of Ambari Agents
origin: vendor
location: 
  jclouds:aws-ec2:
    region: eu-central-1
    identity: identity
    credential: credential
    osFamily: RHEL
    osVersionRegex: 6.*
    hardwareId: m3.medium
services:
- type: io.***lyn.ambari.AmbariCluster
  ***lyn.config:
    initialSize: 2
    install.version: 2.1.0
    services:
      - FALCON
    provisioning.properties:
      networkName: subnet-003dfb7b
      templateOptions:
        securityGroupIds: sg-12345678

【讨论】:

以上是关于如何在 Apache ***lyn 的蓝图中使用子网的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Apache ***lyn 和 Chef 安装 Jenkins

使用 REST API 启动 Apache ***lyn 应用程序

蓝图的父子关系

如何使用 Apache jclouds 访问 HP Helion

如何更改蓝图菜单项的默认行为?

在基于Apache Camel蓝图的OSGi包中检测到重复的ServletName