2017-09-20 7 views
0

Je vais déployer mon application dans BOSH et la mettre en cluster avec n nombre de nœuds. Par exemple, 2 Dans mon application, lorsque je déploie l'application dans mon manifeste.yml, j'ai défini ci-dessous. Il commence à 10.244.15.21 et nœud suivant commence dans 10.244.15.22 lorsque des instances: donner 2 dans mon manifest.ymlComment accéder à l'adresse IP de mon autre instance dans mon application lors de la configuration pour plusieurs instances

static: - 10.244.15.2 - 10.244.15.20 

Donc, dans mon chaque application que je dois accéder aux adresses IP des autres noeuds dans un XML fichier. Comment puis-je le faire dynamiquement dans un fichier XML? Veuillez nous conseiller Merci

Par ex,

<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

Je pense que la seule façon dont vous pouvez obtenir les adresses ip de la vm est avec la commande 'bosh vms', avez-vous essayé d'utiliser cela? –

Répondre

0

Basé sur votre échantillon, vous devriez être en mesure d'y parvenir en utilisant la combinaison de l'évaluation ERB du modèle de travail, et une gamme d'adresses IP connue.

Commencez par définir une plage spécifique d'adresses IP dans votre manifeste correspondant au nombre de tâches correspondant à ce travail. Vous devrez augmenter les réservations statiques dans la définition de réseau partagé pour couvrir la plage .21 + dont vous avez besoin. Ensuite, le travail utilise un allotissement de ces adresses IP statiques. see 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 

Je suppose que le fichier xml en question est défini comme un « modèle » dans votre description de travail, cela est nécessaire pour permettre l'évaluation ERB en utilisant les propriétés disponibles. https://bosh.io/docs/jobs.html#templates https://bosh.io/docs/jobs.html#properties

Vous allez utiliser une boucle et quelques propriétés connues pour définir tous les membres du cluster.

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

Pour effectuer l'acquisition de boucle tout ce qui est spécifié dans le manifeste. Vous voudrez peut-être ajouter une propriété pour le travail pour spécifier l'IP de départ, car j'oublie si ci-dessus vous donne l'IPS pour l'ensemble du manifeste, ou juste le travail (je pense que c'est le dernier).

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

Vous pouvez également vérifier spec.ip pour l'IP de l'instance actuelle si vous devez exclure de la boucle.