1 votes

Les ports Docker d'une instance EC2 ne sont pas accessibles après avoir changé de type d'instance

Quand changer le type d'instance EC2 J'ai rencontré un problème. La machine avait 3 conteneurs Docker qui ont dû être redémarrés et après le redémarrage, leurs ports sont devenus inaccessibles.

Quel pourrait être le problème et comment dois-je procéder pour obtenir d'autres informations de débogage nécessaires ?

  • Aucune modification n'a été apportée aux groupes de sécurité dans AWS, tous les ports requis sont toujours activés.

  • Je suis toujours capable de SSH dans l'instance EC2, mais les ports utilisés par les Docker (80, 8181) ne sont pas accessibles (délai de connexion).

  • Dans un navigateur web, il importe peu que j'essaie d'accéder à un port utilisé ou non. non, le comportement du navigateur est toujours le même ( l'indicateur de chargement s'arrête au début, suivi d'un délai d'attente, rien n'est enregistré dans le fichier access.log ou error.log d'Apache, par exemple. ).

  • Dans un navigateur web, ni l'adressage de l'instance par son DNS public (IPv4), ni l'adressage de l'instance par son IP, ou son nom de domaine original ne fonctionne pas.

  • Redémarrer l'instance ou changer à nouveau son type n'aide pas.

Je suis capable de ping/telnet/wget les ports utilisés par les conteneurs Docker à partir de l'instance :

$ docker exec f227cf8d9481 wget 127.0.0.1:8181
converted 'http://127.0.0.1:8181' (ANSI_X3.4-1968) -> 'http://127.0.0.1:8181' (UTF-8)
--2018-01-15 23:49:10--  http://127.0.0.1:8181/
Connecting to 127.0.0.1:8181... connected.
HTTP request sent, awaiting response... 401 Unauthorized

Mais pas depuis l'extérieur (l'adresse IP est toujours résolue) :

$ wget <aws-ip>.<aws-zone>.<instance>.amazonaws.com:8181
--2018-01-16 00:53:32--  http://<aws-ip>.<aws-zone>.<instance>.amazonaws.com:8181/
Resolving <aws-ip>.<aws-zone>.<instance>.amazonaws.com... xxx.xxx.xxx.xxx
Connecting to <aws-ip>.<aws-zone>.<instance>.amazonaws.com|xxx.xxx.xxx.xxx|:8181... failed: Operation timed out.
Retrying.

Les conteneurs Docker sont en cours d'exécution et le mappage entre les ports Docker est correctement :

$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                                                                    NAMES
f227cf8d9481        cloud9              "forever /cloud9/s..."   3 seconds ago       Up 2 seconds        0.0.0.0:8080-8081->8080-8081/tcp, 80/tcp, 0.0.0.0:8181->8181/tcp, 0.0.0.0:81->3000/tcp   my-cloud9
fa0d2bbce863        wordpress           "docker-entrypoint..."   59 minutes ago      Up 59 minutes       0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp                                                 goofy_torvalds
6ada961a5ea0        mysql               "docker-entrypoint..."   About an hour ago   Up About an hour    0.0.0.0:3306->3306/tcp  

Le paramètre Iptables semble avoir activé les ports Docker :

$ sudo iptables --table nat --list
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
DOCKER     all  --  anywhere             anywhere             ADDRTYPE match dst-type LOCAL

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
DOCKER     all  --  anywhere            !loopback/8           ADDRTYPE match dst-type LOCAL

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
MASQUERADE  all  --  <aws-ip>.<aws-zone>.<instance>.internal/16  anywhere            
MASQUERADE  tcp  --  <aws-ip>.<aws-zone>.<instance>.internal  <aws-ip>.<aws-zone>.<instance>.internal  tcp dpt:mysql
MASQUERADE  tcp  --  <aws-ip>.<aws-zone>.<instance>.internal  <aws-ip>.<aws-zone>.<instance>.internal  tcp dpt:https
MASQUERADE  tcp  --  <aws-ip>.<aws-zone>.<instance>.internal  <aws-ip>.<aws-zone>.<instance>.internal  tcp dpt:http
MASQUERADE  tcp  --  <aws-ip>.<aws-zone>.<instance>.internal  <aws-ip>.<aws-zone>.<instance>.internal  tcp dpt:8181
MASQUERADE  tcp  --  <aws-ip>.<aws-zone>.<instance>.internal  <aws-ip>.<aws-zone>.<instance>.internal  tcp dpt:tproxy
MASQUERADE  tcp  --  <aws-ip>.<aws-zone>.<instance>.internal  <aws-ip>.<aws-zone>.<instance>.internal  tcp dpt:webcache
MASQUERADE  tcp  --  <aws-ip>.<aws-zone>.internal  <aws-ip>.<aws-zone>.<instance>.internal  tcp dpt:hbci

Chain DOCKER (2 references)
target     prot opt source               destination         
RETURN     all  --  anywhere             anywhere            
DNAT       tcp  --  anywhere             anywhere             tcp dpt:mysql to:<docker-ip>:3306
DNAT       tcp  --  anywhere             anywhere             tcp dpt:https to:<docker-ip>:443
DNAT       tcp  --  anywhere             anywhere             tcp dpt:http to:<docker-ip>:80
DNAT       tcp  --  anywhere             anywhere             tcp dpt:8181 to:<docker-ip>:8181
DNAT       tcp  --  anywhere             anywhere             tcp dpt:tproxy to:<docker-ip>:8081
DNAT       tcp  --  anywhere             anywhere             tcp dpt:webcache to:<docker-ip>:8080
DNAT       tcp  --  anywhere             anywhere             tcp dpt:81 to:<docker-ip>:3000

Non, il ne semble pas y avoir d'activité réseau notable (environ 2KB toutes les 5 minutes) en utilisant l'outil de surveillance de l'instance EC2. À l'exception de quelques pics lorsque j'ai utilisé SSH pour me connecter :

enter image description here

0voto

Peter Gerhat Points 111

Le problème se situait au niveau de la configuration du DNS et du certificat SSL, car l'instance était configurée pour utiliser uniquement HTTPS .

Après le changement de type d'instance, une nouvelle URL a été automatiquement attribuée à la nouvelle instance, qui a dû être mise à jour auprès du fournisseur de DNS et de l'AC.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X