6

这是一个主要关于厨师的问题。当考虑使用Chef控制Amazon VPC内部的节点时,我遇到了一些困难,主要是厨师不容易到达没有外部IP地址的节点。如何使用Chef在VPC内部启动亚马逊EC2实例?

我通过场景#2 http://docs.amazonwebservices.com/AmazonVPC/latest/UserGuide/VPC_Scenario2.html#Case2_Launch_NAT

但是基本教程去,这此超时:

knife ec2 server create -N app-server-1 -f m1.small -i rails-quick-start.pem -r "role[base]" -G WebServerSG -S rails-quick-start -x ubuntu -s subnet-580d7e30 -y -I ami-073ae46e -Z us-east-1d 

我在做什么错?

回答

1

解决方案是建立一个隧道,并将公共可见计算机的某个端口上的ssh隧道连接到云中的所有其他计算机。因此,我的负载均衡器在套接字80上提供http通信量,可通过套接字22访问,并使用套接字2222,2223,2244 ...将ssh隧道传输到非公有云实例。在负载均衡器(或任何公共实例)运行:

ncat --sh-exec "ncat PRIVATE.SUBNET.IP 22" -l 2222 & 

例如:

ncat --sh-exec "ncat 10.0.1.1 22" -l 2222 & 
1

为了刀能够与服务器通话,您可能需要设置VPN。如果您的VPC已经通过VPN连接到您的本地网络,那么它应该可以工作,但如果没有,您可能需要运行OpenVPN服务器或类似的东西。

您还可以设置服务器在其他两个方面:

  1. 创建EC2实例,让它启动。然后对它运行刀靴。
  2. 使用适当的用户数据创建一个EC2实例,并使用cloud-init进行设置(如果您运行的是包含cloud-init的ubuntu)。
+0

我想具体情况2虽然...有没有一种方式来使用与亚马逊VPC厨师,没有额外的硬件,只有NAT和端口转发? – 2012-04-24 22:40:29

+0

如果你的服务器可以连接到互联网,那么你应该没问题。如果没有,您需要在VPC内部设置一个Chef服务器,并将您的cloud-init脚本指向它。 VPC可能相当复杂,这取决于您的服务器是在“公共”子网还是“私有”子网。 – 2012-04-27 16:00:43

0

需要有一个弹性IP,以获得一个公网IP的关联,以实例的方式轻松访问,然后通过EIP执行所有引导和SSH活动。

+1

并非如此,您可以配置实例而无需为其分配公共IP。首先使用VPC的原因之一是在所有节点上都没有公共地址。 – 2012-07-15 12:43:39