DigitalOcean 中的浮动 IP 是什么?

x33g5p2x  于2022-03-02 转载在 其他  
字(2.7k)|赞(0)|评价(0)|浏览(335)

DigitalOcean 的浮动 IP 是一种保留与您的计算资源无关的公共 IP 地址的方式。它们提供了一种在您的资产之间快速重新路由流量的方法,而无需等待 DNS 更改生效。

诸如 Droplets 之类的计算组件带有自己的 IPv4 地址,便于公共访问。当您销毁 Droplet 时,您将失去对其 IP 的权利。该地址将返回到新的 Droplet 创建可用的池中。

只要您需要,浮动 IP 就是您的。为您分配 IP 后,它可以附加到任何符合条件的资源或在您的帐户中休眠以备将来使用。销毁浮动 IP 所针对的 Droplet 将使地址在您的帐户中可用,仅删除在创建 Droplet 时分配的特定于 Droplet 的 IP。

浮动 IP 的用途

浮动 IP 模式让您可以更接近地模拟云中的本地网络。如果您运行自己的数据中心,您会从您的 ISP 获得一个 IP 地址块,您可以将其分配给位于您网络入口点的网关路由器。然后,您可以自由更改路由器背后的基础设施,而无需更改外部用户需要知道的 IP 地址。

浮动 IP 为您的 DigitalOcean 帐户中的资源提供了类似的易用性。将您的外部 DNS 指向浮动 IP 而不是特定的 Droplet IP 可以让您替换单个 Droplet,同时保留 DNS 记录。

一种常见的用例是与高可用性部署相结合的故障转移方案。您可以通过切换浮动 IP 以引用您帐户中的另一个目标来快速将流量从遇到问题的 Droplet 路由出去。当您的监控服务检测到中断时,您可以使用DigitalOcean API通过切换浮动 IP 的目标来实现自动故障转移。

创建浮动 IP

浮动 IP 可以通过 DigitalOcean 控制面板或API创建。您的帐户最初仅限于三个浮动 IP;达到上限后,必须通过控制面板发起更多请求。

目前正在使用的地址是免费的。如果您创建浮动 IP 但将它们留在您的帐户中处于休眠状态,您将需要支付每月 4 美元或每小时 0.00595 美元的费用。由于全球 IPv4 地址短缺,收取此费用。只有在您的使用量超过 1 美元后才会向您收费,因此您在创建和重新分配地址时无需担心短暂的分离期。

要创建浮动 IP,请登录您的控制面板帐户,然后单击左侧栏中的“网络”链接。选择“浮动 IP”选项卡。使用下拉菜单选择要将流量路由到的 Droplet。接下来,按“分配浮动 IP”按钮生成新地址。

对该 IP 地址的请求将被路由到选定的 Droplet。您可以通过返回浮动 IP 页面,单击 IP 旁边的“更多”按钮,然后选择“重新分配”或“取消分配”来更改目标。取消分配 IP 将开始为未使用的预留计费。

使用 API

要使用 DigitalOcean API 创建浮动 IP,请向端点发送POST请求。api.digitalocean.com/v2/floating_ips请参阅文档为您的帐户生成和提供正确的访问凭据。

该请求需要包含一个 JSON 有效负载,用于标识要定位的 Droplet:

{
    “droplet_id”:1234567890
}

您可以通过向端点发出GET请求来发现所有 Droplet 的 ID。api.digitalocean.com/v2/droplets

要更改浮动 IP 的目标,您必须使用特殊actions端点:

POST api.digitalocean.com/v2/floating_ips/123.456.789.012/actions

浮动 IP 需要通过其 IPv4 地址来识别,如上面的 URL 所示。包括一个 JSON 有效负载,用于选择assign操作并指定要定位的液滴 ID:

{
    "droplet_id": 1234567890,
    "type": "assign"
}

要取消分配 IP,请使用相同的端点,但替换unassign为typeJSON 有效负载中的字段。您可以省略该droplet_id字段。

管理出站流量

即使分配了浮动 IP,Droplet 仍将使用其特定 IP 地址进行出站流量。这意味着第三方 API 等外部服务将继续通过其自己的 IP 地址而不是浮动 IP 地址来识别您的 Droplet。

您可以通过更新 Droplet 网络配置中的路由表来使出站流量使用浮动 IP。首先在 Droplet 中使用 DigitalOcean 的元数据 API来发现其锚 IP 地址。锚点 IP是流量在 Droplet 与其浮动 IP 之间传输时流经的 IP 地址。

# Returns the Anchor IP of the Droplet this command is executed on
curl -s http://169.254.169.254/metadata/v1/interfaces/public/0/anchor_ipv4/gateway

接下来使用ip route命令来修改你的 Droplet 的默认路由:

# Remove the existing default route (Droplet-specific IP)
ip route del 0/0;

# Set the Anchor IP as the new default route
ip route add default via <anchor IP> dev eth0

现在,来自您的 Droplet 的流量似乎来自其分配的浮动 IP。当您与使用自动确定的回调 URL 随后将确认发送回您的系统的服务进行通信时,这很有用。该过程确保回调将被发送到当前暴露您的 Droplet 的浮动 IP。

限制

浮动 IP 当前仅限于 IPv4 地址。DigitalOcean 尚未公开宣布任何提供 IPv6 浮动 IP 的计划。

由于浮动 IP 分配给特定的数据中心区域,它们只能针对同一数据中心内的 Droplet。NYC1 中的浮动 IP 无法映射到 AMS1 中的 Droplet。

只有 Droplet 可以成为浮动 IP 的目标。无法使用托管 Kubernetes 节点或任何其他资源来引用它。对于 Kubernetes,负载均衡器是最接近的替代方案,可让您在节点之间路由流量。负载均衡器带有自己的公共 IP 地址,也不能用作浮动 IP 目标。

所有浮动 IP 一次使用一个 Droplet——它们不能同时映射到多个 Droplet,因为它们没有活动的路由组件。它们也不为反向 DNS 提供 PTR 记录,也不能用于SMTP 流量。

结论

浮动 IP 是一种机制,您可以通过它在 DigitalOcean 帐户中切换可公开访问的静态 IP 地址的目标。浮动 IP 本身永远不会更改其地址,但您可以随时动态切换它指向的 Droplet。

将您的 DNS 记录指向浮动 IP 而不是特定的 Droplet 始终是一个好主意。由于浮动 IP 在使用时是免费的,因此当它们在故障期间为您提供更大的灵活性时,几乎没有理由不这样做。即使您不是全神贯注于高可用性,浮动 IP 也可以通过让您临时将流量重定向到维护页面或另一个 Droplet 上的只读副本来帮助您管理升级窗口和服务器重启。

相关文章