envoyproxy возвращает ошибку 503, «U C, завершение восходящего соединения», при попытке чтения из Docker хоста Tomcat - PullRequest
0 голосов
/ 03 апреля 2020

Я бегу прямо Docker (без Кубернетеса). В этой системе Docker я использую два контейнера, один из которых работает с envoyproxy, а другой - с Tomcat. Цель состоит в том, чтобы у envoyproxy входной конец всех контейнеров в этой системе Docker.

Я всегда получаю 503 ошибки, "U C, завершение восходящего соединения". Кажется, что контейнер Tomcat не хочет принимать трафик c из контейнера посланника. Контейнер-посланник может без проблем свернуть те же адреса / порты. Контейнер-посланник также может успешно прокси-сервер свои собственные административные API.

Вот мой маршрут к контейнеру Tomcat с именем "manpants". В основном, отображайте встроенную документацию Tomcat для примеров.

          - match:
              prefix: "/examples/"
            route:
              cluster: cluster1

Вот кластер.

  - name: cluster1
    connect_timeout: 1.25s
    type: logical_dns
    lb_policy: round_robin
    http2_protocol_options: {}
    hosts:
    - socket_address:
        address: manpants
        port_value: 8080

Я вижу в журналах правильный IP-адрес, разрешенный для 'manpants ', но результат всегда один и тот же:

[2020-04-03 18:33:52.804][11][debug][router] [source/common/router/router.cc:990] [C3][S9650117757932019245] upstream reset: reset reason connection termination
[2020-04-03 18:33:52.804][11][debug][http] [source/common/http/conn_manager_impl.cc:1417] [C3][S9650117757932019245] Sending local reply with details upstream_reset_before_response_started{connection termination}

и

[2020-04-03T18:32:13.391Z] "GET /examples/ HTTP/1.1" 503 UC 0 95 4 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36" "8c1f0c3e-d007-4132-8151-c69d1c67f5c5" "myserver.mydomain.com" "172.18.0.3:8080"

Если я' docker exe c 'в Docker контейнер, я могу свернуться этот самый адрес.

$ curl 172.18.0.3:8080/examples/
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more...

Так что этот адрес принимает соединения от других Docker контейнеров.

Кроме того, envoyproxy может проксировать свой собственный внутренний интерфейс. Это работает как чемпион.

Маршрут:

              - match:
                  prefix: "/server_info"
                route:
                  cluster: admin

Кластер:

  - name: admin
    connect_timeout: 5.25s
    type: logical_dns
    lb_policy: round_robin
    http2_protocol_options: {}
    hosts:
    - socket_address:
        address: envoy
        port_value: 9901

Я пробовал так много вещей. Я в растерянности, где go следующий.

...