【问题标题】:Assign openstack floating IP while making sure it will not be removed from other server分配openstack浮动IP,同时确保它不会从其他服务器中删除
【发布时间】:2016-07-29 13:50:20
【问题描述】:

(我正在使用 openstack4j 通过 REST API 与 OpenStack 对话)

我想重复使用在我的租户中分配的一些未分配的浮动 IP(分配给新配置的服务器)。但是,addFloatingIp 操作似乎在分配未使用的浮动 IP 和在服务器之间重新分配它之间没有区别。

我想自动化这个过程,但我害怕出现以下竞争条件:一个客户端检查特定 IP 是否空闲,在它设法将它与服务器 A 关联之前,其他客户端将它与服务器 B 关联。从第二个客户端,关联的浮动IP可以在关联成功后随时移除。

有没有更好的办法?

【问题讨论】:

  • 我现在也遇到了这种情况。我正在考虑改变机制,比如不使用预分配的浮动 ips。我想在配置时创建一个浮动并将其分配给服务器。那么什么时候删除服务器呢?为了避免分配的浮动 ip 留在池中,我想也删除该浮动 ip。您也可以考虑尝试将其作为替代方法。
  • 这非常脆弱,但据我了解,这是首选方式。问题是自动删除服务器可能无法清理 IP(或它拥有的任何其他相关资源),而且 Horizo​​n 中的终止按钮不会执行所需的清理,因此客户端需要这样做。如果不采取任何措施(清理滞留 IP 或重新使用它们),您迟早会用完配额/IP。更不用说,有些 openstack 实例的配置方式是租户无权分配 IP,但应使用预先分配的 IP 集。

标签: cloud openstack floating-ip


【解决方案1】:

可能的解决方法是:

  • 仅删除和创建浮动 IP。正如您所说,这是首选方式。小型虚拟机可以定期从内部清理不再使用的浮动 IP。但应该首选由 API 客户端从外部进行清理。因此,每个客户端都应该集成这个功能,但是必须注意这是用户的意图,至少他们会丢失一些重要的东西。示例:用于删除 VM 的 Web UI 可能会询问它是否也应删除关联的浮动 VM。 Openstack Heat(通过模板进行编排)会自动执行此操作。 CLI 客户端可以在删除 VM 后提供删除释放的资源。
  • 使用支持同步的东西来协调。示例:etcd、具有事务支持的数据库(SQL 与否)、可以确保交付只完成一次的队列(例如具有声明功能的 OpenStack Zaqar)。
  • 使用时间流逝进行同步:读取、更改、等待特定时间量,最后再次读取以检查是否没有人覆盖更改。如果此更改花费的时间过长,请在特定等待时间之前中止。如果更改被覆盖,请使用不同的浮动 ip 重试。这很难做到正确,因为有很多极端情况,尤其是在足够快地正确中止的情况下,可能会导致失败。例如,如果并非更改经过的每个地方都确保不会发生这种情况,那么高负载可能会在中止后很长时间内使更改成功。

其他 OpenStack API 也有同样的问题,例如updating security groups。一般来说,这可以通过向 API 添加修订计数器来避免,例如 kubernetes (resourceVersion from ObjectMeta) 和 etcd (modifiedIndex in v2,v3 中的 mod_revision)这样做。

即使对于实现无种族更改选项的 API,大多数人类 UI 也可能仅将其用于种族检测而不是避免,因为告诉他们存在种族并且它覆盖的 UI 比需要的 UI 更受欢迎他们在每次比赛发生时重试他们的动作。

【讨论】:

    【解决方案2】:

    所涉及的挑战涉及计算服务的浮动 IP 扩展的使用(现已弃用),该扩展将浮动 IP 分配分为两个步骤:分配(/os-floating-ips 端点)和分配(addFloatingIp 服务器操作)。

    目前支持的方式是通过 Neutron 服务来操作浮动 IP,该服务允许在一个请求中创建和关联浮动 IP(POST 到 /v2.0/floatingips)。至少在理论上,这消除了希望重用浮动 IP 的客户端将一个与其他客户端同时关联的可能性。如果所有客户端都同意使用这种浮动 IP 分配模式,则未关联的浮动 IP 可以安全地作为悬空实体处置。

    【讨论】:

      猜你喜欢
      • 2020-11-11
      • 1970-01-01
      • 1970-01-01
      • 2018-06-07
      • 1970-01-01
      • 1970-01-01
      • 2016-04-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多