美文网首页
使用多个 Eureka Server

使用多个 Eureka Server

作者: 楼主楼主 | 来源:发表于2018-06-01 02:19 被阅读0次

    spring cloud学习笔记

    上文 创建、配置Eureka Server 和 Client
    下文 使用RestTemplate进行应用间通信

    通过不同的配置文件 application.yml 启动多个实例来实现

    #Server 1
    server:
      port: 8761
    eureka:
      server:
        enable-self-preservation: false 
      client:
        service-url:
          defaultZone: http://localhost:8762/eureka/ #两个server相互注册
        register-with-eureka: false 
    spring:
      application:
        name: eureka-demo
    
    #Server 2
    server:
      port: 8762
    eureka:
      server:
        enable-self-preservation: false 
      client:
        service-url:
          defaultZone: http://localhost:8761/eureka/ #两个server相互注册
        register-with-eureka: false 
    spring:
      application:
        name: eureka-demo
    

    这样 在 idea 或者 Eclipse 中我们需要启动一个实例,然后修改配置再启动一个实例,有点乱。
    可以把 application.yml 定义为下面的形式:

    # 无参数启动
    spring:
      application:
        name: eureka-demo
    server:
      port: 8761
    eureka:
      server:
        enable-self-preservation: false #防止由于eureka的机制导致 client 被错误显示在线 在开发环境使用
      client:
        service-url:
          defaultZone: http://localhost:8761/eureka/
    ---
    # 启动参数 --spring.profiles.active=server1
    spring:
      profiles: server1
    server:
      port: 8761
    eureka:
      client:
        service-url:
          defaultZone: http://localhost:8762/eureka/
    ---
    # 启动参数 --spring.profiles.active=server2
    spring:
      profiles: server2
    server:
      port: 8762
    eureka:
      client:
        service-url:
          defaultZone: http://localhost:8761/eureka/
    

    运行方式

    1. 在idea中运行
      新建2个运行配置 server1 server2,按图片所示分别添加参数
      --spring.profiles.active=server1
      --spring.profiles.active=server2
    2. 打包运行
      启动两个cmd窗口,切换到项目目录下,分别运行
      java -jar target/eureka-0.0.1-SNAPSHOT.jar --spring.profiles.active=server1
      java -jar target/eureka-0.0.1-SNAPSHOT.jar --spring.profiles.active=server2

    我们同时运行刚才创建的 Client,注意我们只把 Client 注册到了http://localhost:8761/eureka/ 也就是server1中
    此时,localhost:8761,localhost:8762的Eureka Server 均显示如下,即只在server1中注册的Client也被注册到了server2

    虽然,Client被自动注册到了server2,但是如果server1不启动,server2无法得到Client的注册(Client在server2注册后,server1变成不可用并不影响)。所以我们在Client中做修改,配置2个defaultZone

    eureka:
      client:
        service-url:
          defaultZone: http://localhost:8761/eureka/,http://localhost:8762/eureka/
    

    当有3个Eureka Server时,以此类推,三个Server相互配置另外2个地址,Client 配置 3个地址

    相关文章

      网友评论

          本文标题:使用多个 Eureka Server

          本文链接:https://www.haomeiwen.com/subject/dhxhsftx.html