springCloud 출현: Load balancer does not have available server for client: SERVICE - XXX 의 오류 해결 방법
16964 단어 오류 기록
1 인터페이스 모듈 에서 이 오류 발생
zuul 직접 에이전트 의 인터페이스 층 (즉, zuul 이 직접 전송 하 는 층, 나 는 user 인터페이스 제공 층, userApi) 의 application. yml 에 부하 균형 을 설정 하면 이 문제 가 발생 할 수 있 습 니 다.
com.netflix.zuul.exception.ZuulException: Forwarding error
at org.springframework.cloud.netflix.zuul.filters.route.RibbonRoutingFilter.handleException(RibbonRoutingFilter.java:198) ~[spring-cloud-netflix-zuul-2.1.3.RELEASE.jar:2.1.3.RELEASE]
at org.springframework.cloud.netflix.zuul.filters.route.RibbonRoutingFilter.forward(RibbonRoutingFilter.java:173) ~[spring-cloud-netflix-zuul-2.1.3.RELEASE.jar:2.1.3.RELEASE]
at org.springframework.cloud.netflix.zuul.filters.route.RibbonRoutingFilter.run(RibbonRoutingFilter.java:119) ~[spring-cloud-netflix-zuul-2.1.3.RELEASE.jar:2.1.3.RELEASE]
at com.netflix.zuul.ZuulFilter.runFilter(ZuulFilter.java:117) ~[zuul-core-1.3.1.jar:1.3.1]
------------------------- --------------------------------
Caused by: com.netflix.client.ClientException: Load balancer does not have available server for client: SERVICE-USERAPI
at com.netflix.loadbalancer.LoadBalancerContext.getServerFromLoadBalancer(LoadBalancerContext.java:483) ~[ribbon-loadbalancer-2.3.0.jar:2.3.0]
at com.netflix.loadbalancer.reactive.LoadBalancerCommand$1.call(LoadBalancerCommand.java:184) ~[ribbon-loadbalancer-2.3.0.jar:2.3.0]
at com.netflix.loadbalancer.reactive.LoadBalancerCommand$1.call(LoadBalancerCommand.java:180) ~[ribbon-loadbalancer-2.3.0.jar:2.3.0]
at rx.Observable.unsafeSubscribe(Observable.java:10327) ~[rxjava-1.3.8.jar:1.3.8]
at rx.internal.operators.OnSubscribeConcatMap.call(OnSubscribeConcatMap.java:94) ~[rxjava-1.3.8.jar:1.3.8]
at rx.internal.operators.OnSubscribeConcatMap.call(OnSubscribeConcatMap.java:42) ~[rxjava-1.3.8.jar:1.3.8]
SERVICE - USERAPI 는 제 서비스 이름 입 니 다. 제 가 userApi 모듈 에 다음 과 같은 코드 를 설 정 했 기 때 문 입 니 다.
ribbon:
eureka:
enabled: true
zuul 은 자신의 역방향 에이전트 와 부하 균형 기능 이 있 습 니 다. 해결 방법 은 이 설정 을 없 애 면 됩 니 다.
2. 서비스 모듈 에서 이 문제 가 발생 합 니 다.
때때로 업무 층 의 서비스 에서 다른 서비스 제공 자의 서 비 스 를 호출 할 수 있 습 니 다. 이 때 수 동 으로 서 비 스 를 호출 하 는 방식 (feign 호출 을 사용 할 때 도 마찬가지) 을 사용 하면 restTemplate 에서 @ LoadBalanced 를 열 었 지만 설정 파일 에서 부하 균형 이 켜 지지 않 으 면 이 오류 도 발생 할 수 있 습 니 다.해결 방법 은 다음 과 같 습 니 다. 1 호출 된 서비스 프로필 (여 기 는 baseService 의 application. yml) 에 추가 합 니 다.
ribbon:
eureka:
enabled: true
2 restTemplate (userService 에서 열 림) 의 부하 균형 능력 동시 오픈
/**
* springCloud
*
* @author lgs
*/
@Configuration
public class SpringCloudConfig {
/**
*
*
* @return
* @LoadBalanced RestTemplate
*/
@LoadBalanced
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
}
이 두 설정 을 더 한 후에 다른 서 비 스 를 수 동 으로 호출 하 는 것 도 부하 균형 능력 이 있 습 니 다 (userService 는 baseService 의 서 비 스 를 호출 합 니 다).
@Override
public ResponseInfo findAllDataBase() {
MultiValueMap<String, Object> multiValueMap = new LinkedMultiValueMap<>();
multiValueMap.add("name", "lgs");
// post
ResponseInfo responseInfo = restTemplate.postForObject(ServiceEnum.SERVICE_BASE.getServicePath() + "/base/sayHello", multiValueMap, ResponseInfo.class);
return responseInfo;
}
기록 오류, 조금씩 성장.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
springCloud 출현: Load balancer does not have available server for client: SERVICE - XXX 의 오류 해결 방법zuul 을 통 해 user 의 인터페이스 제공 모듈, user 인터페이스 제공 모듈 은 user 서비스 모듈 의 업무 기능 (feign 호출) 을 호출 하고 user 서비스의 업무 기능 은 base 서비스 모듈 의...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.