когда изменение типа инстанса EC2 Я столкнулся с проблемой. Машина имела 3 контейнера Docker, которые необходимо перезапустить и после перезагрузки их порты стали недоступны.
В чем может быть проблема и как мне получить другую необходимую отладочную информацию?
Никаких изменений в группы безопасности не вносилось конфигурации в AWS, все необходимые порты по-прежнему включены.
я все еще может SSH в экземпляр EC2, но порты, используемые Docker (80, 8181), недоступны (тайм-аут соединения).
В веб-браузере не имеет значения, пытаюсь я получить доступ к используемому порту или нет, поведение браузера всегда одно и то же (индикатор загрузки останавливается в начале, затем следует тайм-аут, ничего не происходит, например, Access.log или error.log Apache).
В веб-браузере не работает обращение к экземпляру с помощью его общедоступного DNS (IPv4), общедоступного IP-адреса IPv4 или его исходного доменного имени.
Перезапуск экземпляра или повторное изменение его типа не помогает
Я могу пинговать / telnet / wget порты, используемые контейнерами Docker из экземпляра:
$ 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
Но не извне (IP-адрес все равно разрешается):
$ 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.
Контейнеры докеров работают, и сопоставление портов Docker выполнено правильно:
$ 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
В настройках Iptables, похоже, включены порты 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
Нет, похоже, не наблюдается какой-либо заметной сетевой активности (около 2 КБ каждые 5 минут) с использованием инструмента мониторинга экземпляра EC2. За исключением некоторых всплесков времени, когда я использовал SSH для входа в систему:
Проблема заключалась в конфигурации сертификата DNS и SSL, поскольку экземпляр был настроен на использование только HTTPS.
После изменения типа экземпляра новому экземпляру автоматически был назначен новый URL-адрес, который необходимо было обновить как поставщиком DNS, так и центром сертификации.