(我正在使用openstack4j通过REST API与OpenStack交谈)
我想重用一些在我的租户中分配的未分配的浮动IP(分配给新配置的服务器)。但是,似乎@extends('layouts.master')
@section('title', 'Forum team')
@section('content')
<div class="container" id="forum-container">
@foreach($roles as $role)
<div class="col-md-12">
<div class="thread-box">
<div class="thread-title">{{ $role->name }}</div>
@if($role->id)
<div class="forum-body">
<div class="forum-user">
<div class="user">Username <div class="{{ XenioNode\User::find(2)->isOnline() ? 'online' : 'offline' }}"></div></div>
<img src="#" class="img-responsive img-circle" alt="Cinque Terre">
<div class="user-status" style="background-color:blue;">Role name</div>
</div>
<div class="forum-thread-body">
<div class="thread-body">
<p>The user's bio.</p>
</div>
</div>
</div>
@endif
</div>
</div>
@endforeach
</div>
@endsection
操作在分配未使用的浮动IP和从服务器到服务器重新分配之间没有区别。
我想自动化这个过程,但我害怕跟随竞争条件:一个客户端检查特定的IP是免费的,在它设法将它与服务器A关联之前,其他客户端将它与服务器B关联起来。第二个客户端,关联的浮动IP可以在成功关联后的任何后续点中删除。
还有更好的方法吗?
答案 0 :(得分:1)
可能的解决方法是:
其他OpenStack API也存在同样的问题,例如: updating security groups。通常,可以通过向API添加修订计数器来避免这种情况,例如kubernetes (resourceVersion from ObjectMeta)和etcd (modifiedIndex in v2,v3中的mod_revision)这样做。
即使对于实现无种族变化选项的API,大多数人类用户界面可能只会将其用于种族检测而不是避免,因为用户界面会告诉他们有种族和覆盖的内容优先于需要他们每次比赛发生时重试他们的行动。
答案 1 :(得分:0)
所面临的挑战涉及计算服务的浮动IP扩展(现已不推荐使用)的使用,该扩展将浮动IP分配分为两个步骤:分配(/os-floating-ips
端点)和分配(addFloatingIp
服务器操作)。
当前支持的方法是通过Neutron服务来操纵浮动IP,该服务允许在一个请求(POST
至/v2.0/floatingips
)中创建和关联浮动IP。至少从理论上讲,这消除了希望重用浮动IP的客户端将某个客户端同时关联的可能性。如果所有客户都同意使用这种浮动IP分配模式,则可以安全地将未关联的浮动IP作为悬挂实体进行处理。