注册中心这么关键的服务,如果是单点话,遇到故障就是毁灭性的。在一个分布式系统中,服务注册中心是最重要的基础部分,理应随时处于可以提供服务的状态。为了维持其可用性,使用集群是很好的解决方案。Eureka通过互相注册的方式来实现高可用的部署,所以我们只需要将Eureke Server配置其他可用的serviceUrl就能实现高可用部署。
双节点注册中心
首次我们尝试一下双节点的注册中心的搭建。
1、创建application-peer1.properties,作为peer1服务中心的配置,并将serviceUrl指向peer2
# 端口号
server.port=8201
#域名
#eureka.instance.hostname=192.168.41.24
eureka.instance.hostname=peer1
#默认设置下,服务注册中心也会将自己作为客户端来尝试注册自己,这里禁用它的客户端注册行为
#eureka.client.register-with-eureka=false
#由于注册中心的职责就是维护服务实例,它并不需要去检索服务,所以也设置为false
#eureka.client.fetch-registry=false
#默认服务器地址
#eureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/
eureka.client.service-url.defaultZone=http://peer2:8202/eureka/
#服务器名
spring.application.name=MyEurekaCenter
2、创建application-peer2.properties,作为peer2服务中心的配置,并将serviceUrl指向peer1
# 端口号
server.port=8202
#域名
#eureka.instance.hostname=192.168.41.24
eureka.instance.hostname=peer2
#表明自己是一个注册服务中心
#eureka.client.register-with-eureka=false
#eureka.client.fetch-registry=false
#默认服务器地址
#eureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/
eureka.client.service-url.defaultZone=http://peer1:8201/eureka/
spring.application.name=MyEurekaCenter
3、host转换
在hosts文件中加入如下配置(路径:C:\Windows\System32\drivers\etc)
127.0.0.1 peer1
127.0.0.1 peer2
4、启动项目
创建application.properties
通过不同的域名启动
spring.profiles.active=peer2
spring.profiles.active=peer1
依次启动后,在浏览器输入http://192.168.41.24:8201/效果图如下:
根据图可以看出peer1的注册中心DS Replicas已经有了peer2的相关配置信息,并且出现在available-replicas中。我们手动停止peer2来观察,发现peer2就会移动到unavailable-replicas一栏中,表示peer2不可用。
到此双节点的配置已经完成