spring cloud 搭建注册中心Eureka(集群模式)
集群
注册中心这么关键的服务,如果是单点话,遇到故障就是毁灭性的。在一个分布式系统中,服务注册中心是最重要的基础部分,理应随时处于可以提供服务的状态。为了维持其可用性,使用集群是很好的解决方案。Eureka通过互相注册的方式来实现高可用的部署,所以我们只需要将Eureke Server配置其他可用的serviceUrl就能实现高可用部署。
新建3个配置文件
application-peer1.yml
spring: application: name: Service #应用名称,也是服务注册的名称 server: port: 8000 #开启端口 eureka: instance: hostname: peer1 #主机名 client: serviceUrl: defaultZone: http://peer2:8001/eureka/,http://peer3:8002/eureka/ #与Eureka Server交互的地址,查询服务和服务注册都需要依赖这个地址 #默认为http://localhost:8761/eureka, 多个地址用","分割 fetch-registry: false #是否将自己注册到Eureka Server 默认为true register-with-eureka: true #是否从Eureka Server查询注册信息 server: enable-self-preservation: false #关闭自我保护模式 eviction-interval-timer-in-ms: 4000 #清理服务间隔4s,默认60*10000
application-peer2.yml
spring: application: name: Service #应用名称,也是服务注册的名称 server: port: 8001 #开启端口 eureka: instance: hostname: peer2 #主机名 client: serviceUrl: defaultZone: http://peer1:8000/eureka/,http://peer3:8002/eureka/ #与Eureka Server交互的地址,查询服务和服务注册都需要依赖这个地址 #默认为http://localhost:8761/eureka, 多个地址用","分割 fetch-registry: false #是否将自己注册到Eureka Server 默认为true register-with-eureka: true #是否从Eureka Server查询注册信息 server: enable-self-preservation: false #关闭自我保护模式 eviction-interval-timer-in-ms: 4000 #清理服务间隔4s,默认60*10000
application-peer3.yml
spring: application: name: Service #应用名称,也是服务注册的名称 server: port: 8002 #开启端口 eureka: instance: hostname: peer3 #主机名 client: serviceUrl: defaultZone: http://peer1:8000/eureka/,http://peer2:8001/eureka/ #与Eureka Server交互的地址,查询服务和服务注册都需要依赖这个地址 #默认为http://localhost:8761/eureka, 多个地址用","分割 fetch-registry: false #是否将自己注册到Eureka Server 默认为true register-with-eureka: true #是否从Eureka Server查询注册信息 server: enable-self-preservation: false #关闭自我保护模式 eviction-interval-timer-in-ms: 4000 #清理服务间隔4s,默认60*10000
注意:
1.register-with-eureka 需要设置为true,或者不设置,默认为true
2.hostname和defaultZone的域名不要设置为localhost,应设置为别名,并在操作系统的host文件中添加映射,
127.0.0.1 peer1 127.0.0.1 peer2 127.0.0.1 peer3
否则后台会出现registered-replicas为空的情况
3.enable-self-preservation 设置为false 关闭自我保护模式,否则一个节点挂掉之后,不会在unavailable-replicas中出现
在idea中设置3个启动方式,并分别设置启动时应用的配置文件名,springboot中约定 配置文件以application-{profiles}.xxx的方式命名
3个同时启动,分别访问 localhost:8000, localhost:8001, localhost:8002
关闭节点peer1,一段时间后,peer1节点信息将出现在 unavailable-replicas 中,如果不关闭自我保护模式,则不会出现。
再次启动peer1,又会恢复正常
以jar包形式启动3个应用,
java -jar -Dspring.profiles.active=peer1 Service.jar java -jar -Dspring.profiles.active=peer2 Service.jar java -jar -Dspring.profiles.active=peer3 Service.jar