Для повторных попыток (Retry) для запросов можно использовать модуль istio
.
Перед настройкой убедитесь, что модуль включен в кластере.
Чтобы настроить Retry для запросов, используйте ресурс VirtualService от istio.io.
По умолчанию, при возникновении ошибок, все запросы (включая POST-запросы) выполняются повторно до трех раз.
Пример:
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
name: ratings-route
spec:
hosts:
- ratings.prod.svc.cluster.local
http:
- route:
- destination:
host: ratings.prod.svc.cluster.local
retries:
attempts: 3
perTryTimeout: 2s
retryOn: gateway-error,connect-failure,refused-stream
Ресурс VirtualService
При необходимости ознакомьтесь с документацией VirtualService.
Использование VirtualService опционально, классические сервисы продолжают работать, если их функционала достаточно. С помощью этого ресурса можно настроить маршрутизацию запросов:
- Аргументы для принятия решения о маршруте:
host
;uri
;weight
(вес).
- Параметры итоговых направлений:
- новый
host
; - новый
uri
; - если
host
определен с помощью DestinationRule можно направлять запросы на subset’ы; - таймаут и настройки retry (повторных попыток).
- новый
Для корректной работы destination
в Istio необходимо его указать. Если вы используете внешний API, укажите его с помощью ServiceEntry.