如何将静态IP设置为托管在Google Compute Engine实例上的VM

时间:2015-09-17 15:36:36

标签: virtual-machine virtualbox google-compute-engine

我想知道是否有办法为GCE VM实例(作为VM主机)上托管的虚拟机(VirtualBox)设置静态IP地址。

我想在我的GCE VM实例上运行两个VirtualBox VM,我想公开访问它们。

2 个答案:

答案 0 :(得分:3)

是的,您可以这样做,但您还应该考虑是否需要在另一个虚拟机(GCE VM)内运行一个虚拟机(VirtualBox)的额外开销。直接在GCE VM上运行会更高效,您可以通过Google Cloud Platform API轻松创建/销毁/控制这些VM。

此外,如果您已经在使用Vagrant等VirtualBox虚拟机的自动化框架,请注意Vagrant natively supports GCE VMs,因此只需对配置进行一些更改,即可使用Vagrant创建/像本地VirtualBox虚拟机一样轻松地修改/连接/销毁您的GCE虚拟机。

作为静态外部IP的替代方案,请考虑使用域名映射到您的实例的短暂外部IP。您可以使用Google Cloud DNS来管理DNS映射。

有关静态外部IP的更多信息,请参阅docs

  

静态外部IP地址

     

如果您需要分配给项目的静态外部IP地址并且在明确释放之前一直存在,则可以保留新的静态外部IP地址或将短暂的外部IP地址提升为静态外部IP地址。将gcloud computeaddresses create命令一起使用,或对相应的区域地址集合发出PUT请求以保留静态外部IP地址。

     

分配给实例的静态外部IP地址是区域资源,您必须在创建地址时选择IP地址所属的区域。

     

[...]

     

限制

     

静态外部IP地址一次只能由一个资源使用。您无法为多个资源分配静态外部IP地址。

     

除非将IP地址与保留给该项目的静态外部IP地址列表进行比较,否则无法判断IP地址在分配给资源后是静态还是短暂的。使用addresses list子命令查看项目可用的静态外部IP地址列表。

请注意,静态外部IP也附带一些cost

  

IP地址定价

Type                                                            Price/Hour

Static IP address (assigned but unused)                           $0.01
Static IP address (assigned and in use)                         No charge
Ephemeral IP address (attached to instance or forwarding rule)  No charge

答案 1 :(得分:1)

我分两步解决了这个问题:

首先删除当前可能的ephimeral ip配置:

gcloud compute instances delete-access-config <instance> --access-config-name "External NAT"

其中<instance>是您要更新的实例的名称,而外部NAT 是配置的名称,由于其默认值,它可能具有该值。你可以检查它运行:

gcloud计算实例描述--zone = us-west1-a

并添加静态

如果要绑定静态地址,可能要将其绑定到DNS地址,请执行类似这样的操作

gcloud compute instances add-access-config <instance> --access-config-name="External NAT" --address=xxx.xxx.xxx.xxx

请务必将--zone附加到任何 gcloud 命令,以避免任何歧义。您可以从项目中的有效地址配置中获取address,您可以这样获得:

gcloud compute addresses list

不要使用NAME,而是使用ADDRESS。您应该在实例的同一区域中选择一个地址。附上地址后,您会看到在最后一个查询的STATUS字段中,它会显示 IN USE

Et瞧!