Istio 가상 서비스 제한시간 및 재시도

원격으로 서버에 접속하기 위해 xshell을 사용할 때 응답이 없어 몇 분 정도 기다릴 수 있으니 crtlc를 눌러 종료하면 됩니다.

때때로 마이크로 서비스는 여러 서비스로 구성됩니다.서비스 a는 서비스 b를 호출합니다.네트워크 문제 또는 연결 문제로 인해 연결에 성공하지 못한 경우 계속 연결을 시도하므로 시간이 오래 걸리고 사용자 경험에 영향을 미칠 수 있습니다. 나쁜.

따라서 서비스 a가 서비스 b에 접속할 때 한 번만 접속에 성공하지 못하면 접속 제한 시간을 설정할 수 있는데, 예를 들어 정상적인 상황에서는 1초 안에 접속이 성공할 수 있고, 10초 안에 접속이 실패하면 접속이 종료된다. 비정상입니다.

그래서 만료 시간을 정할 수 있는데 3초를 넘으면 비정상인 것 같아서 연결을 끊어야 한다.

마이크로 서비스를 시뮬레이션하기 위해 여기서 pod1은 pod2에 연결됩니다. Pod1은 실제로 haproxy입니다. 

여기서 클라이언트가 svc1, 즉 pod1에 액세스할 수 있도록 pod1 서비스에 대한 vs myvs1을 생성해야 합니다.

그런 다음 pod2로 이동할 때 svc2의 흐름을 제어하는 ​​svc2에 대한 vs를 만들어야 합니다.

이제 pod2 액세스가 매우 느리다는 것을 시뮬레이션하기 위해 여기에서 svc2에서 지연된 결함 주입을 사용할 수 있습니다. 여기에서는 hosts -svc2를 사용하기 때문에 svc2로의 흐름을 제어하기 쉽습니다. 위의 내용은 svc2에 액세스할 때 2초 동안 연기해야 ​​한다는 것입니다. 이는 pod1이 pod2에 액세스할 때 2초 동안 대기해야 하는 것을 시뮬레이션합니다. (여기서는 gw를 사용할 필요가 없습니다. pod2는 외부 액세스에 노출될 필요가 없기 때문입니다.)

이제 실패를 시뮬레이션하기 위해 여기에서 pod2에 대한 액세스가 매우 느린 경우, 즉 pod1이 po2에 액세스할 때 액세스 속도가 느립니다. 이를 위해서는 지연된 결함 주입이 필요합니다. 위에서 Myvs2가 생성되어 svc2로의 트래픽을 쉽게 제어할 수 있습니다.

2초 이상 방문하는 것은 일반적이지 않습니다. 여기에서 vs1에서 시간 초과 시간을 설정할 수 있습니다. (타임아웃과 경로가 정렬되어 있음에 유의하십시오.)

pod1의 타임아웃 기간을 설정하면 myvs1의 흐름이 제어되어야 합니다.

타임아웃 후 방문 불가인가요? 시간 초과의 의미는 여기에서 연결을 기다리지 않도록 하기 위한 것이며 시간 초과 후에 다시 시도해야 합니다. 시간 초과 후 다시 시도할 수 있습니다.

연결 실패에 대한 재시도 횟수는 3회입니다. 재시도해야 하는 조건은 무엇입니까? 5xx가 반환되면 다시 시도하십시오.

여기서 myvs2는 인터럽트 주입을 수행합니다. 반환 값이 5xx인 경우에만 재시도가 수행됩니다. 인터럽트 실패를 시뮬레이션한 후 클라이언트 코드 503으로 돌아가서 다시 시도할 수 있습니다.

여기에 있는 값은 5xx만 가능하며 다른 값을 쓰면 오류가 보고됩니다.

다시 시도하면 pod1의 로그를 볼 수 있습니다. curl 로그가 많을 것입니다. 첫 번째 curl이 실패하면 다음 세 개의 curl 로그가 있습니다.

Supongo que te gusta

Origin blog.csdn.net/qq_34556414/article/details/130566869
Recomendado
Clasificación