2017-09-20 8 views
0

私のアプリケーションをBOSHにデプロイし、n個のノードでクラスタ化します。 例2私のアプリケーションでは、manifest.ymlにアプリをデプロイするときに、以下で定義しました。 は、だから、10.244.15.21から始まり、インスタンス与えるとき、次のノードが10.244.15.22で起動:私の各アプリで複数のインスタンスを設定すると、自分のアプリケーション内の他のインスタンスのIPにアクセスする方法

static: - 10.244.15.2 - 10.244.15.20 

だから私のmanifest.ymlに2を、私はXML内の各他のノードのIPアドレスにアクセスする必要がありますファイル。どのように私は動的にXMLファイルでこれを行うことができます。ご意見をお聞かせください。おかげ

例えば、

<parameter name="localMemberHost">127.0.0.1</parameter> 

<members> 
    <member> 
      <hostName>10.244.15.21</hostName> 
      <port>4000</port> 
    </member> 
    <member> 
      <hostName>10.244.15.22</hostName> 
      <port>4000</port> 
    </member> 

</members> 
+0

vmのIPアドレスを取得できる唯一の方法は 'bosh vms'コマンドであると思いますが、これを試してみましたか? –

答えて

0

あなたはERBのジョブテンプレートの評価、およびIPの既知の範囲の組み合わせを使用してこれを実現することができるはず、あなたのサンプルに基づいています。

まず、そのジョブのカウントと一致する特定の範囲のIPをマニフェストに定義します。必要な.21 +の範囲をカバーするには、共有ネットワーク定義の静的な予約を増やす必要があります。次に、ジョブはそれらの静的IPの割り当てを使用します。私は問題のxmlファイルを想定していhttps://bosh.io/docs/networks.html

jobs: 
- name: clustered-job 
    instances: 5 
    templates: 
    - name: jobname 
     release: releasename 
    networks: 
    - name: default 
    static_ips: [10.244.15.21 - 10.244.15.26] <-- you would need to make sure these are reserved in cloud config 

を参照してくださいがあなたの仕事の仕様で「テンプレート」として定義され、これは、利用可能なプロパティを使用してERB評価を有効にするために必要です。 https://bosh.io/docs/jobs.html#templates https://bosh.io/docs/jobs.html#properties

あなたはすべてのクラスタメンバーを定義するためにループして、いくつかの既知の特性を使用します。

<%= spec.networks.default.static_ips %> 

マニフェストに指定されているものをループインジェストします。上の方がマニフェスト全体に対してIPSを与えるか、ちょうどジョブ(私は後者だと思います)を忘れてしまいますので、開始IPを指定するためにジョブのプロパティを追加したいかもしれません。

<% @spec.networks.default.static_ips.each do |static_ip| %> 
    <member> 
      <hostName><%= static_ip %></hostName> 
      <port>4000</port> 
    </member> 
<% end %> 

あなたがループからそれを除外する必要がある場合にも、現在のインスタンスのIPのためのspec.ipを確認することができます。

関連する問題