Edelsteine/Dienstleistungen für autoskalierender Heroku die dynos und Arbeitnehmer
Möchte ich wissen, ob es irgendwelche guten Lösungen für autoskalierender dynos UND Arbeitnehmer auf Heroku in einer Produktionsumgebung (wahrscheinlich eine andere Lösung für jeden, denn Sie sind ziemlich nicht). Was sind Sie/Unternehmen mit Bezug auf diese?
Fand ich eine Menge von Optionen, aber keiner von Ihnen scheinen wirklich reif für eine Produktionsumgebung.
Es ist Heroscale, die scheinen, um die Einführung einiger Wartezeit, da es nicht lokal ausgeführt, und ich habe auch schon von einigen Ausfallzeiten. Es gibt Modifikationen, die von delayed_jobs, die nicht aktualisiert wurden, für eine lange Zeit, und es gibt einige Probleme mit aktuellen bundlers. Es gibt auch einige alternativen im Zusammenhang zu reque, die scheinen nicht zu handhaben, sehr gut einige HTTP-Ausnahmen, die Ergebnisse in app-Absturz, und andere, die brauchen scheinbar eine immer-laufen Arbeiter der Planung anderer Arbeitnehmer, und vielleicht auch leiden einige HTTP-Ausnahmen Probleme.
Gut. In der Ende. Was verwendet wird, heute, für autoskalierender Heroku die dynos und Arbeitnehmer auf eine Produktionsumgebung mit Rails3?
Vielen Dank im Voraus.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Liefen wir in diese eine Weile her und ich verbrachte ziemlich viel Zeit auf dieser zu meiner großen frustration. Ich werde versuchen, den Stab der springende Punkt. Es gibt mehrere Heroku autoskalierender Lösung, die scheinen auf den ersten Blick anständig.
Dem Beispiel, das bereits mit heroku-autoscaler ist eigentlich für autoskalierender dynos und ist so ziemlich die einzige Lösung gibt, das behauptet, dies zu tun (und es sicherlich nicht tun es auch). Die anderen werden nur ein Anspruch auf autoscale Arbeitnehmer für Sie. Also, konzentrieren wir uns auf das erste. Die autoscalers Sie werden schauen für die Arbeitnehmer hängt davon ab, was man eigentlich mit für Sie hintergrund-Arbeiter z.B. delayed_job, resque. Das sind die häufigsten Hintergrundverarbeitung libs, die Menschen nutzen, so dass die autoscalers wird versuchen, die Haken in einem von Ihnen. Sie können Dinge wie:
Einige von Ihnen arbeiten auf dem Cedar stack einige vielleicht brauchen Sie ein bisschen tweaken. Das problem mit Ihnen allen ist, dass es ist wie der Versuch, ziehen Sie sich aus dem Sumpf an den eigenen Haaren. Nehmen wir hirefire als ein Beispiel (es ist wahrscheinlich die beste der Partie). Es ändert delayed_job so daß die Arbeiter selbst können sich an der Warteschlange und spin-up mehr Arbeiter, wenn nötig, wenn es keine jobs mehr in der Warteschlange, die Arbeiter werden alle geschlossen, sich gegenseitig nach unten. Es gibt mehrere Probleme:
Die Sache, die dieses problem löst, ist eine Arbeiterin, die kontinuierlich ausgeführt, kann es daher überwachen die Warteschlange regelmäßig und können ausführen von jobs, wenn notwendig oder auch spin-up mehr Arbeiter. Aber wenn Sie das tun, sind Sie nicht sparen kein Geld (Sie haben einen worker laufen 24/7 und haben dafür zu bezahlen) und das ist die ganze Prämisse hinter autoscalers auf heroku. Im wesentlichen, wenn Sie nur gelegentliche hintergrund-Verarbeitung zu tun, oder haben Sie hintergrund-jobs, die wahrscheinlich Versagen, sondern den Erfolg wiederholen, oder haben Sie hintergrund-jobs, die nicht brauchen, werden sofort ausgeführt, es gibt keine autoskalierender Bibliothek, die Sie verwenden können, die die Arbeit für Sie.
Hier ist eine alternative. Der Kerl, der schrieb Hirefire, später drehte er ab in eine webapp (Hirefire app), die Essenz davon ist extern überwachen Sie Ihre Heroku Arbeitnehmer/dynos für Sie und spin-up/shut-down-Arbeiter dynos als notwendig. Dies war kostenlos in der beta aber es kostet Geld, weniger als das, was Sie zahlen würde, um laufen ein Arbeiter 24/7, aber immer noch nicht unerheblich, wenn Sie nur brauchen ein paar hintergrund-jobs, die einmal in eine Weile. So oder so ist dies der einzige gangbare Weg, um sicherzustellen, dass Ihr hintergrund-job-Infrastruktur bietet, was Sie wollen (gut, dass und Ihre eigenen Rollen-Lösung, die bedeutet, dass eine Maschine, wie eine EC2-Instanz, wo Sie können einige Skripte, die ping für die heroku-app und spin-up/shut down Arbeitskräfte benötigt - eine nicht-triviale Menge Aufwand).
Nun Hirefire app nicht bieten zu autoscale Ihrem dynos für Sie als gut, er tut dies basierend auf den Haken in der Latenz Ihrer heroku Anfrage-Warteschlange. Allerdings fand ich, dass dies nicht gut funktioniert, vielleicht, wenn Sie sind nah an den Amazon-Rechenzentrum, wo Sie Ihre heroku app tatsächlich lebt (wir waren es nicht), müssen Sie möglicherweise eine andere Erfahrung. Aber für uns ist es unnötig drehte eine ganze Reihe von dynos und würde nie drehen Sie Sie nach unten, egal wie viel ich optimiert die Einstellungen. Können Sie put it down, um die Tatsache, dass es eine beta ist kann es sich verbessert haben, da dann, aber das ist die Erfahrung, die ich hatte.
Lange Geschichte kurz, wenn Sie möchten, autoscale, die Ihre Mitarbeiter verwenden Hirefire app, werden Sie sparen viel weniger Geld als Sie dachten, aber es ist immer noch die Günstigste option. Wenn Sie möchten, autoscale dynos Sie sind im Grunde Pech gehabt. Dies ist nur eine jener Einschränkungen, die Ihr Leben für die mit dem Komfort einer Plattform wie Heroku.
Heroku bietet ein neues add-on namens AdeptScale die ist jetzt nur aus der Beta.
Hier ist der add-on Seite für AdeptScale
Hier ist die ausführliche Dokumentation für AdeptScale
Hier ist das Formular, um sich für Heroku Beta Programm
Hoffentlich wird eine robuste Lösung für autoskalierender Heroku Dynos, wie ich nicht bin noch nicht glücklich mit den derzeitigen Optionen.
Update (2/4/13): ich habe mich für Heroku Beta-Programm zu versuchen, dieses add-on, und Ihre funktionierte wirklich gut für mich. Gelegentlich scaling-up mit dem Verkehr, aber meist sitzen auf die minimale Anzahl der dynos, die ich habe, 2er-set. Es ist stark reduziert, meine Rechnung, und beseitigt sorgen, dass ich vielleicht langsam sein, während der Spitzenzeiten.
Update (3/6/13): link Hinzugefügt, um Heroku ist die Anmeldeseite für Ihre beta-Programm.
Update (4/14/13): Sieht aus wie auto-Skalierung ist aus der Beta. Es funktioniert immer noch wirklich gut für mich.
HireFire.io (Der Dienst, nicht die Open-Source-Projekt) nun können Sie Ihr Neues Relikt Metriken, um die auto-Skalierung Ihrer web-dynos. New Relic ist ein performance-monitoring-tool, das als add-on durch Heroku. Sie haben die freie tier und es ist ausreichend, um mit HireFire.
Können Sie die auto-Skalierung basierend auf:
Neben diesem haben wir uns zu Sprache/framework Agnostiker. Für Arbeiter dynos alles, was Sie tun, um die automatische Skalierung zu arbeiten, um das setup eine JSON-Ende-Punkt an einem bestimmten Pfad in der app, gibt eine sehr einfache JSON-string, der die Größe der Warteschlange (wir bieten günstige, aber nicht erforderlich, Makros für die Ruby-Sprache und einige out-of-the-box-Unterstützung für das Django-apps, aber wie ich schon sagte, es funktioniert für jede Sprache/framework manuell einrichten eines JSON-end - point- es ist sehr einfach). Für web-dynos, können Sie die HireFire Metrik Quelle im Grunde mit jeder Sprache/framework und die oben erwähnten Neuen Relikt-Metrik Quelle für die Sprachen/frameworks, die unterstützt werden durch Neue Reliquie (dies sind gängige Sprachen wie Ruby, Python, Java, etc).
Disclaimer: ich baute HireFire.
Ich versuche zu finden, ein guter Weg, um autoscale dyno zu.
https://github.com/ddollar/heroku-autoscale tut dies, hat aber ein Haftungsausschluss über seine unreife.
Ich habe mir vor kurzem geschrieben, heroku auto scaling-system namens Heroku Vektor:
https://github.com/wpeterson/heroku-vector
Es erlaubt das skalieren mehrere Arten von dynos, basierend auf verschiedenen traffic-Quellen. Es unterstützt derzeit NewRelic ganz und Sidekiq Anzahl der belegten threads. Da der Verkehr geht nach oben oder unten, es wird so skaliert, dass die Anzahl der dynos nach oben oder unten. Es ist ein daemon-Prozess, der ausgeführt werden kann, in seiner eigenen dyno auf Heroku oder anderswo.