Ich habe einen Puppenmeister und Sklaven in verschiedenen Rechenzentren. Die Latenz zwischen ihnen beträgt ~ 40ms. Wenn ich "Puppet Agent - Test" auf einem Slave ausführe, um das neueste Manifest anzuwenden, dauert es ~ 360 Sekunden, bis es fertig ist.
Nach einigem Graben kann ich sehen, dass die Hauptursache für die Verlangsamung die Dateiübertragung ist. Es scheint, dass es ~ 10 Sekunden dauert, um jede Datei zu übertragen. Die Dateien sind nur klein (Konfigurationsdateien), daher kann ich nicht verstehen, warum sie so lange dauern würden.
Dies ist ein Beispiel für eine Datei in meinem Manifest:
file { "/etc/rsyncd.conf" :
owner => "root",
group => "root",
mode => 644,
source => "puppet:///files/rsyncd/rsyncd.conf"
}
Puppet-Profiler laufen Ich sehe das:
10.21s - File[/etc/rsyncd.conf]
Es scheint auch, dass ich nicht mehr als einen Server gleichzeitig mit Puppet aktualisieren kann. Wenn ich zwei Server gleichzeitig betreibe, dauert die Puppe doppelt so lange.
Ich habe den Puppenmeister von Webrick auf Mischling umgestellt, aber das scheint nicht zu helfen. Dies macht das Bereitstellen von Änderungen schmerzhaft. Eine einfache Konfigurationsänderung kann eine Stunde dauern, bis sie auf allen Servern verfügbar ist.
quelle
Nach meiner Erfahrung würden ältere Versionen von Puppet alle DATEI-Daten serialisieren und DE-serialisieren, während sie sie hin und her übertragen. Und es war besonders schlimm und übertrug große (viele Megabyte) Binärdateien.
Herr Pittman schlägt oben vor, dass dies möglicherweise nicht mehr der Fall ist, aber Sie möchten vielleicht tiefer graben und sehen, ob die Version der Puppe, die Sie ausführen, diese Optimierung aufweist.
Es sieht so aus, als ob die Änderung in Puppet 0.25 eingegangen ist - siehe Fehler 583 ( http://projects.puppetlabs.com/issues/583 ), als sie von xlrpc in Rest konvertiert wurden.
Meine damalige Lösung bestand darin, Puppet zu verwenden, um vorinstallierte rsync-Schlüssel zu drücken, und einen rsync-Daemon zu verwenden, um Dateien (schreibgeschützt) für Endclients bereitzustellen. Rsync kann sehr effizient sein und viele Binärdaten übertragen und aktualisieren.
Überprüfen Sie also Ihre Puppenversionen, aber prüfen Sie auch, ob rsync als Leistungsvergleich für Sie geeignet ist.
quelle
Ich habe das Problem gefunden. Es scheint, dass, obwohl ich meinen Apache so eingerichtet habe, dass Puppetmaster über Passagier ausgeführt wird, die Konfigurationsdatei nie in meine httpd.conf aufgenommen wurde. Mein Puppenspieler führte immer noch die Standardeinstellungen aus. (netstat -anp | grep 8140 zeigte, dass Apache diesen Port nicht verwendete).
Nachdem ich diese Probleme behoben und sichergestellt habe, dass Apache 8140 abhört, dauert es 8 Sekunden, bis meine Puppet-Clients ausgeführt werden (von 380 Sekunden).
quelle
Überprüfen Sie den Kommentar, den ich auf http://projects.puppetlabs.com/issues/3365 hinterlassen habe, um weitere Dateien im Zielverzeichnis zu haben.
Saludos!
quelle