Sollte ich AWS Elastic Beanstalk oder den Amazon EC2 Container Service (ECS) zum Skalieren von Docker-Containern verwenden?
Habe ich entwickelt, eine Docker basierte Anwendung aus mehreren microservices. Es hat zu konsumieren, Amazon SQS-Nachrichten und verarbeitet Sie. Zuerst wollte ich mit AWS Elastic Beanstalk, aber dann fiel ich über die EC2 Container Service. Jetzt weiß ich nicht welche man zu wählen.
Als jetzt, Elastic Beanstalk unterstützt Multi-Container-Umgebungen. Das ist großartig, weil jeder microservice hat seinen eigenen application-server in einem docker-container. Das nächste problem ist die Skalierung:
Ich weiß nicht, wie die Skalierung Mechanismus funktioniert. Zum Beispiel: ich habe 5 docker-Container in meine Elastic Beanstalk-Umgebung. Jetzt nur noch die fünfte docker-container unter der schweren Last, denn es hat eine riesige Menge von SQS-Nachrichten zu verarbeiten, die anderen vier sind fast im Leerlauf, da brauchen Sie nicht viel CPU-oder vielleicht nicht haben eine Menge von SQS-Nachrichten. Nehmen wir an, die 5. - container läuft JBoss application server. Soweit ich weiß, wird der server nur verbrauchen kann eine begrenzte Anzahl von parallelen Anfragen, auch wenn es genügend CPU/Speicher zur Verfügung.
Wenn der JBoss-Docker container ist nicht in der Lage zu handhaben die Menge der Anfragen, aber es ist genug CPU/Speicher zur Verfügung, natürlich möchte ich, dass automatisch zu starten, eine zweite Andockfenster/JBoss-container auf der gleichen Instanz. Aber was passiert, wenn ich nicht genug CPU/Speicher? Natürlich will ich spin auf eine zweite Instanz, die konfigurierbar ist durch eine auto scaling-Gruppe in EB. Nun eine zweite Instanz startet, aber alle container mit Ausnahme der 5. ist fast im Leerlauf, habe ich natürlich nicht, dass Sie wollen, um zu laichen 4 nicht bei dem zweiten Beispiel zu, das wäre eine Verschwendung von Ressourcen. Nur 5. sollte der spawn und die anderen sollten Maßstab, wie der 5-Skala auf Basis konfigurierbarer Parameter, wie z.B.: CPU - /Arbeitsspeicher - /SQS.
Ich nicht genau weiß, ob Amazon ECS tut, oder ob es überhaupt möglich ist, aber ich finde keine Quelle im internet zu diesem Thema, die im Allgemeinen sagte, Skalierung, basierend auf Instanzen/Container.
InformationsquelleAutor der Frage orbatschow | 2015-04-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
EB vs ECS kommt wirklich unten zu kontrollieren. Wollen Sie die Kontrolle Ihrer Skalierung und Kapazität, oder wollen Sie, dass mehr abstrahiert und stattdessen konzentrieren sich vor allem auf Ihre app. ECS wird Ihnen die Kontrolle, da Sie festlegen, die Größe und die Anzahl der Knoten im cluster, und ob oder nicht die auto-Skalierung verwendet werden sollte. Mit EB, Sie bieten einfach ein Dockerfile und EB kümmert sich um die Skalierung Ihrer Bereitstellung von Anzahl und Größe der Knoten, die Sie im Grunde vergessen können, die Infrastruktur mit der EB-Strecke.
Hier ist die EB-Dokumentation Andockfenster: http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_docker.html
Mit ECS wirst du haben, um die Infrastruktur aufzubauen, bevor Sie beginnen bereitstellen, die das Dockerfile also es kommt wirklich unten zu 1) Ihre Vertrautheit mit der Infrastruktur und 2) Ausmaß der Anstrengungen, die Sie ausgeben möchten auf die Infrastruktur vs die app.
InformationsquelleAutor der Antwort alanwill
Nicht auferstehen ein Totes Frage, aber ich hoffe, das jemand hilft.
Akzeptiert die Antwort nicht klar genug: nach dem, was OP beschrieben, OP will ECS, nicht Multi-Container-Elastic Beanstalk (MCEB). Soweit ich das beurteilen kann, MCEB nie versucht, effizient pack Container in Instanzen. OP fragt in einem Kommentar, "wenn nur einer unter Last, es skaliert nur dieses, oder es tut immer skaliert, bis die Instanzen, und starten Sie alle Behälter, egal unter welcher Belastung Sie sind ?" Und die Antwort ist "der letztere"; MCEB skaliert den Instanzen und startet alle Behälter, egal welche Last, die Sie unter.
Bearbeiten
Nicht die Architektur, die Sie vorstellen.
Wie micro sind Ihre microservices? Wäre es lächerlich, zu jedem von Ihnen, ein t2.nano? Dann machen Sie Ihnen jeweils einen Einzel-container-Docker EB-app - EB-Arbeiter-Anwendungen können Gefahren werden durch die SQS-Nachrichten. Oder verwenden Sie apex.laufen.
Bearbeiten 1/31/18
AWS Fargate scheint ziemlich cool.
InformationsquelleAutor der Antwort Sam H.