Eureka高可用集群搭建

就是搭建Eureka的集群。

 

 

 每个Eureka Server需要相互注册,确保数据一致。

我这里准备两个Eureka Server  他两的POM文件配置是一样的

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<!-- eureka-server -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies>

主要是配置文件:搭建集群时,主机名,端口不能一样。spring application name尽量取一样名字.  还需取C盘修改自己的host文件,让两个主机名被识别

在Windows目录下的System32里的dirvers里的etc,找到hosts   添加对应的数据   比如:127.0.0.1  eureka-server1   127.0.0.1  eureka-server2  这样两个都可以被识别

,然后取进行相互注册,两个Ereka server相互注册 

先说启动类:两个除了名字不一样 其他都一样

@SpringBootApplication
// 启用EurekaServer
@EnableEurekaServer
public class Eureka2App {

public static void main(String[] args) {
SpringApplication.run(Eureka2App.class,args);
}
}

配置文件:

Eureka-server1的配置

server:
port: 8761

eureka:
instance:
hostname: eureka-server1 # 主机名
client:
service-url:
defaultZone: http://eureka-server2:8762/eurekav #注册到另一个eureka server里 相互注册
register-with-eureka: true # 是否将自己的路径 注册到eureka上。eureka server 不需要的,eureka provider client 需要 这里true和false都一样
fetch-registry: true # 是否需要从eureka中抓取路径。eureka server 不需要的,eureka consumer client 需要 这里true和false都一样
spring:
application:
name: eureka-server-ha

Eureka-server2的配置

server:
port: 8762


eureka:
instance:
hostname: eureka-server2 # 主机名
client:
service-url:
defaultZone: http://eureka-server1:8761/eureka

register-with-eureka: true # 是否将自己的路径 注册到eureka上。eureka server 不需要的,eureka provider client 需要
fetch-registry: true # 是否需要从eureka中抓取路径。eureka server 不需要的,eureka consumer client 需要
spring:
application:
name: eureka-server-ha

Eureka Client 的配置 无论是Provider或是Consumer都需要修改下面的红色字段 注册两个Eureka server

server:
port: 8001


eureka:
instance:
hostname: localhost # 主机名
prefer-ip-address: true # 将当前实例的ip注册到eureka server 中。默认是false 注册主机名
ip-address: 127.0.0.1 # 设置当前实例的ip
instance-id: ${eureka.instance.ip-address}:${spring.application.name}:${server.port} # 设置web控制台显示的 实例id
lease-renewal-interval-in-seconds: 3 # 每隔3 秒发一次心跳包
lease-expiration-duration-in-seconds: 9 # 如果9秒没有发心跳包,服务器呀,你把我干掉吧~
client:
service-url:
defaultZone: http://eureka-server1:8761/eureka,http://eureka-server2:8762/eureka # eureka服务端地址,将来客户端使用该地址和eureka进行通信
spring:
application:
name: eureka-provider # 设置当前应用的名称。将来会在eureka中Application显示。将来需要使用该名称来获取路径

 在Eureka Client还没注册时  启动了两个Eureka Server 的场景

 

 

 

 

 

 两个已经互相注册了。

接下来把两个Eureka Client启动    eureka-server2 也会有下面一样的场景    开始进行远程调用  

 

 

 

 

 

 

 

 

 即使挂掉任何一个Eureka server  对应Eureka Client来说都不影响

 



posted @ 2021-10-28 15:39  超级大菜鸡  阅读(460)  评论(0)    收藏  举报