Как получить доступ к IP-адресу моего другого экземпляра внутри моего приложения при настройке для нескольких экземпляров

Я собираюсь развернуть свое приложение в BOSH и кластеризовать его с количеством узлов n. Например, 2 Итак, в моем приложении, когда я развертываю приложение в своем manifest.yml, я определил ниже. Итак, он начинается с 10.244.15.21, а следующий узел начинается с 10.244.15.22, когда дают экземпляры: 2 в моем manifest.yml

static: - 10.244.15.2 - 10.244.15.20 

Поэтому в каждом моем приложении мне нужно получить доступ к IP-адресам друг друга внутри XML-файла. Как я могу сделать это динамически в файле xml. Пожалуйста посоветуй. Спасибо

E.g.,

<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>

person Ushani    schedule 20.09.2017    source источник
comment
Я думаю, что единственный способ получить IP-адреса виртуальных машин — это использовать команду bosh vms, вы пробовали ее использовать?   -  person Josh Zarrabi    schedule 24.09.2017


Ответы (1)


На основе вашего образца вы должны быть в состоянии выполнить это, используя комбинацию оценки ERB шаблона задания и известного диапазона IP-адресов.

Сначала определите определенный диапазон IP-адресов в своем манифесте, соответствующий количеству для этого задания. Вам потребуется увеличить статические резервирования в определении общей сети, чтобы охватить необходимый диапазон .21+. Затем задание использует выделение этих статических IP-адресов. см. 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

Я предполагаю, что рассматриваемый XML-файл определен как «шаблон» в вашей спецификации работы, это необходимо для включения оценки ERB с использованием доступных свойств. https://bosh.io/docs/jobs.html#templates https://bosh.io/docs/jobs.html#properties

Вы будете использовать цикл и несколько известных свойств для определения всех членов кластера.

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

Чтобы цикл поглощал все, что указано в манифесте. Возможно, вы захотите добавить свойство для задания, чтобы указать начальный IP-адрес, поскольку я забыл, дает ли выше IPS для всего манифеста или только для задания (я думаю, что это последнее).

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

Вы также можете проверить spec.ip для IP-адреса текущего экземпляра, если вам нужно исключить его из цикла.

person Eddie    schedule 07.11.2017