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 할당을 사용합니다. 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 %> 

루프가 매니페스트에 지정된 내용을 모두 처리하도록합니다. 위의 경우 전체 매니페스트에 대한 IPS를 제공하거나 작업 (나는 후자라고 생각합니다)을 잊어 버린 것처럼 작업의 속성을 추가하여 시작 IP를 지정할 수도 있습니다. 당신은 루프에서 그것을 제외해야하는 경우

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

또한 현재 인스턴스의 IP에 대한 spec.ip를 확인할 수 있습니다.