譬如eureka.client.register-with-eureka和fetch-registry是否要配置,配不配区别在哪里;eureka的客户端添加service-url时,是不是需要把所有的eureka的server地址都写上,还是只需要写一个server就可以了(因为server之间已经相互注册了)?如果写上了所有的server地址,那相当于将每个client服务都往所有的server都添加了一遍,那还配置server间的相互注册有什么意义?

  • 两个服务端配置:
server:
  port: 20001
eureka:
  instance:
    hostname: server1
  client:
    # 表示是否注册自身到eureka服务器
    # register-with-eureka: false
    # 是否从eureka上获取注册信息
    # fetch-registry: false
    service-url:
      defaultZone: http://server2:20002/eureka/
server:
  port: 20002
eureka:
  instance:
    hostname: server2
  client:
    #register-with-eureka: false
    #fetch-registry: false
    service-url:
      defaultZone: http://server1:20001/eureka/
  • 客户端配置:
    • defaultZone这里代表eureka server的地址,
    • 很多文章在这里会将所有的server都配置上去,用逗号分隔,
    • 我们这里只配置一个server1,然后测试一下如果server1挂掉了,服务中心还能不能起作用。
      • 可以看到eureka_client已经在两个server上都注册上了,虽然我们在client的yml里default_zone只配置了server1。
      • 但是请注意:如果server1挂掉了,那么后续的client就无法再注册上来,重启Client后也无法再注册到eureka上来。
        • 这就是为什么很多人在Client端添加多个eureka地址的原因!
        • 是避免自己注册的eureka单点挂掉。
        • 只要自己注册的eureka还在,那么后续添加N个eureka的其他server,所有注册信息都会被复制过去。
spring:
  application:
    name: eureka_client
eureka:
  client:
    service-url:
      defaultZone: http://server1:20001/eureka/
02-11 18:56