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 后,
- server1,2 和invoker只在Eureka server 2 上注册,Eureka server 1上并没有注册
- 有负载均衡的能力
- 关闭 Eureka server 2
- server1,2 ,invoker 均在 Eureka server 1 上注册
- 有负载均衡的能力
-
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