2016-04-08 13 views
4

割り当ては、IPフローティングOpenStackの

が、私は私のテナントに割り当てられ、割り当てられていない浮動IPの一部を再利用したいと思います(私はREST APIを介してOpenStackのために話をするopenstack4jを使用しています) (新しくプロビジョニングされたサーバーに割り当てる)。しかし、addFloatingIpアクションでは、未使用のフローティングIPを割り当ててからサーバーに再割り当てすることに違いはありません。

私はプロセスを自動化したいと思いますが、1つのクライアントのチェックで特定のIPがフリーで、それをサーバーAに関連付ける前に、他のクライアントがサーバーBに関連付けます。関連するフローティングIPは、正常に関連付けられた後の任意の時点で削除することができる。

任意のより良い方法はありますか?このため

+0

私もこのような状況で、今日の困難を取得しています。 私は、あらかじめ割り当てられた浮動ipsを使わないような仕組みを変えることを考えています。 プロビジョニング中にフローティングを作成してサーバーに割り当てると思います。 その後、サーバーを削除するとどうなりますか?割り当てられたフローティングIPがプールに滞留するのを避けるため、フローティングIPを削除することも考えています。これを代替方法として試してみることもできます。 – mehmetozi

+0

これは非常に壊れやすいですが、それは私が理解したように好ましい方法です。問題は、サーバーを削除することでIPを消去できない場合や、Horizo​​nの終了ボタンがクライアントが必要とするように目的のクリーンアップを実行しない場合です。何もせずに(孤立したIPを洗い流すか、再利用する)、遅かれ早かれクォータ/ IPが使い果たされます。言うまでもなく、テナントがIPを割り当てることを許可されていないが、予め割り当てられたセットで動作することが期待される方法で構成された公開スタックインスタンスがある。 –

答えて

1

可能な回避策は以下のとおりです。

  • のみ浮動IPアドレスを削除して作成します。あなたが言うように、これが好ましい方法です。小さなVMによって、使用されていないフローティングIPのクリーンアップが、内部から定期的に発生する可能性があります。しかし、APIクライアントによる外部からのクリーンアップが望ましいはずです。このように、すべてのクライアントはこの機能を統合する必要がありますが、ユーザーが何か重要なものを失っていないことをユーザーが意図していることに注意する必要があります。例:VMを削除するために使用するWeb UIで、関連するフローティングVMも削除する必要があるかどうかを尋ねることができます。 Openstack Heat(テンプレートによるオーケストレーション)は自動的にこれを行います。 CLIクライアントは、VMを削除した後で解放されたリソースを削除することができます。
  • 調整するための同期をサポートし、何かを使用してください。例:etcd、トランザクションをサポートするデータベース(SQLかどうか)、配信を確実に行うことができるキュー(例えば、要求機能を備えたOpenStack Zaqar)。
  • 使用同期のための時間の経過:最後に読んで、変更、時間の特定の量を待っていると誰もが変更を上書きしないことを確認するために、再度お読みください。この変更に時間がかかりすぎる場合は、特定の待ち時間の前に中止してください。変更が上書きされた場合は、別のフローティングIPで再試行してください。多くのコーナーケースが存在するため、これを正しく行うことは困難です。たとえば、負荷が高いと、変更が通過するすべての場所でなくても、isが破棄された後も変更が成功する可能性があります。

他のOpenStackのAPIは、例えば、同じ問題を抱えていますupdating security groups。一般的に、これは、これを行う)の例kubernetes (resourceVersion from ObjectMeta)etcd (modifiedIndex in v2、v3ではmod_revisionのために、APIへのリビジョンカウンタを追加することによって回避することが可能です。

レースフリーの変更のオプションを実装するAPIの場合でも、人間のUIのほとんどは、レースがあったことを示すUIとして、これをレース検出にのみ使用できますが、レースが起こるたびに彼らの行動を再試行する必要があります。

関連する問題