Puppet: Verwalten (vieler) Apache VirtualHosts

9

Ich lerne mich durch das Konfigurationsmanagement im Allgemeinen und verwende Puppet , um es im Besonderen zu implementieren. Ich habe bereits einige allgemeine Untersuchungen durchgeführt ( auch zu SF ) und erwäge derzeit Apache VirtualHosts.

Wir hosten viele LAMP- Websites (derzeit im Bereich von Hunderten) auf zwei Systemen: einem Apache2 / mod_php- System und einem MySQL- System - im Grunde das Gegenteil einer anderen Frage, die bereits auf SF gestellt wird, wo er viele Server mit jeweils wenigen vhosts verwaltet (wenn nicht wirklich einer, ich weiß es nicht). Ich habe noch keine funktionierende Konfiguration in Puppet zusammengestellt, aber es sollte kein Problem sein, es gibt viele Beispiele und Rezepte.

Zusätzlich zu den offensichtlichen Apache-Konfigurationsdateien (hier kein Problem, denke ich) müsste jeder vhost einige Verzeichnisse erstellen und Berechtigungen überprüfen lassen (z. B. ein Stammverzeichnis für jeden vhost, der eine Dokumentwurzel, ein dediziertes tmp-Verzeichnis, ein dediziertes enthält PHP-Sitzungsdateien (möglicherweise SSL-Zertifikate usw.) auf dem Webserver und ein Benutzer + eine oder mehrere Datenbanken auf dem MySQL-Server.

Das Hinzufügen eines neuen vhost würde Puppet erfordern, um diese zu erstellen. Wenn Sie einen entfernen, müsste Puppet ein Skript ausführen, das Benutzerdaten sichert und dann die Live-Daten von den beiden Servern entfernt, aber auch jeder einzelne Puppet-Agent würde dann die Existenz von überprüfen die Verzeichnisse, die Datenbank, Berechtigungen usw.

Bitten Sie um Probleme, wenn Sie bis zu Hunderte von virtuellen Hosts mit all diesen Überprüfungen ausführen, die bei jedem Puppet-Lauf ausgeführt werden, insbesondere die des Dateisystems (auf dem Webserver), und insbesondere, wenn die Systeme in Zukunft stärker geladen werden? (Nehmen wir an, wir zielen auf den Bereich von 1000 bis 2000 Websites als angemessenes Maximum pro Server ab.)

Gibt es irgendwelche Erfahrungen damit im Internet? Ich habe gegoogelt, aber nichts gefunden, auch weil es bei der Suche nach "Marionette" und "Apache" ein niedriges Signal / Rausch-Verhältnis gibt ...

Luke404
quelle

Antworten:

4

Ich vermute, dass die Verwaltung vieler virtueller Apache-Hosts kein Problem darstellt, aber ich kann es nicht mit Sicherheit sagen. Die akzeptable Leistung wird durch Ihre Geschäftsanforderungen definiert. Nur Sie können entscheiden, ob es schnell genug ist. Hier ist ein anständiger Thread zum Reduzieren der CPU-Auslastung: https://groups.google.com/forum/?fromgroups#!topic/puppet-users/sxtMvCnKnys[1-25]

Um den Thread zusammenzufassen:

  • Erhöhen Sie die Verzögerung zwischen den Puppet Agent-Läufen
  • Planen Sie keine Puppe und verwenden Sie nur Puppet Kick oder Mcollective, um Läufe auszulösen
  • Planen Sie die Apache-Änderungen so, dass sie nur zu bestimmten Zeiten stattfinden.
  • Verwenden Sie zwei verschiedene Umgebungen (Wartung und Produktion), um die Dinge zu verwalten. Halten Sie die Produktion leicht und verwenden Sie die Wartung, um Änderungen vorzunehmen.

Hier ist ein Beispiel für die Verwaltung eines virtuellen Apache-Hosts auf der PuppetLabs-Website: http://docs.puppetlabs.com/learning/definedtypes.html#an-example-apache-vhosts

Das Einrichten und Entfernen der Konfiguration sollte kein Problem sein. Das größte Problem wäre das Entfernen von Datendateien für die Webanwendungen / Websites. Dafür würde ich Shared Storage wie NFS / AFS empfehlen. Wenn Sie keinen gemeinsam genutzten Speicher verwenden, stellen Sie sicher, dass die vom Benutzer generierten Daten intakt bleiben, gesichert oder auf den neuen Server migriert werden.

Ich vermute, dass Sie sich in einer Massenhosting-Situation befinden, wie bei einem Webhosting-Unternehmen. Daher empfehle ich, dass einzelne Site-Namen der Site nicht in Ihr Marionettenmanifest verschlüsselt werden. Zu diesem Zweck empfehle ich die Verwendung von Hiera < http://puppetlabs.com/blog/first-look-installing-and-using-hiera/ . Mit Hiera können Sie die Liste der virtuellen Hosts auf realen Serverzuordnungen auf separate Weise speichern. Sie können Flatfiles oder eine Datenbank mit Hiera verwenden. Leider kenne ich Hiera nicht genug, um Sie beim Einrichten der mehrstufigen Hiera-Datenstruktur zu unterstützen, die Sie möglicherweise benötigen, aber ich kann Sie zumindest in die allgemeine Richtung von Hiera weisen.

Edgester
quelle