在于在我们平时的生产环境中,很难保证单节点的eureka服务能提供百分百不间断的服务,如果eureka无响应了,整个项目应用都会出现问题,因此要保证eureka随时都能提供服务的情况下,最好的方式就是采用eureka的集群模式,也就是搭建eureka的高可用,在eureka的集群模式下,多个eureka server之间可以同步注册服务,因此在一个eureka宕掉的情况下仍然可以提供服务注册和服务发现的能力,从而达到注册中心的高可用.
Eureka注册集群配置
Maven依赖
1 | <dependencyManagement> |
项目结构
1 | eureka-registry |
Maven配置
1 | <dependencies> |
主类代码
@EnableEurekaServer
注解即开启注册中心服务器的功能.
1 |
|
配置Host
伪示例机器结点
1 | 127.0.0.1 node1.test.com node2.test.com node3.test.com |
配置示例
通用配置
application.properties
配置文件内容(共用)
1 | spring.application.name=registry-center |
节点配置
application-node1.properties
配置文件内容
1 | spring.application.name=registry-node1 |
application-node2.properties
配置文件内容
1 | spring.application.name=registry-node2 |
application-node3.properties
配置文件内容
1 | spring.application.name=registry-node3 |
参数说明:
- spring.application.name:应用名称
- server.port=8003: 应用服务端口
- eureka.server.enable-self-preservation: 配置Eureka自我保护机制(默认为true)
- eureka.server.eviction-interval-timer-in-ms: 配置向Eureka server发送心跳间隔
- eureka.client.register-with-eureka: 配置是否将当前实例注册到Eureka server(默认为true)
- eureka.client.fetch-registry: 是否从Eureka server获取注册信息
- eureka.client.service-url.defaultZone: 配置eureka server列表,多个节点可以
,
分隔, 默认值为(http://localhost:8761/eureka/)
启动节点
1 | [root@localhost target ]$ java -jar eureka-registry-1.0-SNAPSHOT.jar --spring.profiles.active=node1 & |
说明: 第一个服务会抛出一些错误,请不用担心那是因为其余服务还没有启动.启动之后就会没有问题了.
查看示例
访问node1.test.com:8081
效果如下(同理可以访问node2.test.com:8082, node3.test.com:8083),因为加了授权,访问使用admin/pwd123即可
服务注册配置
在设置了多节点的服务注册中心之后,我们需要简单服务配置,就能将服务注册到Eureka Server集群中; 对应的注册中心地址如下:
1 | eureka.client.service-url.defaultZone=http://admin:pwd123@node1.test.com:8001/eureka/,http://admin:pwd123@node1.test.com:8002/eureka/,http://admin:pwd123@node3.test.com:8003/eureka/ |