Срабатывание автоматического выключателя Istio на основе % ошибок 5xx

#istio #circuit-breaker #servicemesh

Вопрос:

Я читал документацию по автоматическому выключателю Istio. Я вижу, что для заданного интервала мы можем установить числовое значение consecutive5xxErrors (и проверить несколько других настроек), чтобы действие по разрыву цепи вступило в силу.

Я хотел знать, можно ли каким-то образом выполнить разрыв цепи в Istio на основе % 5xxerrors от обычных соединений?

Ответ №1:

Следуя документации, которую вы уже нашли:

Как вы можете видеть, существуют определенные поля для outlierDetection :

  • consecutiveGatewayErrors
  • consecutive5xxErrors
  • interval
  • baseEjectionTime
  • maxEjectionPercent
  • minHealthPercent

Поле, которое заставит запрос не попадать в конкретный объект, выглядит следующим образом: consecutive5xxErrors .

Как также можно увидеть в документации:

Поле Тип Описание Требуемый
Последовательные ошибки 5XX Значение uint32 Количество ошибок 5xx до того, как хост будет удален из пула соединений. Когда доступ к вышестоящему хосту осуществляется через непрозрачное TCP-соединение, тайм-ауты подключения, ошибка/сбой подключения и события сбоя запроса квалифицируются как ошибка 5xx. По умолчанию эта функция имеет значение 5, но ее можно отключить, установив значение 0. НЕТ

Istio.io: Последние версии: Документы: Ссылка: Конфигурация: Сеть: Правило назначения: Обнаружение выбросов

Значение для него является фиксированным и не может быть использовано в процентах.


Я нашел запрос на функцию на странице github Istio , которая, как мне кажется, ссылается на функцию, которую вы хотели бы запустить:


Я бы подумал, что вы могли бы попробовать использовать an EnvoyFilter для изменения конфигурации Envoy (не тестировали ее), так как Envoy в ней есть некоторые поля, связанные с процентами неудач/успехов. Документация, которая должна вам помочь: