지난 포스트에서는 Eureka Server로 동작할 Service Discovery를 만들었습니다.
ServiceDiscovery 포스트
Eureka Server에 각 Service들을 Client로 등록해서 Server가 파악할 수 있게 해야합니다.
Eureka Server에 각 Service들을 Client로 등록해서 Server가 파악할 수 있게 해야합니다.
groovy
1 // build.gradle 2 dependencies { 3 implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client' 4 }
Service Client로 등록하는 어노테이션은 총 2개가 있습니다.
@EnableDiscoveryClient
이 어노테이션은 Eureka뿐 아니라 consul, zookeeper들이 같이 속해있습니다.
해당 기능들도 같이 구현하여 사용하고 싶을 때 이 어노테이션을 사용합니다.
@EnableEurekaClient
이 어노테이션은 오로지 Eureka Client로 등록해주기만 합니다.
두 어노테이션중 하나를 선택하여서, 메인클래스에 붙이면 됩니다.
java
1 @SpringBootApplication 2 @EnableEurekaClient 3 public class TestApplication { 4 public static void main(String[] args) { 5 SpringApplication.run(TestApplication.class, args); 6 } 7 }
yml
1 eureka: 2 client: 3 serviceUrl: 4 defaultZone: http://www.exam.com:8085/eureka/ 5 registerWithEureka: true 6 fetchRegistry: true
Eureka Server의 URL을 eureka.client.serviceUrl.defaultZone 설정값에 넣어줘야 합니다.
그리곤 Eureka Server 서비스와는 반대로, Client임을 알리기 위해
eureka.client.registerWithEureka,
eureka.client.fetchRegistry 이 두개의 값을 true로 설정합니다.
yml
1 spring: 2 application: 3 name: client-name
spring.application.name의 이름으로 Eureka Server에 등록됩니다.
Eureka Server는 HTTP Method를 받아서 등록, 갱신, 및 삭제를 진행합니다.
등록
appID로 Client에 등록합니다.
POST /eureka/apps/[appID]
갱신
appID의 instanceID 갱신을 받습니다.
PUT /eureka/apps/[appID]/[instanceID]
삭제
appID의 instanceID를 삭제합니다.
DELETE /eureka/apps/[appID]/[instanceID]
위의 등록 방법에서 어노테이션을 적용하면 위 3가지 작업을 자동으로 진행합니다.
갱신 요청이 일정 시간동안 없다면 해당 서비스를 죽은것으로 간주합니다.