Отключить стратегию повторных попыток Istio по умолчанию (по крайней мере, для запросов POST)

У меня есть приложение (на основе микросервисов), работающее в кубернетах с Istio 1.7.4

У микросервисов есть собственные механизмы компенсации транзакций при сбоях интеграции.

Но Istio повторяет запросы, когда у некоторых интеграций есть ответы с кодом состояния 503. Мне нужно отключить его (по крайней мере, в POST, который не идентифицируется).

И пусть об этом позаботится приложение.

Но я пробовал много способов безуспешно. Кто-нибудь может мне помочь?

1 ответ


Документация

Интервал между повторными попытками (25 мс +) является переменным и определяется Istio автоматически, что предотвращает перегрузку вызываемой службы запросами. Поведение по умолчанию для HTTP-запросов - это повторная попытка дважды перед возвратом ошибки.

Кстати, изначально это было 10, но уменьшилось до 2 в Включить повторные попытки для определенных кодов состояния и уменьшить количество повторных попыток до 2 фиксации.

  • обходной путь - использовать виртуальные сервисы

вы можете настроить параметры повторных попыток для каждой службы в виртуальных службах, не касаясь кода службы. Вы также можете дополнительно уточнить свое поведение при повторных попытках, добавив таймауты для каждой повторной попытки, указав время, в течение которого вы хотите ждать каждой повторной попытки для успешного подключения к службе.


Примеры

  1. В следующем примере настраивается максимум 3 попытки подключения к этому подмножеству службы после сбоя первоначального вызова, каждая с 2-секундным таймаутом.
      apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: ratings
spec:
  hosts:
  - ratings
  http:
  - route:
    - destination:
        host: ratings
        subset: v1
    retries:
      attempts: 3
      perTryTimeout: 2s
  1. Ваш случай. Отключение повторных попыток. Взято из Отключить глобально политика повтора по умолчанию :
      apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: no-retries-for-one-service
spec:
  hosts:
  - one-service.default.svc.cluster.local
  http:
  - retries:
      attempts: 0
    route:
      - destination:
          host: one-service.default.svc.cluster.local
Другие вопросы по тегам