고기 대신 SW 한점/DEVOPS

[istio] Circuit Break 구현

지식한점 2022. 10. 14. 17:16
반응형

마이크로 서비스 아키텍처에서 문제중 일반적인 것은 cascading failure을 꼽을 수 있습니다.

 

어떤 이유로 서비스가 응답하지 않는 경우, 서비스에 request를 계속해서 보내면 

latency가 길어지고 그에 따른 서비스에 불필요한 부하가 발생할 여지가 있습니다.

 

마이크로 서비스의 경우 다양한 서비스로 구성되는데,
A 서비스와 B 서비스가 연계되어 있을 경우 다른 서비스의 부하로 이어지는데 이런 현상을 cascading failure라 한다. 

 

이런 현상을  circuit breaking을 통해 과부하된 서비스의 연결을 끊고 서비스가 회복할 시간을 줄 수 있게하여
장애를 처리할 수 있게 됩니다. 

 

Destination rule에서 또는 value에서 이용하여 circuit break 설정이 가능합니다.

 

values.yaml
destinationrule.yaml

 

먼저
outlierDetection을 이용하여 circuit breaker를 동작시킨다.

 

maxEjectionPercent: 접속하는 호스트 중 몇  %만 제외시킬지 

consecutive5xxErrors: 연속으로 들어오는 5xx 에러의 수 

inteval: 시간 간격 

baseEjectionTime: 얼마동안 Ejection을 시킬 것인지 .

 

위 yaml의 outlierDetection을 요약하면 

10초 동안 연속으로 2개의 5xx에러 응답을 받으면

30초동안 pod를 ejection하여 어떤 호스트도 접근하지 못하게한다. 

 

 

 

반응형