Warum kann nicht mein ECS service registrieren, verfügbare EC2-Instanzen mit meinem ELB?
Ich habe eine EC2-Start-Konfiguration, baut die ECS optimiert AMI. Ich habe eine auto scaling-Gruppe, die sicherstellt, dass habe ich mindestens zwei Instanzen zu allen Zeiten. Schließlich habe ich einen load-balancer.
Ich versuche zu schaffen, ein ECS-service, welches meine Aufgaben innerhalb der Instanzen, die in der load balancer.
Nach dem Lesen der Dokumentation für die ECS-load-balancing, es ist mein Verständnis, dass mein ASG sollte nicht automatisch zu registrieren, mein EC2-instances mit der ELB, da ECS übernimmt. So, mein ASG ist nicht festgelegt, ein ELB. Ebenso, mein ELB hat keine eingetragene EC2-Instanzen.
Wenn ich mein ECS service, wähle ich den ELB und auch wählen Sie die ecsServiceRole. Nach dem erstellen der Dienst, den ich nie sehen keine Instanzen verfügbar in der ECS-Instanzen tab. Der Dienst kann auch nicht gestartet werden alle Aufgaben, mit sehr Allgemeinen Fehler ...
service war nicht eine Aufgabe, da Sie die Ressourcen konnte nicht gefunden werden.
Ich habe dies für etwa zwei Tage jetzt und kann nicht scheinen, um herauszufinden, welche Konfigurations-Einstellungen sind nicht richtig konfiguriert. Hat jemand irgendwelche Ideen, was könnte die Ursache sein nicht zu arbeiten?
Update @ 06/25/2015:
Glaube ich, dass dies etwas zu tun mit der ECS_CLUSTER
Benutzer-Daten-Einstellung.
In meinem EC2 auto scaling-Konfiguration starten, wenn ich lassen Sie die Benutzer die Dateneingabe komplett leer, wie die Instanzen erstellt werden, die mit einem ECS_CLUSTER
Wert "default". Wenn dies geschieht, sehe ich eine automatisch erstellte cluster mit dem Namen "default". In diesem Standard-cluster, sehe ich die Instanzen und können sich Aufgaben mit der ELB wie erwartet. Mein ELB Gesundheits-check (HTTP) geht einmal die Aufgaben sind registriert mit der ELB und alles gute in der Welt.
Aber, wenn ich das ändern ECS_CLUSTER
Einstellung etwas Brauch ich nie einen cluster erstellt, mit diesem Namen. Wenn ich manuell ein cluster erstellen mit den Namen, die Instanzen nie sichtbar innerhalb der cluster. Ich kann nicht immer registrieren Aufgaben, die mit dem ELB in diesem Szenario.
Irgendwelche Ideen?
Ja, alles wird mit der gleichen VPC-Subnetz. Der ELB Gesundheits-check ist HTTP, die, wenn ECS Register-Container mit meinen Instanzen korrekt funktioniert. Ich bin nach dem ECS-load-balancing-Dokumentation, die besagt, überspringen die Registrierung von Instanzen mit der ELB, da ECS übernimmt. Ich denke das Thema ist mit der
ECS_CLUSTER
Benutzer-Daten-Einstellung. Wenn ich lassen Sie es als Standard, ich sehe eine automatisch angelegte "default" cluster, in denen ich sehen kann, die Instanzen und kann register Aufgaben. wenn ich ändern Sie ihn auf etwas Brauch, sehe ich nicht ein cluster erstellt wird, und können nicht registrieren Aufgaben.InformationsquelleAutor Ryan | 2015-06-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
In das Ende, es endete als, dass meine EC2-Instanzen wurden nicht zugewiesene öffentliche IP-Adressen. Es erscheint ECS muss in der Lage sein, direkt zu kommunizieren mit jeder EC2 Instanz, die erfordern würde, dass jede Instanz über eine öffentliche IP. Ich war nicht die Zuordnung meinem container Instanzen der öffentlichen IP-Adressen, weil ich dachte, ich hätte Sie alle hinter einem öffentlichen load balancer, und jeder container-Instanz wäre private.
es scheint, dass es braucht eine öffentliche IP-Adresse: wenn ich die Instanz in einem Subnetz mit einem IGW ohne öffentliche IP, die es nicht registrieren. Gleiche Einstellungen, aber mit der öffentlichen IP und registriert. Die Sicherheit der Gruppe erfordert keine eingehenden ports öffnen, also ist es sicher egal, mit dem zusätzlichen Vorteil des seins in der Lage, SSH, wenn wir müssen.
Danke ! Dieser arbeitete für mich.
Sie das definitiv machen nicht müssen die öffentlichen IP-Adressen für jedes Ihre privaten Instanzen. Der richtige Weg, dies zu tun ist die Einrichtung zu einem Nat-Gateway und befestigen Sie das gateway in der routing-Tabelle, die an deinem privaten Subnetz.
Meine Erfahrung ist auch, dass Sie müssen zum zuweisen einer öffentlichen IP-Adresse für Ihre Instanzen. Bei mir läuft alles in der öffentlichkeit Subnetze mit IGWs und ECS würde noch nur entdecken Sie die container-Instanzen, wenn Sie öffentliche IPs verbunden. Siehe forums.aws.amazon.com/message.jspa?messageID=751334#751334
InformationsquelleAutor Ryan
Hatte ich ähnliche Symptome, aber am Ende finden die Antwort in der log-Dateien:
/var/log/ecs/ecs-agent.2016-04-06-03:
In meinem Fall, die Ressource existiert aber nicht erreichbar war. Es klingt wie der OP verweist auf eine Ressource, die nicht vorhanden oder nicht sichtbar. Sind Ihre Cluster und Instanzen in der gleichen region? Die Protokolle sollten bestätigen Sie die Angaben.
In Reaktion auf andere Beiträge:
Brauchen Sie KEINE öffentlichen IP-Adressen.
Sie tun müssen: die ecsServiceRole oder äquivalent IAM-Rolle zugeordnet sind, die EC2-Instanz, um zu sprechen, um die ECS service. Sie müssen auch angeben, die ECS-cluster und kann getan werden, über die Benutzer Daten während der Instanz starten, oder starten Sie die Konfiguration definition, etwa so:
Wenn Sie dies nicht tun, auf neu gestartete Instanzen, Sie können dies tun, nachdem die Instanz gestartet hat und dann den Dienst neu starten.
Danke. Da einige Benutzer unter, es ist die
AmazonEC2ContainerServiceforEC2Role
Politik an die Rolle, die Sie haben (entweder typische ecsInstanceRole oder sonstigen eigenen). In diesem Fall, einfach befestigen Sie die Richtlinie auf Ihre Rolle funktionieren sollte, ohne Neustart oder relauncht.InformationsquelleAutor MrPaws
Einem anderen problem, das auftreten könnte, ist nicht die Zuordnung einer Rolle, mit der richtigen Politik, um die Startkonfiguration. Meine Rolle hat nicht die
AmazonEC2ContainerServiceforEC2Role
Politik (oder die Berechtigungen, die es enthält) als die hier angegebenen.InformationsquelleAutor Nick Spacek
Könnte es auch sein, dass die ECS-agent erstellt eine Datei in /var/lib/ecs/Daten, speichert den Namen des Clusters.
Wenn der agent zum ersten mal startet mit den cluster-Namen 'default', müssen Sie diese Datei löschen und dann starten Sie den Agenten neu.
InformationsquelleAutor Gareth Harcombe-Minson
Du definitiv tun nicht müssen öffentliche IP-Adressen für jedes Ihre privaten Instanzen. Die richtige (und sicherste) Weg, um dies zu tun, ist die Einrichtung zu einem NAT-Gateway und befestigen Sie das gateway in der routing-Tabelle, die an deinem privaten Subnetz.
Dies wird detailliert dokumentiert in der VPC-Dokumentation, speziell Szenario 2: VPC mit Öffentlichen und Privaten Subnetzen (NAT).
InformationsquelleAutor Luke Peterson
Dort, wo mehrere Schichten von Problemen in unserem Fall. Ich Liste Sie so, es könnte Ihnen eine Vorstellung von den Themen zu verfolgen.
Mein Gefängnis wurde 1 ECS-in-1 host. Aber ECS Kräfte Sie haben 2 Subnetze unter Ihrer VPC und haben jeweils 1 Instanz von docker-host. Ich war versucht, habe nur 1 docker-host in 1 availability zone und konnte nicht damit es funktioniert.
Dann das andere Problem war, dass der einzige, der die Subnetze hatte ein angeschlossenes gateway mit dem internet verbunden, um es. So einer von Ihnen war nicht erreichbar von den öffentlichen.
Das Endergebnis war der DNS-Dienst 2 IPs für meinen ELB. Und eine der IPs arbeiten würde und der andere nicht. So sah ich zufällig 404 beim Zugriff auf den NLB-mit dem öffentlichen DNS.
InformationsquelleAutor David Dehghan