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来说都不影响

浙公网安备 33010602011771号