gpt4 book ai didi

google-compute-engine - 如何在 Google Compute Engine 中以编程方式获取实例 IP?

转载 作者:行者123 更新时间:2023-12-01 09:24:33 26 4
gpt4 key购买 nike

我需要在我的应用程序中连接到 mongodb 的副本集,因此我需要在代码的配置中提供副本集的 mongo 实例的 IP 地址。 Ips 是短暂的,因此它们可能会在未来发生变化。如何以编程方式获取 mongo 实例的 ip,以便可以通过配置推断它们,而无需在每次 ip 更改时更新代码。

或者是将ips放在代码中并手动更新的方法?

我认为这是这样做的方法: https://cloud.google.com/compute/docs/metadata#querying

但是这个网址 http://metadata.google.internal/computeMetadata/v1/似乎不存在我无法用它查询任何东西......

我可以使用 gcloud compute instances list 从代码中执行 shell 命令并手动过滤以获取 ips,但我想知道是否有更简洁的方法。

我的应用程序将在与 mongo 实例不同的实例中运行。

最佳答案

您提到您的应用在单独的实例中运行,但您没有提及网络。所以,我的建议:

如果您的应用实例和 mongo 实例在同一个专用网络中运行:

  • 请注意,默认情况下,GCE 会将您私有(private)网络中的所有实例名称解析为相应的私有(private) IP。例如,如果您有一些实例:instance-1instance-2instance-3,并且它们都是 on相同的网络,那么您的应用可以简单地连接到名称而不是 IP(这是您在创建实例时选择的名称)。
  • 如果您的任何 mongo 实例重新启动并更改其私有(private) IP,您的实例名称将继续解析为当前(可能不同)私有(private) IP,因此您不必担心。

如果您的应用实例和 mongo 实例在同一个专用网络中运行:

  • 您始终可以将您的公共(public)临时 IP 设为静态 IP。只需转到您的 VM 实例详细信息页面,找到“外部 IP”部分,单击“编辑”,选择“新静态 IP 地址”,并将其附加到您的服务器。它们是免费的,以防万一,只要它们被使用。
  • 即使您的 mongo 实例中可能有静态 IP,我还是建议您设置一个指向这些静态 IP 的域,这样您的应用程序就可以指向这些域。这对以后非常有用,以防您有一天需要移动 mongo 服务器,您可以在域中设置不同的 IP,而您的应用程序甚至不会注意到。 (当然,在您迁移 mongo 数据之后...)

在这两种情况下,您都应该始终使用名称来配置 mongo 副本集(而不是 IP),原因与上述相同:如果您的实例重新启动并更改其 IP,您的 mongo RS在重新配置之前无法使用。

希望对你有帮助。

关于google-compute-engine - 如何在 Google Compute Engine 中以编程方式获取实例 IP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27454141/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com