EurekaServer的高可用实际上就是讲自己作为服务向其他的服务注册中心注册自己,这样就可以形成一组互相注册的服务注册中心,以实现服务清单的互相同步。
单个的Eureka的服务端和客户端,课参考我的上一篇博客https://mp.csdn.net/postedit/90634842
那么久直接开始今天的代码:
- 创建application-peer1.propertise,作为服务中心,serviceUrl指向peer2
spring.application.name=eureka-server
server.port=1111
eureka.instance.hostname=peer1
eureka.client.serviceUrl.defaultZone=http://peer2:1112/eureka/
- 创建allpication-peer2.properties,作为peer2服务中心,serviceUrl指向peer1
spring.application.name=eureka-server
server.port=1112
eureka.instance.hostname=peer2
eureka.client.serviceUrl.defaultZone=http://peer1:1111/eureka/
- 在/etc/hosts文件中添加peer1和peer2的转换,host的文件路径:C:\Windows\System32\drivers\etc\hosts中添加
127.0.0.1 peer1
127.0.0.1 peer2
- 将项目打包使用spring,profiles.active属性来分别启动peer1和peer2:
java -jar C:\Users\Administrator\Desktop\eureka-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer1
java -jar C:\Users\Administrator\Desktop\eureka-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer2
C:\Users\Administrator\Desktop\ 为你jar放置的路径
当你启动第一个的时候,会报错找不到服务:
不用担心,这是正常的,因为作为注册中心,可以将自己作为服务注册自己,那么在没有启动另外一个服务中心的时候,当然就找不到服务了。
- 当两个服务都起来后,分别访问http://localhost:1111和http://localhost:1112,都可以看到eureka-service服务
- 在设置了多节点的服务注册中心之后,服务提供方需要做一些简单的配置才能将服务注册到EurekaService集群中,主要就是修改application.properties配置文件中的eureka.client.serviceUrl.defaultZone的属性做改动,将注册中心指向peer1和peer2
spring.application.name=helloDemo-service
eureka.client.serviceUrl.defaultZone=http://peer1:1111/eureka/,http://peer2:1112/eureka/
启动 服务提供方(即客户端)项目,可以看到helloDemo-service服务同时被注册到了peer1和peer2
由于helloDemo同时注册向peer1和peer2上了,既是断开其中一个注册中心,那么在另外一个注册中心依然能访问到helloDemo-service,从而实现了服务注册中心的高可用
由于在实际应用中都是多台服务器,所以就不需要再host文件中配置域名,只需要在注册中心的配置文件中添加
eureka.instance.prefer-ip-address=true,该值默认为false,这样就可以指定eureka.instance.hostname为服务器IP
充实的一天又即将过去,在不断的学习中茁壮成长!!!