Azure Container Apps에서 Eureka Server for Spring 구성 요소에 대한 설정 구성(미리 보기)
Eureka Server for Spring은 마이크로 서비스에 대한 중앙 집중식 서비스 검색을 위한 메커니즘입니다. 다음 지침을 사용하여 Eureka Server for Spring 구성 요소를 구성하고 관리하는 방법을 알아봅니다.
표시
show
명령을 사용하여 이름으로 개별 구성 요소의 세부 정보를 볼 수 있습니다.
다음 명령을 실행하기 전에 <>
로 묶인 자리 표시자를 원하는 값으로 바꿉니다.
az containerapp env java-component eureka-server-for-spring show \
--environment <ENVIRONMENT_NAME> \
--resource-group <RESOURCE_GROUP> \
--name <JAVA_COMPONENT_NAME>
List
list
명령을 사용하여 등록된 모든 Java 구성 요소를 나열할 수 있습니다.
다음 명령을 실행하기 전에 <>
로 묶인 자리 표시자를 원하는 값으로 바꿉니다.
az containerapp env java-component list \
--environment <ENVIRONMENT_NAME> \
--resource-group <RESOURCE_GROUP>
바인딩 해제
컨테이너 앱에서 바인딩을 제거하려면 --unbind
옵션을 사용합니다.
다음 명령을 실행하기 전에 <>
로 묶인 자리 표시자를 원하는 값으로 바꿉니다.
az containerapp update \
--name <APP_NAME> \
--unbind <JAVA_COMPONENT_NAME> \
--resource-group <RESOURCE_GROUP>
Eureka Server for Spring에 허용되는 구성 목록
다음 목록에서는 지원되는 구성에 대해 자세히 설명합니다. 자세한 내용은 Spring Cloud Eureka Server에서 확인할 수 있습니다.
참고 항목
새 기능 요청에 대한 지원 티켓을 제출하세요.
구성 옵션
az containerapp update
명령은 --configuration
매개 변수를 사용하여 Spring용 Eureka Server를 구성하는 방법을 제어합니다. 여러 매개 변수를 공백으로 구분하면 한 번에 여러 매개 변수를 사용할 수 있습니다. 자세한 내용은 Spring Cloud Eureka Server 문서에서 확인할 수 있습니다.
다음 구성 설정은 eureka.server
구성 속성에서 사용할 수 있습니다.
속성 | 설명 | 기본값 |
---|---|---|
eureka.server.enable-self-preservation |
사용하도록 설정하면 서버는 서버에서 받아야 하는 갱신 횟수를 추적합니다. 언제든지 갱신 횟수는 eureka.server.renewal-percent-threshold에 정의된 임계값 비율 아래로 떨어집니다. 기본값은 원래 Eureka 서버에서 true (으)로 설정되지만 Eureka Server Java 구성 요소에서 기본값은 false (으)로 설정됩니다. Eureka Server for Spring Java 구성 요소의 제한 사항을 참조하세요. |
false |
eureka.server.renewal-percent-threshold |
eureka.server.renewal-threshold-update-interval-ms에 지정된 기간 동안 클라이언트에서 예상되는 최소 갱신 비율. 갱신이 임계값 아래로 떨어지면 eureka.server.enable-self-preservation이 사용하도록 설정되면 만료가 사용하지 않도록 설정됩니다. | 0.85 |
eureka.server.renewal-threshold-update-interval-ms |
eureka.server.renewal-percent-threshold에 지정된 임계값을 업데이트해야 하는 간격. | 0 |
eureka.server.expected-client-renewal-interval-seconds |
클라이언트가 하트비트를 보낼 것으로 예상되는 간격. 기본값은 30초입니다. 클라이언트가 서로 다른 빈도(예: 15초마다)로 하트비트를 보내는 경우 이 매개 변수를 그에 맞게 조정해야 합니다. 그렇지 않으면 자체 보존이 예상대로 작동하지 않습니다. | 30 |
eureka.server.response-cache-auto-expiration-in-seconds |
변경 이벤트로 인해 레지스트리 페이로드가 무효화되지 않는 경우 레지스트리 페이로드가 캐시에 보관되어야 하는 시간을 가져옵니다. | 180 |
eureka.server.response-cache-update-interval-ms |
클라이언트의 페이로드 캐시를 업데이트해야 하는 시간 간격을 가져옵니다. | 0 |
eureka.server.use-read-only-response-cache |
com.netflix.eureka.registry.ResponseCache는 현재 응답에 대해 2단계 캐싱 전략을 사용합니다. 만료 정책이 있는 읽기/쓰기 캐시와 만료 없이 캐시하는 읽기 전용 캐시. | true |
eureka.server.disable-delta |
델타 정보가 클라이언트에 제공될 수 있는지 확인합니다. | false |
eureka.server.retention-time-in-m-s-in-delta-queue |
클라이언트가 값을 놓치지 않고 검색할 수 있도록 델타 정보를 캐시해야 하는 시간을 가져옵니다. | 0 |
eureka.server.delta-retention-timer-interval-in-ms |
정리 작업이 활성화되어야 하는 시간 간격을 가져오고 만료된 델타 정보를 확인합니다. | 0 |
eureka.server.eviction-interval-timer-in-ms |
인스턴스를 만료시키는 작업이 깨어나서 실행되어야 하는 시간 간격을 가져옵니다. | 60000 |
eureka.server.sync-when-timestamp-differs |
타임스탬프가 다를 때 인스턴스를 동기화할지 여부를 확인합니다. | true |
eureka.server.rate-limiter-enabled |
속도 제한기를 사용하도록 설정할지 사용하지 않도록 설정할지 여부를 나타냅니다. | false |
eureka.server.rate-limiter-burst-size |
속도 제한기, 토큰 버킷 알고리즘 속성입니다. | 10 |
eureka.server.rate-limiter-registry-fetch-average-rate |
속도 제한기, 토큰 버킷 알고리즘 속성입니다. 평균 적용 요청 속도를 지정합니다. | 500 |
eureka.server.rate-limiter-privileged-clients |
인증된 고객 목록. 이는 표준 유레카 Java 클라이언트에 추가됩니다. | 해당 없음 |
eureka.server.rate-limiter-throttle-standard-clients |
속도 제한 표준 클라이언트인지 여부를 나타냅니다. false로 설정하면 비표준 클라이언트만 속도가 제한됩니다. | false |
eureka.server.rate-limiter-full-fetch-average-rate |
속도 제한기, 토큰 버킷 알고리즘 속성입니다. 평균 적용 요청 속도를 지정합니다. | 100 |
일반 구성
- 관련 구성 로깅
- logging.level.*
- logging.group.*
- logging.* 네임스페이스 아래의 다른 모든 구성은 금지되어야 합니다. 예를 들어,
logging.file
을 사용하여 로그 파일을 작성하는 것은 금지되어야 합니다.
애플리케이션 간 호출
이 예에서는 Eureka Server for Spring 구성 요소에 등록된 애플리케이션 간 호출을 위한 Java 코드를 작성하는 방법을 보여 줍니다. 컨테이너 앱이 Eureka와 바인딩되면 Eureka 서버를 통해 서로 통신합니다.
이 예제에서는 호출자와 호출 수신자라는 두 개의 애플리케이션을 만듭니다. 두 애플리케이션 모두 Eureka Server for Spring 구성 요소를 사용하여 서로 통신합니다. 호출 수신자 애플리케이션은 호출자 애플리케이션에서 호출하는 엔드포인트를 노출합니다.
호출 수신자 애플리케이션을 만듭니다. 주 클래스에
@EnableDiscoveryClient
주석을 추가하여 Spring Boot 애플리케이션에서 Eureka 클라이언트를 사용하도록 설정합니다.@SpringBootApplication @EnableDiscoveryClient public class CalleeApplication { public static void main(String[] args) { SpringApplication.run(CalleeApplication.class, args); } }
호출자 애플리케이션에서 호출하는 호출 수신자 애플리케이션에서 엔드포인트를 만듭니다.
@RestController public class CalleeController { @GetMapping("/call") public String calledByCaller() { return "Hello from Application callee!"; } }
애플리케이션 구성 파일에서 호출 수신자 애플리케이션의 이름을 설정합니다. application.yml을 예로 들 수 있습니다.
spring.application.name=callee
호출자 애플리케이션을 만듭니다.
@EnableDiscoveryClient
주석을 추가하여 Eureka 클라이언트 기능을 사용하도록 설정합니다. 또한@LoadBalanced
주석을 사용하여WebClient.Builder
빈을 만들어 다른 서비스에 대한 부하 분산 호출을 수행합니다.@SpringBootApplication @EnableDiscoveryClient public class CallerApplication { public static void main(String[] args) { SpringApplication.run(CallerApplication.class, args); } @Bean @LoadBalanced public WebClient.Builder loadBalancedWebClientBuilder() { return WebClient.builder(); } }
WebClient.Builder
을(를) 사용하는 호출자 애플리케이션에서 해당 애플리케이션 이름, 호출 수신자를 사용하여 호출 수신자 애플리케이션을 호출하기 위한 컨트롤러를 만듭니다.@RestController public class CallerController { @Autowired private WebClient.Builder webClientBuilder; @GetMapping("/call-callee") public Mono<String> callCallee() { return webClientBuilder.build() .get() .uri("http://callee/call") .retrieve() .bodyToMono(String.class); } }
이제 Eureka Server for Spring Java 구성 요소를 사용하여 서로 통신하는 호출자와 호출 수신자 애플리케이션이 생겼습니다. 호출자 애플리케이션에서 /call-callee
엔드포인트를 테스트하기 전에 두 애플리케이션이 실행 중이고 Eureka 서버와 바인딩되어 있는지 확인합니다.
제한 사항
Eureka Server Java 구성 요소에는
false
(으)로 설정된 기본 구성eureka.server.enable-self-preservation
이(가) 함께 제공됩니다. 이 기본 구성은 자체 보존을 사용하도록 설정한 후 인스턴스가 삭제되지 않는 시간을 피하는 데 도움이 됩니다. 인스턴스가 너무 일찍 삭제되면 일부 요청이 존재하지 않는 인스턴스로 전달될 수 있습니다. 이 설정을true
(으)로 변경하려면 Java 구성 요소에서 고유한 구성을 설정하여 덮어쓸 수 있습니다.Eureka 서버에는 복제본이 하나뿐이며 크기 조정을 지원하지 않으므로 피어 Eureka 서버 기능을 사용할 수 없습니다.
Eureka 대시보드를 사용할 수 없습니다.