首页 > 解决方案 > 谷歌云计算引擎的一个实例可以有多个外部 IP 地址吗

问题描述

我正在使用谷歌云计算引擎来运行一个小型网络服务器以及其他一些服务器我目前正在使用免费试用版我将在到期时升级到付费帐户但我想在不同的 wan IP 上拥有另一台服务器地址 我知道我可以使用不同的端口并进行转发/重定向,但我的问题是一个实例可以获取多个外部 IP,还是我需要创建/支付另一个实例以获得第二个外部 IP 地址?

标签: google-cloud-platformgoogle-compute-engine

解决方案


是的,您可以创建具有多个外部 IP 的 VM 实例。

查看文档创建具有多个网络接口的实例

默认情况下,VPC 网络中的每个实例都有一个默认网络接口。使用这些说明创建其他网络接口。每个接口都连接到不同的 VPC 网络,从而使该实例可以访问 Google Cloud Platform (GCP) 中的不同 VPC 网络。您不能将多个网络接口附加到同一个 VPC 网络。

并在要求部分:

  • 您只能在创建实例时配置网络接口。
  • 单个实例中配置的每个网络接口都必须附加到不同的 VPC 网络,并且每个接口必须属于一个 IP 范围不与任何其他接口的子网重叠的子网。
  • 在您创建实例之前,多个接口将附加到的其他 VPC 网络必须存在。有关创建其他 VPC 网络的说明,请参阅使用 VPC 网络。
  • 不删除实例就无法删除网络接口。

  • 每个接口都可以选择有一个外部 IP 地址。

我试图创建这样的虚拟机:

  1. 创建自定义 VPC 网络

    $ gcloud compute networks create test-vpc-network-1 --subnet-mode=custom
    $ gcloud compute networks create test-vpc-network-2 --subnet-mode=custom
    
  2. 创建自定义 VPC 子网

    $ gcloud compute networks subnets create test-subnet-1 --network=test-vpc-network-1 --region=europe-west3 --range=172.16.1.0/24
    $ gcloud compute networks subnets create test-subnet-2 --network=test-vpc-network-2 --region=europe-west3 --range=172.16.2.0/24
    
  3. 保留静态外部 IP(可选):

    $ gcloud compute addresses create test-static-ip-1 --region=europe-west3
    $ gcloud compute addresses create test-static-ip-2 --region=europe-west3
    
  4. 创建虚拟机实例:

    $ gcloud compute instances create test-instance-2ip --zone=europe-west3-a --machine-type=n1-standard-1 --network-interface subnet=test-subnet-1,address=34.89.215.180 --network-interface subnet=test-subnet-2,address=35.234.123.210 --tags=test-instance-2ip --image=ubuntu-1804-bionic-v20200430 --image-project=ubuntu-os-cloud --boot-disk-device-name=test-instance-2ip
    

    这是具有 2 个外部 IP 的 VM 实例:

    NAME               ZONE            MACHINE_TYPE   PREEMPTIBLE  INTERNAL_IP            EXTERNAL_IP                   STATUS
    test-instance-2ip  europe-west3-a  n1-standard-1               172.16.1.3,172.16.2.2  XXX.89.XXX.180,XXX.234.XXX.210  RUNNING
    
  5. 不要忘记创建防火墙规则

    $ gcloud compute firewall-rules create test-instance-2ip-vpc-1 --direction=INGRESS --priority=900 --network=test-vpc-network-1 --action=ALLOW --rules=tcp,udp --source-ranges=0.0.0.0/0 --target-tags=test-instance-2ip
    $ gcloud compute firewall-rules create test-instance-2ip-vpc-2 --direction=INGRESS --priority=900 --network=test-vpc-network-2 --action=ALLOW --rules=tcp,udp --source-ranges=0.0.0.0/0 --target-tags=test-instance-2ip
    

    以上规则仅供参考。

另外,请看第 3 方示例

此外,作为一种可能的替代方案,您可以尝试协议转发

您可以设置多个转发规则以指向单个目标实例,从而允许您对一个 VM 实例使用多个外部 IP 地址。您可以在可能只想从一个 VM 实例但通过不同的外部 IP 地址提供数据的情况下使用此功能。这对于设置 SSL 虚拟主机特别有用。


推荐阅读