Eureka Server(ServiceClient)

2023-04-13
ꞏ
유영진
ꞏ
show5116

지난 포스트에서는 Eureka Server로 동작할 Service Discovery를 만들었습니다.
ServiceDiscovery 포스트
Eureka Server에 각 Service들을 Client로 등록해서 Server가 파악할 수 있게 해야합니다.

등록방법

Eureka Server에 각 Service들을 Client로 등록해서 Server가 파악할 수 있게 해야합니다.

Dependencies

groovy
1// build.gradle
2dependencies {
3 implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
4}

Annotation

Service Client로 등록하는 어노테이션은 총 2개가 있습니다.

  • @EnableDiscoveryClient

    이 어노테이션은 Eureka뿐 아니라 consul, zookeeper들이 같이 속해있습니다.
    해당 기능들도 같이 구현하여 사용하고 싶을 때 이 어노테이션을 사용합니다.

  • @EnableEurekaClient

    이 어노테이션은 오로지 Eureka Client로 등록해주기만 합니다.

두 어노테이션중 하나를 선택하여서, 메인클래스에 붙이면 됩니다.

java
1@SpringBootApplication
2@EnableEurekaClient
3public class TestApplication {
4 public static void main(String[] args) {
5 SpringApplication.run(TestApplication.class, args);
6 }
7}

설정 파일 추가

yml
1eureka:
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
1spring:
2 application:
3 name: client-name

spring.application.name의 이름으로 Eureka Server에 등록됩니다.

Eureka 등록의 원리 (HTTP Method로 등록 및 삭제)

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가지 작업을 자동으로 진행합니다.
갱신 요청이 일정 시간동안 없다면 해당 서비스를 죽은것으로 간주합니다.