上一篇文章【Spring Cloud搭建注册中心】成功搭建了一个Eureka Server服务注册中心,不过相信细心的朋友都会发现,这个服务注册中心是一个单节点服务注册中心,万一发生故障或者服务器宕机,那所有的服务可就不能使用了,这个在生产环境了是不允许的。
Eureka Server其实设计早就考虑到了高可用性,Eureka Server可以将自己作为服务注册到其他服务注册中心,这样可以互相注册,以实现服务清单的同步,达到高可用的效果。
——————————————————————————————————————————————————————
添加配置文件
在我们上一篇文章中,搭建的eureka-server-test项目中添加两个配置文件,aplication-peer1.properties和aplication-peer2.properties,详细配置文件内容如下:
#端口号
server.port=8081
spring.profiles=peer1
eureka.instance.hostname=peer1
#向注册中心注册服务
eureka.client.registerWithEureka=false
# 检索服务
eureka.client.fetchRegistry=false
eureka.client.serviceUrl.defaultZone=http://peer2:8082/eureka/
#在Eureka服务器获取不到集群里对等服务器上的实例时,需要等待的时间
server.waitTimeInMsWhenSyncEmpty=0
#自我保护模式
server.enableSelfPreservation=false
#端口号
server.port=8082
spring.profiles=peer2
eureka.instance.hostname=peer2
#向注册中心注册服务
eureka.client.registerWithEureka=false
# 检索服务
eureka.client.fetchRegistry=false
eureka.client.serviceUrl.defaultZone=http://peer1:8081/eureka/
#在Eureka服务器获取不到集群里对等服务器上的实例时,需要等待的时间
server.waitTimeInMsWhenSyncEmpty=0
#自我保护模式
server.enableSelfPreservation=false
在peer1配置文件中,serviceUrl指向peer2,而peer2配置文件中,serviceUrl指向peer1,这样就做到了相互注册。这里还需要注意在本地测试的时候,我们需要修改host文件(C:\Windows\System32\drivers\etc),添加以下内容:
127.0.0.1 peer1
127.0.0.1 peer2
生成jar包
使用IDEA进行Maven Intall,【 IntelliJ IDEA 社区版 Maven Install 和Maven clean】
启动两个注册服务中心
这里我们不使用IDEA进行项目启动,而是直接通过命令来启动。
java -jar eureka-server-test-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer1
java -jar eureka-server-test-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer2
启动成功之后,在浏览器中进行访问,这时候在8081的DS Replicas中可以看到peer2节点,在8082的DS Replicas中可以看到peer1节点,这样我们双节点的服务注册中心就搭建好了。
启动服务提供者
依然是上一篇文章中创建的eureka-client-test项目,修改提供者的配置文件:
server.port=9081
spring.application.name=client-demo
eureka.client.serviceUrl.defaultZone=http://peer1:8081/eureka/,http://peer2:8082/eureka/
此处两个服务注册中的地址都添加上,以","分隔。
然后分别访问http://localhost:8081/ 和 http://localhost:8082/ 可以看到提供者已经注册到两个服务注册中心了。
到这里,一个高可用的服务注册中心集群就搭建完成了。