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 :