L4/L7 Таймаут

Содержание

Основная концепция

L4/L7 таймаут — это функция, предоставляемая ALB. Она используется для настройки времени таймаута для L4/L7 прокси.

Таймаут реализован с помощью Lua-скрипта, и при его изменении не требуется перезагрузка Nginx.

CRD

timeout:
  properties:
    proxy_connect_timeout_ms:
      type: integer
    proxy_read_timeout_ms:
      type: integer
    proxy_send_timeout_ms:
      type: integer
  type: object

Конфигурация может быть задана в:

  • Frontend: .spec.config.timeout
  • Rule: .spec.config.timeout

Что означает таймаут

Существует три типа таймаутов:

  1. proxy_connect_timeout_ms: Определяет время таймаута для установления соединения с upstream-сервером. Если соединение не будет установлено в течение этого времени, запрос завершится с ошибкой.

  2. proxy_read_timeout_ms: Определяет время таймаута для чтения ответа от upstream-сервера. Таймаут устанавливается между двумя последовательными операциями чтения, а не на весь ответ целиком. Если в течение этого времени данные не поступают, соединение закрывается.

  3. proxy_send_timeout_ms: Определяет время таймаута для отправки запроса upstream-серверу. Аналогично таймауту чтения, он устанавливается между двумя последовательными операциями записи. Если в течение этого времени данные не могут быть отправлены, соединение закрывается.

Аннотация Ingress

АннотацияОписание
nginx.ingress.kubernetes.io/proxy-connect-timeoutСоответствует proxy_connect_timeout_ms в CRD
nginx.ingress.kubernetes.io/proxy-read-timeoutСоответствует proxy_read_timeout_ms в CRD
nginx.ingress.kubernetes.io/proxy-send-timeoutСоответствует proxy_send_timeout_ms в CRD

Таймаут на уровне порта

Вы можете настроить таймаут непосредственно на порту, который используется как таймаут L4.