高可用注册中心

注册中心高可用

集群

注册中心这么关键的服务,如果是单点话,遇到故障就是毁灭性的。在一个分布式系统中,服务注册中心是最重要的基础部分,理应随时处于可以提供服务的状态。为了维持其可用性,使用集群是很好的解决方案。Eureka 通过互相注册的方式来实现高可用的部署,所以我们只需要将 Eureke Server 配置其他可用的 service-url 就能实现高可用部署。

双节点注册中心

1、将 注册中心的application.yml 复制一份并命名为 application-peer1.yml,作为 peer1 服务中心的配置,并将 service-url 指向 peer2

spring:
  application:
    name: eureka-server
server:
  port: 7001
eureka:
  instance:
    hostname: peer1
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
      defaultZone: http://peer2:7002/eureka/

2、将 application-peer1.yml 复制一份并命名为 application-peer2.yml,作为 peer2 服务中心的配置,并将 service-url 指向 peer1

spring:
  application:
    name: eureka-server
server:
  port: 7002
eureka:
  instance:
    hostname: peer2
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
      defaultZone: http://peer1:7001/eureka/

3、配本地 host: 在 hosts 文件中加入如下配置

127.0.0.1 peer1 peer2

4、分别用server1和server2两个配置启动两个server服务。

# 分别以 peer1 和 peer2 配置信息启动 Eureka
java -jar target/eureka-server-0.0.1-SNAPSHOT.jar  --spring.profiles.active=peer1
java -jar target/eureka-server-0.0.1-SNAPSHOT.jar  --spring.profiles.active=peer2

在idea右上角run,选择edit configrations

20171009174805517.jpg
20171009174851115.jpg

5、原本应该只有一个启动项,点击+号,给两个启动项都设置一下Program arguments,就是--spring.profiles.active分别设置为server1和server2,代表分别以两个不同的配置来启动项目。把两个启动项都启动起来,分别访问各自的端口

006tKfTcly1fr2l67mm1bj30sg0iktbu.jpg

根据图可以看出 peer1 的注册中心 DS Replicas 已经有了 peer2 的相关配置信息,并且出现在 available-replicas 中。我们手动停止 peer2 来观察,发现 peer2 就会移动到 unavailable-replicas 一栏中,表示 peer2 不可用。

006tKfTcly1fr2kyw47ndj30sg0i1q5q.jpg

注意

eureka.client.register-with-eurekaeureka.client.fetch-registry均改为true(默认)

配置文件中的spring.application.name必须一致

Eureka 集群

生产中我们可能需要三台或者大于三台的注册中心来保证服务的稳定性,配置的原理其实都一样,将注册中心分别指向其它的注册中心。这里只介绍三台集群的配置情况,其实和双节点的注册中心类似,每台注册中心分别又指向其它两个节点即可

application-peer1.yml

spring:
  application:
    name: eureka-server
server:
  port: 7001
eureka:
  instance:
    hostname: peer1
  client:
    service-url:
      defaultZone: http://peer2:7002/eureka/,http://peer3:7003/eureka/

application-peer2.yml

spring:
  application:
    name: eureka-server
server:
  port: 7002
eureka:
  instance:
    hostname: peer2
  client:
    service-url:
      defaultZone: http://peer1:7001/eureka/,http://peer3:7003/eureka/

application-peer3.yml

spring:
  application:
    name: eureka-server
server:
  port: 7003
eureka:
  instance:
    hostname: peer3
  client:
    service-url:
      defaultZone: http://peer1:7001/eureka/,http://peer2:7002/eureka/

修改 hosts 文件中的配置,添加 peer3

127.0.0.1 peer1 peer2 peer3

分别以 peer1、peer2、peer3 的配置参数启动 Eureka 注册中心

java -jar target/eureka-server-0.0.1-SNAPSHOT.jar  --spring.profiles.active=peer1
java -jar target/eureka-server-0.0.1-SNAPSHOT.jar  --spring.profiles.active=peer2
java -jar target/eureka-server-0.0.1-SNAPSHOT.jar  --spring.profiles.active=peer3

依次启动完成后,访问 http://localhost:7001/,效果如下

006tKfTcly1fr2labbofmj30sg0kqtcf.jpg

在 peer1 中看到了 peer2、peer3 的相关信息。

你可能感兴趣的:(高可用注册中心)