@Loadbalanced 관련
629
投稿した質問数 5
- spring-boot: v2.5.2
- cloud: 2020.0.3
예제처럼 따라했는데, user-service -> order-service로의 접근시에는 gateway를 통하지 않고 바로 통신합니다.
유레카에서 해당 서비스 IP/PORT 아이피를 바로 얻어갑니다
아래는 /user 조회시 주문 정보까지 가져올 때 gateway 로그입니니다.
/user호출
|- 해당 호출에서 rest로 /order 호출
이면 gateway에서 /order 로깅이 되어야 하는데 출력이 되지 않네요.
2021-07-14 12:10:01.325 INFO 48697 --- [ctor-http-nio-3] com.socurites.cloud.filter.GlobalFilter : Global filter: baseMessage: Spring Cloud Gateway Global Filter
2021-07-14 12:10:01.327 INFO 48697 --- [ctor-http-nio-3] com.socurites.cloud.filter.GlobalFilter : Global Filter Start: request id -> 96706a17-38
2021-07-14 12:10:01.328 INFO 48697 --- [ctor-http-nio-3] c.s.c.filter.AuthorizationHeaderFilter : Authorization> authorizationHeader: Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJjYzg5N2Q3ZmQ3OTU0NjFiYmVjYjFhNjE1YTE5ZjU1OSIsImV4cCI6MTYyNjIzMzI4MH0.RIMPVoIUb8UNsrTOC4UTfmG3VXF-NdwqUlzTsNIxqjr2Fp0A50DGcmBQc6qwZ6Ucwi8-kraU9FuYCgMM_nIM2Q
2021-07-14 12:10:01.331 INFO 48697 --- [ctor-http-nio-3] c.socurites.cloud.filter.LoggingFilter : Logging filter: baseMessage: Inner Logging Filter
2021-07-14 12:10:01.332 INFO 48697 --- [ctor-http-nio-3] c.socurites.cloud.filter.LoggingFilter : Logging PRE Filter: request uri -> http://localhost:8080/users/cc897d7fd795461bbecb1a615a19f559
2021-07-14 12:10:01.461 INFO 48697 --- [ctor-http-nio-3] c.socurites.cloud.filter.LoggingFilter : Logging POST Filter: response code -> 200 OK
2021-07-14 12:10:01.461 INFO 48697 --- [ctor-http-nio-3] com.socurites.cloud.filter.GlobalFilter : Global Filter End: response code -> 200 OK
2021-07-14 12:14:07.516 INFO 48697 --- [trap-executor-0] c.n.d.s.r.aws.ConfigClusterResolver : Resolving eureka endpoints via configuration
그래서 예제처럼 @Loadbalanced를 쓰려면 uri에서 "/order-service"를 제거해야만 나옵니다.
먼가 설정을 빠뜨린 것 같은데 잘 모르곘네요
回答 2
1
안녕하세요, 이도원입니다.
다음과 같이 사용자의 상세 정보를 요청하게 되면,
http://ip_address:8000/user-service/users/[user_id]
ex)

해당 사용자가 주문한 주문 내역이 같이 보여지게 됩니다. 이때 RestTempalte에서는 order-service에 요청하기 위해서 user-service.yml 파일로 부터 다음과 같은 주소를 사용하고 있습니다.
위에서 보시는 것처럼, EUREKA에 등록된 ORDER-SERVICE라는 애플리케이션명을 통해 직접 order service에 접속하고 있기 때문에, apigateway-service를 거치지 않고 바로 요청하게 됩니다. 만약 위 정보를 아래와 같이 apigateway를 거쳐서 접속하도록 수정한다면 apigateway-service에 해당 로그가 출력되는 것을 보실 수 있을겁니다.

