Spring Cloud服务注册组件Eureka(下)-集群版Eureka注册中心

一、高可用的服务注册

为了使服务注册高可用,所以,各组成部分都需要形成集群

  • Eureka Server集群
  • Eureka Client集群

服务注册集群模式

二、Eureka Server集群实践

1.集群节点说明
服务器名称 角色 其他说明
discovery-server-1 Eureka Server 注册中心第1个节点
discovery-server-2 Eureka Server 注册中心第2个节点
stock-provider-1 Eureka Client(Serivce Provider) 服务提供者第1个节点
stock-provider-2 Eureka Client(Service Provider) 服务提供者第2个节点
2.Eureka Server节点配置与服务启动

与单机版的Eureka Server相比,除了配置文件不一样外,其他都是一样的

(1)第一个节点配置(application.yml)
  1. server:
  2. port: 8001
  3. eureka:
  4. instance:
  5. hostname: discovery-server-1
  6. client:
  7. register-with-eureka: false
  8. fetch-registry: false
  9. service-url:
  10. defaultZone: http://discovery-server-1:8001/eureka/,http://discovery-server-1:8101/eureka/
  11. spring:
  12. application:
  13. name: item-discovery-server-1

注:

  • eureka.instance.hostname:为本节点的主机名称,可以是IP,或主机名称(用主机名称,需要在hosts文件中与本机IP进行绑定)
  • eureka.client.service-url.defaultZone:多个节点时,建议把所有的server节点都写上
(2)第二个节点的配置(application.yml)
  1. server:
  2. port: 8101
  3. eureka:
  4. instance:
  5. hostname: discovery-server-2
  6. client:
  7. register-with-eureka: false
  8. fetch-registry: false
  9. service-url:
  10. defaultZone: http://discovery-server-1:8001/eureka/,http://discovery-server-1:8101/eureka/
  11. spring:
  12. application:
  13. name: item-discovery-server-2
(3)在所有节点的hosts文件中,进行主机名称与IP的绑定

Linux系统在/etc/hosts下:

  1. 127.0.0.1 discovery-server-1
  2. 127.0.0.1 discovery-server-2

注:根据自身项目的主机名和IP进行对应的修改

(4)分别启动各个节点的服务
3.Eureka Client节点的配置与服务启动

与单机版的Eureka Client相比,除了配置文件中的defaultZone配置项外,其他的操作都是一样的

(1)第一个节点的配置
  1. server:
  2. port: 8002
  3. eureka:
  4. client:
  5. service-url:
  6. defaultZone: http://localhost:8001/eureka/
  7. register-with-eureka: true
  8. fetch-registry: true
  9. spring:
  10. application:
  11. name: stock-provider-1

注:将注册中心的地址指向注册中心集群节点的第一个节点

(2)第二个节点的配置
  1. server:
  2. port: 8802
  3. eureka:
  4. client:
  5. service-url:
  6. defaultZone: http://localhost:8101/eureka/
  7. register-with-eureka: true
  8. fetch-registry: true
  9. spring:
  10. application:
  11. name: stock-provider-2

注:将注册中心的地址指向注册中心集群节点的第二个节点

(3)启动各客户端节点的服务
(4)在Eureka Server的控制台查看注册情况

(1)查看第1个server节点:在浏览器中输入:http://localhost:8001

第1个server节点客户端注册情况

  • 它显示了两个注册节点,一个是指向当前节点的客户端节点,一个是注册到另一个server的客户端节点

(2)查看第2个server节点:在浏览器中输入:http://localhost:8101

第2个server节点客户端注册情况

  • 只显示了注册到当前server的客户端节点
  • 而且显示了当前server节点是和第1个server节点的复制节点