Envoy в управлении логическим DNS-соединением - PullRequest
0 голосов
/ 22 января 2019

В своей документации (https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/service_discovery#logical-dns) для обнаружения службы логического DNS посланник говорит:

"использует только первый возвращенный IP-адрес, когда требуется установить новое соединение"

Как посланник решает, когда необходимо установить новое восходящее соединение?

В нем также говорится:

«Соединения никогда не очищаются»

Что происходит со старыми соединениями, если вышестоящий хост становится недоступным?Применяются ли проверки работоспособности ко всем вышестоящим хостам, которые в настоящее время установили соединения, или они только контролируют хост с текущим «первым IP-адресом»?Если последнее, то я прав, если предположить, что Envoy удалит только сбойное соединение в восходящем направлении (и, следовательно, прекратит попытки посылать трафик на эти хосты), как только попытается выполнить запись в него и истечет время ожидания ACK партнера?Если да, можно ли настроить продолжительность тайм-аута?

1 Ответ

0 голосов
/ 03 февраля 2019

После просмотра кода и выполнения некоторых тестов я увидел следующее:

Как посланник решает, когда необходимо установить новое восходящее соединение инициирована

  • Для установления соединения, в случае TCP-прокси (фильтр, который я использовал), существует соединение 1: 1 между нисходящими и восходящими соединениями, поэтому новое восходящее соединение устанавливается, когда устанавливается новое нисходящее соединение.

Что происходит со старыми соединениями, если восходящий хост становится недостижим?

  • Это зависит от того, было ли соединение прервано (отправлено пакет TCP RST) или нет. Если это так, то соединение будет уничтожено (вместе с нисходящим соединением), если этого не произошло, то ничего не произойдет, пока не истечет время ожидания соединения TCP (я полагаю, из-за TCP_USER_TIMEOUT или tcp_retries2 попыток - оно потребовало больше чем 15 минут на моей локальной машине).

Применяются ли проверки работоспособности ко всем вышестоящим хостам, которые в настоящее время имеют установленные соединения или они только контролируют хост с текущий "первый IP-адрес"?

  • Они применяются только к текущему «первому IP-адресу».

Если последнее, могу ли я считать, что Посланник удалит только сбой соединения в восходящем направлении (и, следовательно, прекращение попытки отправки трафик на эти хосты), как только он пытается записать на него и равноправный ACK время ожидания?

  • Да. Обычно таймауты нижестоящих клиентов срабатывают первыми и разрушают соединение.

Если это так, можно ли настроить продолжительность тайм-аута?

  • Я не смог найти опцию для установки сокета TCP_USER_TIMEOUT в посланнике. Смена ОС tcp_retries2 может помочь, но, согласно документации, на общее время также влияет сглаженное время приема-передачи TCP-соединения, поэтому изменение на tcp_retries2 не сможет определить абсолютное время ожидания. значение.
...