위 로그는 apigateway-service에 대한 내용인데, 첫번째 request id -> c5045b2f-53는 user-service에 대한 요청이고, 두번째 request id -> 3925e9cb-1는 user-service에서 order-service를 요청한 내용입니다.
추가로, 위와 같이 Eureka의 ORDER_SERVICE라는 애플리케이션명 대신 직접 ip address를 지정해서 사용하실 경우에는 user-service에서 RestTemplate 빈을 등록하실 때 @LoadBalanced 어노테이션을 넣지 말고 실행하시기 바랍니다.
@Bean
// @LoadBalanced
public RestTemplate getRestTemplate() {
return new RestTemplate();
}
감사합니다.
0
- spring-boot: v2.5.2
- cloud: 2020.0.3
예제처럼 따라했는데, user-service -> order-service로의 접근시에는 gateway를 통하지 않고 바로 통신합니다.
유레카에서 해당 서비스 IP/PORT 아이피를 바로 얻어갑니다
아래는 /user 조회시 주문 정보까지 가져올 때 gateway 로그입니니다.
/user호출
|- 해당 호출에서 rest로 /order 호출
이면 gateway에서 /order 로깅이 되어야 하는데 출력이 되지 않네요.
2021-07-14 12:10:01.325 INFO 48697 --- [ctor-http-nio-3] com.socurites.cloud.filter.GlobalFilter : Global filter: baseMessage: Spring Cloud Gateway Global Filter
2021-07-14 12:10:01.327 INFO 48697 --- [ctor-http-nio-3] com.socurites.cloud.filter.GlobalFilter : Global Filter Start: request id -> 96706a17-38
2021-07-14 12:10:01.328 INFO 48697 --- [ctor-http-nio-3] c.s.c.filter.AuthorizationHeaderFilter : Authorization> authorizationHeader: Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJjYzg5N2Q3ZmQ3OTU0NjFiYmVjYjFhNjE1YTE5ZjU1OSIsImV4cCI6MTYyNjIzMzI4MH0.RIMPVoIUb8UNsrTOC4UTfmG3VXF-NdwqUlzTsNIxqjr2Fp0A50DGcmBQc6qwZ6Ucwi8-kraU9FuYCgMM_nIM2Q
2021-07-14 12:10:01.331 INFO 48697 --- [ctor-http-nio-3] c.socurites.cloud.filter.LoggingFilter : Logging filter: baseMessage: Inner Logging Filter
2021-07-14 12:10:01.332 INFO 48697 --- [ctor-http-nio-3] c.socurites.cloud.filter.LoggingFilter : Logging PRE Filter: request uri -> http://localhost:8080/users/cc897d7fd795461bbecb1a615a19f559
2021-07-14 12:10:01.461 INFO 48697 --- [ctor-http-nio-3] c.socurites.cloud.filter.LoggingFilter : Logging POST Filter: response code -> 200 OK
2021-07-14 12:10:01.461 INFO 48697 --- [ctor-http-nio-3] com.socurites.cloud.filter.GlobalFilter : Global Filter End: response code -> 200 OK
2021-07-14 12:14:07.516 INFO 48697 --- [trap-executor-0] c.n.d.s.r.aws.ConfigClusterResolver : Resolving eureka endpoints via configuration
그래서 예제처럼 @Loadbalanced를 쓰려면 uri에서 "/order-service"를 제거해야만 나옵니다.
먼가 설정을 빠뜨린 것 같은데 잘 모르곘네요
kafka 업데이트 강의 듣고 시포요
0
84
1
강의 교안
0
72
1
마이크로서비스간 통신 시, 인증 처리
0
79
1
api gateway 에서 인증 처리
0
64
1
섹션 19 질문드립니다
0
51
1
강의 자료 업데이트
0
81
1
부하분산 강의 섹션
0
56
1
강의자료는 어디에서?
0
69
1
강의 자료는 어디서 다운 받을 수 있나요?
0
109
1
전체 사용자 조회시 오류
0
57
1
혹시 pk 외 별도의 id 를 부여한 이유가 있을까요 ??
0
109
2
학습 방향
0
94
2
카프카 커넥터 사용 목적 문의
0
85
2
kafka 강의
0
107
2
서비스 디스커버리 종류
0
87
2
강의 자료에 대해서 궁금해요
0
115
2
GlobalFilter, LoggingFilter가 동작하지 않습니다.
0
89
2
Kafka Source Connect 버전 에러
0
83
2
소스커넥터는 사용안한 거 맞죠?
0
81
2
강의자료 업데이트 문의
0
94
2
강의에서 BCryptPasswordEncoder 에 역할(5-2)
0
56
1
강의 업데이트 계획이 궁금합니다.
0
111
2
MSA 애플리케이션에 Spring Web과 Spring Data JPA를 사용하는 것이 바람직한지 궁금합니다. (MSA 설계와 관련된 질문입니다)
0
160
2
어떤 것이 업데이트 된 건가요?
0
162
2


안녕하세요, 이도원입니다.
다음과 같이 사용자의 상세 정보를 요청하게 되면,
http://ip_address:8000/user-service/users/[user_id]
ex)
해당 사용자가 주문한 주문 내역이 같이 보여지게 됩니다. 이때 RestTempalte에서는 order-service에 요청하기 위해서 user-service.yml 파일로 부터 다음과 같은 주소를 사용하고 있습니다.
위에서 보시는 것처럼, EUREKA에 등록된 ORDER-SERVICE라는 애플리케이션명을 통해 직접 order service에 접속하고 있기 때문에, apigateway-service를 거치지 않고 바로 요청하게 됩니다. 만약 위 정보를 아래와 같이 apigateway를 거쳐서 접속하도록 수정한다면 apigateway-service에 해당 로그가 출력되는 것을 보실 수 있을겁니다.
위 로그는 apigateway-service에 대한 내용인데, 첫번째 request id -> c5045b2f-53는 user-service에 대한 요청이고, 두번째 request id -> 3925e9cb-1는 user-service에서 order-service를 요청한 내용입니다.
추가로, 위와 같이 Eureka의 ORDER_SERVICE라는 애플리케이션명 대신 직접 ip address를 지정해서 사용하실 경우에는 user-service에서 RestTemplate 빈을 등록하실 때 @LoadBalanced 어노테이션을 넣지 말고 실행하시기 바랍니다.