Eureka 集群搭建(HA)原理与实战

Eureka 高可用集群(HA)

在分布式系统中,任何的地方存在单点,整个体系就不是高可用的,Eureka 也一样,在上面的架构图中Eureka Server不是以单点存在的,而是以集群的方式对外提供服务。

为了提供高可用性,说白了就是保证机器挂了还是可以服务注册的能力,一般都不会将注册中心部署到一台机器上,而是采取多台机器部署,集群化管理。

注册中心的集群化,最简单的做法就是:

将注册中心相互注册,但是不开启检索服务的能力(fetch-registry: false

这也是Eureka的特性使得的,因为Eureka身兼三职,其中一职(Eureka Client)天然就是客户端角色。

模拟的实验,修改hosts文件,模拟三个节点,添加对应的映射:

127.0.0.1 register-master
127.0.0.1 register-salve1
127.0.0.1 register-salve2

主节点的配置为:

修改配置文件
master:
#服务端口
server:
  port: 8880

eureka:
  instance:
    hostname: register-master
  client:
    #通过设置fetch-registry与register-with-eureka 表明自己是一个eureka服务
    fetch-registry: false
    register-with-eureka: true
    #注册register-salve1,register-salve2做注册中心集群
    service-url:
      defaultZone: http://register-salve1:8881/eureka/,http://register-salve2:8882/eureka/

spring:
  application:
    name: register-center

salve1节点的配置为:

#服务端口
server:
  port: 8882

eureka:
  instance:
    hostname: register-salve1
  client:
    #通过设置fetch-registry与register-with-eureka 表明自己是一个eureka服务
    fetch-registry: false
	register-with-eureka: true
    #注册register-salve1,register-salve2做注册中心集群
    service-url:
      defaultZone: http://register-master:8880/eureka/,http://register-salve2:8881/eureka/

spring:
  application:
    name: register-center

salve2节点的配置为:

#服务端口
server:
  port: 8882

eureka:
  instance:
    hostname: register-salve2
  client:
    #通过设置fetch-registry与register-with-eureka 表明自己是一个eureka服务
    fetch-registry: false
	register-with-eureka: true
    #注册register-salve1,register-salve2做注册中心集群
    service-url:
      defaultZone: http://register-master:8880/eureka/,http://register-salve1:8881/eureka/

spring:
  application:
    name: register-center

主节点的控制台界面:

slave1节点的控制台界面:

slave2节点的控制台界面:

高可用原理

eureka:
 client:
   # false表示不向注册中心注册自己
   register-with-eureka: false
   # false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
   fetch-registry: false
   service-url:
     #设置与Eureka Server交互的地址查询服务和注册服务都需要依赖这个地址(单机)。
     defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

  • 向注册中心注册自己

    register-with-eureka: true

  • 自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务

fetch-registry: false

原文地址:https://www.cnblogs.com/crazymakercircle/p/14255459.html