eureka client dependency 추가
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
dependencyManagement 설정
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
spring-boot version = 2.5.5
spring-cloud version = 2020.0.4
@EnableDiscoveryClient
public class TaxApplication {
...
}
@EnableDiscoveryClient 어노테이션 추가
server:
port: 0
eureka:
client:
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: http://localhost:8761/eureka
instance:
instance-id: ${spring.application.name}:${spring.application.instance_id:${random.value}}
spring:
application:
name: etaxbill-service
server.port = 0 랜덤포트 설정
instance-id를 설정하여 client 인스턴스 구분 표시
server:
port: 8443
eureka:
client:
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: http://localhost:8761/eureka
spring:
application:
name: apigateway-service
cloud:
gateway:
default-filters:
- name: GlobalFilter
args:
baseMessage: Spring Cloud Gateway Global filter
preLogger: true
postLogger: true
routes:
- id: tax-invoice
# uri: http://tax.blueport.co.kr:8443/
uri: lb://etaxbill-service
predicates:
- Path=/v1/**
filters:
# - AddRequestHeader=headerName, headerValue
# - AddResponseHeader=headerName2, headerValue2
- CustomFilter
uri주소를 'lb://서비스명'으로 찾음. (spring.application.name)
서비스명은 자동 uppercase됨.
API 요청 -> API Gateway -> Eureka Server:Service Discovery,Registration(위치정보 및 라우팅, 로드밸런싱) -> API Gateway -> Discovery Client(해당서비스 수행)