Eureka Server 和 Spring Boot Admin 在一个应用程序中

Eureka Server and Spring Boot Admin in one Application

我尝试在一个应用程序中 运行 Eureka Server 和 Spring Boot Admin Server(SBA Docu 说这是可能的)。 Eureka 正在按预期工作,但管理应用程序仍显示零应用程序。

Spring 引导版本 2.0.3, Spring 引导管理版本 2.0.1

Eureka 和 SBA 服务器

@SpringBootApplication
@EnableEurekaServer
@EnableDiscoveryClient
@EnableAdminServer
class KotlintestApplication
fun main(args: Array<String>) {
    SpringApplication.run(KotlintestApplication::class.java, *args)
}

服务器bootstrap.yml

spring:
      application:
        name: server

服务器application.yml

spring:
  boot:
   admin:
     context-path: /admin

eureka:
  instance:
    leaseRenewalIntervalInSeconds: 10
  client:
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://localhost:8080/eureka

客户

@EnableDiscoveryClient
@SpringBootApplication
class KotlintestApplication

fun main(args: Array<String>) {
    SpringApplication.run(KotlintestApplication::class.java, *args)
}

@Configuration
class SecurityPermitAllConfig : WebSecurityConfigurerAdapter() {
    @Throws(Exception::class)
    override fun configure(http: HttpSecurity) {
        http.authorizeRequests().anyRequest().permitAll()
                .and().csrf().disable()
    }
}

客户bootstrap.yml

 spring:
      application:
        name: client
 server:
    port: 0

客户application.yml

management:
  endpoints:
    web:
      exposure:
        include: "*"
  endpoint:
    health:
      show-details: ALWAYS

eureka:
  instance:
    hostname: localhost
    health-check-url-path: /actuator/health
    status-page-url-path: /actuator/info
  client:
    serviceUrl:
      defaultZone: http://127.0.0.1:8080/eureka/

自己找到答案

从服务器 application.yaml 中删除 fetchRegistry: false。 服务器必须获取注册表才能看到客户端...

顺便说一句:如果您想 运行 在同一主机上使用随机端口的多个实例,您应该设置一个 instanceId。否则实例之间的 SBA 不能不同。

eureka:
  instance:
    instanceId : client-${random.uuid}