Eureka 集群

作用:

  • 高可用
  • 负载均衡

案例项目

  • 2个Eureka服务器,2个服务提供者,一个服务调用者(本机测试)

       注:如果5个项目都已建立,只需要修改他们的application.yml 即可

 

  • 结构如下

                             

Step 3-1: 创建Eureka服务器1,2

    # 本次测试在同一台电脑上运行5个项目
    # 这里yml利用启动别名( profiles: slave1 、slave2)启动两次eureka server,两个yml配置到一起
    # 实战中分别配置yml

  • 修改application.yml
server:
  port: 8761
spring:
  application:
    name: eureka  #eureka server 1项目名称
  profiles: slave1   # 启动别名
eureka:
  server:
    renewalPercentThreshold: 0.49   # 自我保护比值,默认0.85 。本机测试时避免eureka页面错误提示,调成0.49
  instance:
    hostname: 192.168.28.225   # eureka server 2 的ip,也可以填别名如本机测试可以填localhost
  client:
    serviceUrl:
      defaultZone: http://192.168.28.225:8762/eureka/   # 注册到eureka service 2 url
---
server:
  port: 8762
spring:
  application:
    name: eureka   #eureka service 2 项目名称
  profiles: slave2
eureka:
  server:
    renewalPercentThreshold: 0.49
  instance:
    hostname: 192.168.28.225
  client:
    serviceUrl:
      defaultZone: http://192.168.28.225:8761/eureka/
  • 入口main方法核心代码

    通过输入不同端口,启动两次程序。 IDEA 如何设置启动多次项目,请点击 

	public static void main(String[] args) {
		// 读取控制台输入,决定使用哪个profiles.(其中FirstServer为类名)
		Scanner scan = new Scanner(System.in);
		String profiles = scan.nextLine();
		new SpringApplicationBuilder(FirstServer.class).profiles(profiles).run(args);
	}

Step 3-2: 创建提供者1,2 

  • 修改application.yml
spring:
  application:
    name: provider
eureka:
  instance:
    hostname: 192.168.28.225
  client:
    serviceUrl:
      defaultZone: http://192.168.28.225:8761/eureka/,http://192.168.28.225:8762/eureka/
  • 入口main方法核心代码

    通过输入不同端口,启动两次程序。 IDEA 如何设置启动多次项目,请点击 

    public static void main(String[] args) {
        // 读取控制台输入的端口,避免端口冲突
        Scanner scan = new Scanner(System.in);
        String port = scan.nextLine();
        new SpringApplicationBuilder(ProviderApplication.class).properties(
                "server.port=" + port).run(args);
    }

 

Step 3-3: 调用者invoker注册到两个Eureka server 

  • 修改application.yml
server:
  port: 9000
spring:
  application:
    name: invoker
eureka:
  instance:
    hostname: localhost
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/,http://localhost:8762/eureka/

启动顺序

                    

结果:达到了负载均衡的目的

                     

 

注意事项

  • 依次开启Eureka server 1,2 ,server 1,2 ,invoker 后,
  1. server1,2 和invoker只在Eureka server 2 上注册,Eureka server 1上并没有注册
  2. 有负载均衡的能力
  • 关闭 Eureka server 2 
  1. server1,2 ,invoker 均在 Eureka server 1 上注册
  2. 有负载均衡的能力
  3. Eureka server 1 页面如下警告(不影响功能)

EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE.

 

  • 本地测试启动时取消EMERGENCY!...警告

修改Eureka server 的 application.yml

eureka:
  server:
    renewalPercentThreshold: 0.49   # 自我保护比值,默认0.85 。本机测试时避免eureka页面错误提示,调成0.49

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2019-02-22 16:47  随风落木  阅读(0)  评论(0编辑  收藏  举报  来源