0

我刚刚开始使用布鲁克林,我正在尝试从部署蓝图页面中获取示例,该页面完全通过我的 AWS 账户运行。

Maven 构建成功完成,我可以使用正在运行的 Brooklyn页面~/apache-brooklyn-0.7.0-M2-incubating/usage/dist/target/brooklyn-dist上的步骤成功启动 Brooklyn Web UI 。

当我启动蓝图时,我可以在我的 AWS 控制台 UI 中看到所有正在启动的 VM。我还可以看到创建的密钥对和安全组。但是蓝图最终失败了,因为(我相信)布鲁克林无法通过 ssh 进入虚拟机,请参阅下面的第一个日志输出。我假设布鲁克林尝试以某种方式使用创建的密钥对登录虚拟机?

根据位置页面中的信息,我创建了一个~/.brooklyn/brooklyn.properties file并添加了以下配置:

brooklyn.location.jclouds.aws-ec2.identity = MyAwsAccessKeyID
brooklyn.location.jclouds.aws-ec2.credential = MyAwsSecretAccessKey
brooklyn.location.jclouds.aws-ec2.privateKeyFile = /home/username/key4brooklyn.pem

key4brooklyn.pem从 AWS 控制台 UI 创建了文件并重新启动了 Brooklyn,但是蓝图仍然无法正常工作,它创建了 VM,但无法访问 VM,请参阅下面的日志输出。

2015-03-02 23:31:27,295 INFO  Starting MySqlNodeImpl{id=lzJhHxwD}, obtaining a new location instance in JcloudsLocation[aws-ec2:MyAwsAccessKeyID/aws-ec2] with ports [22, 3306]
2015-03-02 23:31:27,369 INFO  Starting NginxControllerImpl{id=QYRLgQPh}, obtaining a new location instance in JcloudsLocation[aws-ec2:MyAwsAccessKeyID/aws-ec2] with ports [22, 8000]
2015-03-02 23:31:27,612 INFO  Resize DynamicWebAppClusterImpl{id=iJNs2ltC} from 0 to 1
2015-03-02 23:31:28,830 INFO  Starting JBoss7ServerImpl{id=MWMGwHXx}, obtaining a new location instance in JcloudsLocation[aws-ec2:MyAwsAccessKeyID/aws-ec2] with ports [22, 9443, 10999, 8443, 8080, 9990]
2015-03-02 23:31:37,870 INFO  Creating VM aws-ec2@MySqlNodeImpl{id=lzJhHxwD} in JcloudsLocation[aws-ec2:MyAwsAccessKeyID/aws-ec2]
2015-03-02 23:31:38,508 INFO  Creating VM aws-ec2@JBoss7ServerImpl{id=MWMGwHXx} in JcloudsLocation[aws-ec2:MyAwsAccessKeyID/aws-ec2]
2015-03-02 23:31:38,983 INFO  Creating VM aws-ec2@NginxControllerImpl{id=QYRLgQPh} in JcloudsLocation[aws-ec2:MyAwsAccessKeyID/aws-ec2]
2015-03-02 23:34:55,349 INFO  Not able to load publicKeyData from inferred files, based on privateKeyFile: tried [/home/username/key4brooklyn.pem.pub] for aws-ec2@MySqlNodeImpl {id=lzJhHxwD}
2015-03-02 23:34:55,353 INFO  Not able to load publicKeyData from inferred files, based on privateKeyFile: tried [/home/username/key4brooklyn.pem.pub] for aws-ec2@JBoss7ServerImpl {id=MWMGwHXx}
2015-03-02 23:34:55,351 INFO  Not able to load publicKeyData from inferred files, based on privateKeyFile: tried [/home/username/key4brooklyn.pem.pub] for aws-ec2@NginxControllerImpl {id=QYRLgQPh}

我正在使用安装了 Oracle Java 7 的 Ubuntu 14.04,它是一个 VirtualBox VM。

4

1 回答 1

1

查看日志输出,问题出在:

2015-03-02 23:34:55,349 INFO  Not able to load publicKeyData from inferred files, based on privateKeyFile: tried [/home/username/key4brooklyn.pem.pub] for aws-ec2@MySqlNodeImpl {id=lzJhHxwD}

privateKeyFile配置密钥需要在两个文件中指定一个id_rsa样式id_dsa密钥对。如果未配置publicKeyFile*.pub ,将自动检测相应的文件。有更好的说明来创建可用的 ssh 密钥。在最新的SNAPSHOT版本中,围绕键(包括快速失败)的更好的错误报告令人困惑,并将包含在M3里程碑版本中。另请注意,该文件必须有一个且只有一个私钥,并且不得包含公钥。有这么多格式很乏味!id_rsa

Brooklyn 仅使用该~/.ssh/id_rsa密钥对或其他配置的密钥对在配置 VM 后设置对 VM 的 ssh 访问。默认情况下,jclouds(我们在幕后使用)将创建一个临时 AWS 密钥对来获得对 VM 的初始访问权限。然后我们将自动添加~/.ssh/id_rsa.pub到虚拟机~/.ssh/authorized_keys(在虚拟机上创建一个用户,默认情况下与运行布鲁克林进程的用户同名)。

您下载的key4brooklyn.pem文件是 AWS 密钥对的私有部分。默认情况下,这不会被使用,因为 jclouds 将创建自己的密钥对。

如果您希望 jclouds 使用您预先存在的密钥对,那么您必须使用以下配置设置:

brooklyn.location.jclouds.aws-ec2.keyPair = MyKeypairName

其中MyKeypairName是根据 AWS 的密钥对的名称。

于 2015-03-09T13:58:53.963 回答