问题来源
单节点eureka服务并不适合线上生产环境使用,Eureka client会定时连接eureka服务器,获取服务注册列表中的信息并缓存到本地。微服务在消费远程API时总是使用本地缓存中的数据。Eureka服务器发生宕机,也不会影像到服务之间的调用。但如果Eureka宕机时,某些服务也出现了不可用的情况,Eureka客户端中的额缓存如果没有及时更新,就可能会影响到微服务的调用,甚至影响到整个应用系统的高可用性。因此,在生产环境中,通常会部署一个高可用的Eureka服务器集群。
Eureka服务器可以用过运行多个实例并相互注册的方式实现高可用部署,Eureka服务实例会彼此增量地同步信息,从而确保所有节点数据一致。事实上,节点之间相互注册是Eureka服务器的默认行为。
配置流程
1.添加以下内容到服务器hosts文件
1 | 127.0.0.1 peer1 peer2 peer3 |
2.复制application.yml三份并如图修改名称
3.设置每个节点的内容
application-peer1.yml1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21# eureka官方默认端口即为8761
server:
port: 8761
eureka:
# 设置服务名
instance:
hostname: peer1
client:
# 表示是否将自己注册到eureka上,默认为true,对于eureka服务器来说,不需要注册
register-with-eureka: false
# 表示是否从eureka服务器上获取注册信息,默认为true,单点eureka服务不需要不需要,集群需要。
fetch-registry: false
# 设置与eureka交互地址,其他服务查询服务和注册服务都需要用到这个地址
service-url:
defaultZone: http://peer2:8762/eureka,http://peer3:8763/eureka
# 关闭自我保护
server:
enable-self-preservation: false
eviction-interval-timer-in-ms: 4000
application-peer2.yml1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21# eureka官方默认端口即为8761
server:
port: 8762
eureka:
# 设置服务名
instance:
hostname: peer2
client:
# 表示是否将自己注册到eureka上,默认为true,对于eureka服务器来说,不需要注册
register-with-eureka: false
# 表示是否从eureka服务器上获取注册信息,默认为true,单点eureka服务不需要不需要,集群需要。
fetch-registry: false
# 设置与eureka交互地址,其他服务查询服务和注册服务都需要用到这个地址
service-url:
defaultZone: http://peer1:8761/eureka,http://peer3:8763/eureka
# 关闭自我保护
server:
enable-self-preservation: false
eviction-interval-timer-in-ms: 4000
application-peer3.yml1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21# eureka官方默认端口即为8761
server:
port: 8763
eureka:
# 设置服务名
instance:
hostname: peer3
client:
# 表示是否将自己注册到eureka上,默认为true,对于eureka服务器来说,不需要注册
register-with-eureka: false
# 表示是否从eureka服务器上获取注册信息,默认为true,单点eureka服务不需要不需要,集群需要。
fetch-registry: false
# 设置与eureka交互地址,其他服务查询服务和注册服务都需要用到这个地址
service-url:
defaultZone: http://peer2:8762/eureka,http://peer1:8761/eureka
# 关闭自我保护
server:
enable-self-preservation: false
eviction-interval-timer-in-ms: 4000
4.在idea中完成启动配置
【注意:peer2与peer3文件修改雷同】
配置完成后启动三个服务。
5.访问Eureka服务验证
从而成功完成eureka服务器的高可用
后面的文章会向大家介绍客户端的高可用,包括zuul网关和其他业务服务的配置。