google-cloud-platform - 谷歌云计算引擎的一个实例可以有多个外部 IP 地址吗
问题描述
我正在使用谷歌云计算引擎来运行一个小型网络服务器以及其他一些服务器我目前正在使用免费试用版我将在到期时升级到付费帐户但我想在不同的 wan IP 上拥有另一台服务器地址 我知道我可以使用不同的端口并进行转发/重定向,但我的问题是一个实例可以获取多个外部 IP,还是我需要创建/支付另一个实例以获得第二个外部 IP 地址?
解决方案
是的,您可以创建具有多个外部 IP 的 VM 实例。
查看文档创建具有多个网络接口的实例:
默认情况下,VPC 网络中的每个实例都有一个默认网络接口。使用这些说明创建其他网络接口。每个接口都连接到不同的 VPC 网络,从而使该实例可以访问 Google Cloud Platform (GCP) 中的不同 VPC 网络。您不能将多个网络接口附加到同一个 VPC 网络。
并在要求部分:
- 您只能在创建实例时配置网络接口。
- 单个实例中配置的每个网络接口都必须附加到不同的 VPC 网络,并且每个接口必须属于一个 IP 范围不与任何其他接口的子网重叠的子网。
- 在您创建实例之前,多个接口将附加到的其他 VPC 网络必须存在。有关创建其他 VPC 网络的说明,请参阅使用 VPC 网络。
- 不删除实例就无法删除网络接口。
和
- 每个接口都可以选择有一个外部 IP 地址。
我试图创建这样的虚拟机:
创建自定义 VPC 网络:
$ gcloud compute networks create test-vpc-network-1 --subnet-mode=custom $ gcloud compute networks create test-vpc-network-2 --subnet-mode=custom
创建自定义 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
保留静态外部 IP(可选):
$ gcloud compute addresses create test-static-ip-1 --region=europe-west3 $ gcloud compute addresses create test-static-ip-2 --region=europe-west3
创建虚拟机实例:
$ 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
不要忘记创建防火墙规则:
$ 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 虚拟主机特别有用。
推荐阅读
- php - Laravel Spatie 角色和权限:如何更改默认表?
- c# - 将数组拆分为大约等于总和而不重新排列
- algorithm - 最长递增子序列变化动态规划
- c# - Cosmos DB 中是否支持使用 OData 进行分页?
- javascript - 在 React 中,我可以在另一个功能组件的主体中定义一个功能组件吗?
- google-app-engine - 无法匹配 Google App Engine 和 VPC 网络之间的区域
- c# - guflow 错误 ACTIVITY_ID_ALREADY_IN_USE aws
- python - 在 python 中捕获和处理特定异常
- django - Django:重复键值违反了 Postgresql 而不是 SQlite 的唯一约束 -> 为什么?
- flutter - 无效值:只有有效值是 0:1 - Flutter