(我使用openstack4j通过REST与OpenStack对话)
我想重用在我的租户中分配的一些未分配的浮动IP(分配给新提供的服务器)。但是,似乎addFloatingIp操作在分配未使用的浮动IP和将其从服务器重新分配到服务器之间没有任何区别。
我想自动化这个过程,但我担心以下竞争条件:一个客户端检查特定IP是空闲的,在它设法将它与服务器A相关联之前,另一个客户端将它与服务器B相关联。从第二个客户端的角度来看,关联的浮动IP在成功关联后可以在以后的任何一点被删除。
还有更好的办法吗?
发布于 2018-10-15 10:10:12
问题中的挑战涉及计算服务的浮动IP扩展(现在已被废弃)的使用,该扩展将浮动IP分配分为两个步骤:分配(/os-floating-ips端点)和分配(addFloatingIp服务器操作)。
当前支持的方法是通过中子服务操作浮动in,该服务允许在一个请求中创建和关联浮动in (POST到/v2.0/floatingips)。这至少在理论上消除了这样的可能性,即客户端希望重用浮动IP时,会同时使用其他客户端关联的一个IP。如果所有客户都同意使用这种浮动IP分配模式,则非关联浮动IP可以安全地作为悬空实体处理。
发布于 2017-09-01 14:34:33
解决这一问题的可能办法是:
其他OpenStack API也有同样的问题,例如更新安全组。通常,可以通过向API添加修订计数器来避免这种情况,例如库伯奈特斯(resourceVersion,ObjectMeta)和modifiedIndex in v2,v3中的mod_revision )。
即使对于实现无种族更改选项的API,大多数用于人类的UI也可能只用于种族检测,而不用于回避,因为用户界面告诉他们存在种族,它覆盖的内容比要求他们每次发生种族时都要重试其操作的UI更可取。
https://stackoverflow.com/questions/36497218
复制相似问题