2012-03-31 13 views
4

Da unsere Systeme wachsen, gibt es immer mehr Server und Dienste (verschiedene Typen und mehrere Instanzen desselben Typs, die kleinere Konfigurationsänderungen erfordern). Wir suchen nach einer "cetralized configuration" -Lösung, die vorzugsweise vorhanden ist und nichts, was wir von scrtach entwickeln müssen. Die Idee ist so etwas wie Service geht hoch, es kennt ein einzelnes Stück Daten (seine Art + Ort + Version + ServiceID oder so ähnlich) und kontaktiert einige zentrale Dienste, die ihm die richtige Konfiguration geben (Datei, Objekt oder was auch immer)). Wenn der Dienst, der online geht, den Konfigurationsdienst nicht finden kann, wird er entweder eine zwischengespeicherte Konfiguration verwenden oder die Initialisierung verweigern (Verhalten sollte wahrscheinlich in den Startparametern angegeben werden, von wem oder was es online bringt) Der Konfigurationsdienst sollte hochverfügbar sein, dh ein Cluster von Servern (ZooKeeper klingt immer noch wie ein perfekter Kandidat) Der Dienst sollte vorzugsweise das Konzept der Vererbung unterstützen, indem er eine globale Konfigurationsdatei für den Diensttyp und dann spezifische Überschreibungen oder Erweiterungen für jede Instanz der Service durch seine ID. Außerdem sollte es so etwas wie die Versionierung von Konfigurationen unterstützen, so dass unterschiedliche Konfigurationen desselben Diensttyps für verschiedene Versionen beibehalten werden können, da wir uns mehr auf die Seite-an-Seite-Einführung von Diensten verlassen wollen. Die andere Seite der Gleichung ist, dass es ein Konfigurations-Admin-Tool gibt, das sich mit demselben zentralen Konfigurationsdienst verbindet, und alle Konfigurationen basierend auf den obigen Anforderungen überprüfen und aktualisieren kann.Hinzufügen einer zentralen Konfiguration zu unseren Servern

Ich weiß, dass, wenn ich die Kernanforderung von Serivce ziehen Konfig Daten zu haben die Daten zu schieben, kann ich etwas wie Puppet oder Chef, um alles zu verwalten. Ich muss ehrlich sein, ich habe wenig Erfahrung mit diesen beiden Systemen (unser IT-Team hat mehr), aber aus meinen Untersuchungen kann ich sagen, dass es nicht das richtige Werkzeug für diesen Job ist.

Gibt es Systeme, die denen ähneln, die ich oben beschrieben habe?

Antwort

2

Ich habe nur Erfahrung mit selbst gezüchteten Lösungen, daher kann meine Antwort Ihr Problem nicht lösen, kann aber jemand anderem helfen. Wir haben Webserver und SVN-Roboter ziemlich erfolgreich für das Konfigurationsmanagement genutzt. Diese Lösung würde nicht bedeuten, dass Sie "von Grund auf neu entwickeln" müssten, sondern auch keine schlüsselfertige Lösung.

Wir hatten mehrere Web-Server, die ihre Konfigurationen jeweils synchron von einem SVN-Repository aktualisierten. Die Clients würden Anforderungen der Server mit den HTTP-Argumenten /type=...&location=...&version=... stellen. Diese Werte könnten dann in den Ansichten verwendet werden, um die Konfigurationen anzupassen. Wir haben dies sowohl mit Spring XML-Dateien, die gerade geladen wurden, als auch mit Standard-field=value-Eigenschaftendateien gemacht.

Unser System war nur Pull, obwohl wir bei Bedarf einen Pull über JMX auslösen konnten.

Hoffe das hilft etwas.

1

Config4* (von denen ich der Betreuer bin) kann Sie mit den meisten Funktionen, die Sie suchen out-of-the-box, und ich vermute, Sie könnten leicht bauen die restlichen Fähigkeiten darüber hinaus.

Lesen Sie die Kapitel 2 und 3 des Handbuchs "Erste Schritte", um ein Gefühl für die Fähigkeiten von Config4 * zu bekommen (keine Sorge, sie sind sehr kurze Kapitel). Dadurch können Sie entscheiden, wie gut Config4 * Ihren Anforderungen entspricht.

Links zu den PDF- und HTML-Versionen der Handbücher finden Sie am Ende der Hauptseite der Config4*-Website.

Verwandte Themen