Fargate: Невозможно добраться до моего PHP контейнера из других моих контейнеров - PullRequest
0 голосов
/ 07 марта 2020

У меня есть задача с двумя контейнерами на fargate: один java и один php / nginx.

Контейнер java отображает свой внутренний порт 80 на внешний порт 8080 и Контейнер php сопоставляет свой внутренний порт 80 с внешним портом 8081.

Задача использует сетевой режим awsvp c. Согласно документации aws , они должны иметь возможность общаться друг с другом через локальный хост, как только они окажутся в дальней сети.

Я пытался проверить это, когда контейнер Java отправляет запрос в контейнер PHP, используя "localhost: 8081":

    public boolean isPHPReachable() {
        System.out.println("Attempting to make request to PHP");
        try {
            final URL url = new URL("http://localhost:8081/test");
            final HttpURLConnection con = (HttpURLConnection) url.openConnection();
            con.setRequestMethod("GET");
            final int status = con.getResponseCode();
            System.out.printf("Get request to PHP resulted in a %d: %s", status, con.getResponseMessage());
            return status == 200;
        } catch (final IOException err) {
            err.printStackTrace();
            return false;
    }

Код php должен быть удар такой:

<?php

if ($_GET['q'] === 'test') {
    echo('healthy');
    die;
}

'q' устанавливается nginx (см. конфигурацию ниже).

Тем не менее, я вижу, что журналы cloudwatch показывают ошибку, когда Java пытается отправить PHP запрос:

22:55:04
Attempting to make request to PHP
22:55:04
java.net.ConnectException: Connection refused (Connection refused)

Я пытался связаться с контейнером PHP напрямую, но у меня истекло время ожидания. Это не происходит, когда я пытаюсь достичь Java.

Потенциальная проблема 1: Nginx неправильно настроен

Я подозреваю, что это может быть проблема nginx , Тем не менее, я не могу воспроизвести проблему, когда я создаю контейнер PHP на моем локальном компьютере - это доступно, когда я пингую localhost: 8081.

Проблема возникает только в Fargate.

Вот моя конфигурация:

# For more information on configuration, see:
#   * Official English Documentation: http://nginx.org/en/docs/
#   * Official Russian Documentation: http://nginx.org/ru/docs/

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;

    server {
        # Reject requests not matching any server block
        listen      80 default_server;
        server_name "";
        return      410;
    }

    server {
        listen 80;

        root /var/www/public_html;

        server_name localhost;

        index index.php;
        set_real_ip_from 0.0.0.0/0; # we trust that the webserver is firewalled
        real_ip_header  X-Forwarded-For;

        set $webroot $document_root;

        error_page 404 410 /404_empty.html;
        autoindex off;

        # Disable server signature
        # (i.e. remove "nginx 1.10" or similar from error pages and response headers)
        server_tokens off;

        #################
        # PHP locations #
        #################
        location / {
            rewrite ^/(.*)$ /sites/all/index.php?q=$1;
            error_page 404 /sites/all/index.php;
        }
}

2. Неверно настроенные группы безопасности:

Я не верю, что это так. Группа безопасности, прикрепленная к этому контейнеру, разрешает входящие TCP-запросы на любой порт из любого пункта назначения. Он также разрешает все исходящие запросы.

Кто-нибудь обнаружил немедленную проблему? Любые советы по отладке?

...