springcloud学习Spring Cloud

Eureka高可用

2018-08-23  本文已影响33人  二月_春风

在微服务中我们要考虑到发生故障的情况,所以说对服务注册中心也要进行高可用部署。

官方对于Eureka 高可用的描述:
Eureka can be made even more resilient and available by running multiple instances and asking them to register with each other. In fact, this is the default behaviour, so all you need to do to make it work is add a valid serviceUrl to a peer, e.g.

就是通过多个eureka实例进行互相注册,然后修改每个实例的serviceUrl即可。Eureka Server的高可用实际上就是将自己作为服务向其他服务注册中心注册自己,这样就可以形成一组互相注册的服务注册中心,以实现服务清单的互相同步,达到高可用的效果。

之前的有配置:

eureka:
  client:
    register-with-eureka: false
    fetch-registry: false

让服务注册中心不注册自己。

创建application-peer1.yml文件

eureka:
  instance:
    hostname: peer1
  client:
    register-with-eureka: true # 当然这个默认就是true,表示向eureka注册自己
    fetch-registry: true # 这个的意思是从eureka server拉取注册表,集群中从相邻的eureka server拉取注册表
    service-url:
      defaultZone: http://peer2:8762/eureka/
      

server:
  port: 8761
spring:
  application:
    name: eureka-server

向peer2注册自己。

创建application-peer2.yml文件,配置

eureka:
  instance:
    hostname: peer2
  client:
    register-with-eureka: true # 当然这个默认就是true,表示向eureka注册自己
    fetch-registry: true # 这个的意思是从eureka server拉取注册表,集群中从相邻的eureka server拉取注册表
    service-url:
      defaultZone: http://peer1:8761/eureka/

server:
  port: 8762
spring:
  application:
    name: eureka-server

向peer1注册自己

当然二个application.ymldefaultZone也可以设置成http://peer1:8761/eureka,http://peer2:8762/eureka/

修改vim /etc/hosts文件配置映射

127.0.0.1       peer1
127.0.0.1       peer2

通过spring.profiles.active属性来启动不同的环境,当然生产上肯定就是二台不同的服务了,这边只是在单机上模拟Eureka Server的高可用。
启动的时候指定不一样的配置文件,

java -jar eureka-server-1.0-SNAPSHOT.jar --spring.profiles.active=peer1
java -jar eureka-server-1.0-SNAPSHOT.jar --spring.profiles.active=peer2

访问http://localhost:8761/

8671

访问http://localhost:8762/

8762

服务提供者消费者配置也要做一些修改,这边以服务提供者为例,其实严格意义上一个服务可以做服务提供者也可以做服务消费者

server:
  port: 8088
spring:
  application:
    name: ServiceA
eureka:
  instance:
    hostname: localhost
  client:
    serviceUrl:
      defaultZone: http://peer1:8761/eureka,http://peer2:8762/eureka/

此时如果断开peer1,则AService也会向peer2上注册。所以依然能够访问到AService服务,从而实现服务注册中心的高可用。

image.png

Service Discovery: Eureka Server # Peer Awareness

上一篇下一篇

猜你喜欢

热点阅读