2015-07-06 3 views
5

Im Rahmen einer Plattform-Setup-Orchestrierung verwenden wir unser Python-Paket, um verschiedene Softwarepakete auf einem Cluster von Computern in der Cloud zu installieren.Wie können wir clusterbasierte Software mit einem Koch verbinden?

Wir haben das folgende Szenario:

  1. von vielen Software, einer unserer Software ist Ambari (hilft hadoop Plattform bei der Verwaltung).
  2. funktioniert es wie folgt - 'n' Anzahl der Maschinen-Cluster 1 Ambari-Server berichten.
  3. für jede Cluster Maschine Berichterstattung zu tun, müssen wir Ambari-Agenten auf jedem der Cluster-Maschine und ändern ihre Eigenschaften Datei mit dem Ambari Server es suppposed ist zu berichten, und starten Sie Ambari-Agenten installieren.

was sind wir in der Lage do-- wir bei der Installation Ambari Server und Ambari Agenten separat in unserem Cluster-Rechner mit Hilfe eigenen Koch Kochbücher erfolgreich waren.

was können wir nicht tun-- Wie können wir die ambari-agent-Eigenschaftendatei jeder Maschine so ändern, dass sie auf unsere ambari-Server-IP verweist. Was ist im Allgemeinen eine elegante Möglichkeit, Cluster-basierte Software als Teil der Chef-Orchestrierung zu verkabeln?

Hinweis :. Ambari-Server wird beim Fliegen erstellt und daher wird seine IP während der Laufzeit erhalten.

Ist es möglich? Gibt es Alternativen zum obigen Problem?

Dank

Antwort

1

Dies ist ein Szenario für Chef-server und search.

Sie müssen Ihr Rezept ändern, das ambari Agent installiert, um die IP des ambari Servers dynamisch zu erhalten.

Zuerst führen Sie Rezepte aus, die Ihren ambari Server konfigurieren. Wenn Chef dort erfolgreich ausgeführt wurde, werden einige Informationen über den Knoten an Chef-Server eingefügt, einschließlich der Rezepte und Rollen, die auf diesen bestimmten Knoten angewendet wurden. Sie können zum Chefserver gehen und die Knotenattribute, insbesondere das Attribut "Rezepte", überprüfen.

Jetzt ändern Sie Ihre ambari Agent Rezept. Ich weiß nicht, wie genau die Konfigurationsdatei des Agenten aussieht, aber wir interessieren uns nur für eine Zeile, in der die IP des Masterservers eingestellt ist.

Erstellen Sie eine Vorlage der Konfigurationsdatei und fügen Sie sie dem Kochbuch hinzu. Ersetzen Sie den harcoded Master IP-Wert mit <%= @master_ip %>

Ändern Sie den Ambari Mittel Rezept, so dass es dieser Wert richtig eingestellt ist:

# search for the server node. I expect server node was configured with 
# ambari::server recipe. If not, change it to the appropriate value and 
# don't fortget to escape colons. 
ambari_server_node = search(:node, 'recipes:ambari\:\:server') 

# now create the configuration file on ambari agent node from 
# the previously created template and pass the value for the @master_ip 
# variable 
template '/right/path/on/target/node/config.file' do 
    [...] 
    variables(:master_ip => ambari_server_node['ipaddress']) 
end 
+0

Antwort sehr relevant erscheint und richtet sich unsere Anwendungsfall. – phoenix

2

Wenn Sie einen Koch-Server haben, können Sie eine Suche nach dem Knoten tun, die das Ambari-Server Rezept läuft. Dann verwendest du die IP dieser Maschine. Alternativ können Sie einen DNS-Namen für den ambari-Server verwenden und Ihren DNS-Eintrag so aktualisieren, dass er auf den neuen Server verweist, wenn dieser verfügbar ist.

Weitere Optionen sind mit CONFD mit ETCD oder Konsul verwenden. Jeder würde Ihnen erlauben, Ihren Config Post-Chef mit der IP des Servers zu aktualisieren.

2

Das klingt nach einem perfekten Anwendungsfall für Consul.

Flexibler Schlüssel/Wertspeicher für dynamische Konfiguration, Merkmalsmarkierung, Koordination, Führerwahl und mehr. Lange Abfrage für fast sofortige Benachrichtigung über Konfigurationsänderungen.

Wir fangen damit an, ein Problem zu lösen, das Ihnen sehr ähnelt. Historisch gesehen wurde jede Art von Konfiguration von einer großen Python-Codebase gehandhabt, in die tonnenweise Chefkoch geworfen wurde. Wir haben daran gearbeitet, einige Teile davon durch Consul zu ersetzen.

Die Sache, die der Cluster, um die Sichtbarkeit sprudelt gesendet hat mich beeindruckt war zu sehen, wie schnell Informationen wirklich durch. Ich kann die Bereitstellung von Computern sehen und online gehen, bevor das Control Panel des Cloud-Service dank Consuls healthchecks funktioniert.

Es ist viel mehr als nur als Schlüssel/Wert-Speicher. Es kann auch Service-Discovery durchführen und jede Art von regelmäßiger Healthcheck durchführen, die Sie derzeit durch etwas wie Sensu verfolgen.

Ich empfehle es Check-out.

Hoffentlich ist das eine Art hilfreich. Viel Glück bei den Einsätzen!

Verwandte Themen