Spring Cloud(Greenwich版)-03-编写高可用Eureka Server(集群)

写了个寂寞 2019-08-05 13:16:14 ⋅ 679 阅读

前言

上一章Spring Cloud(Greenwich版)-02-服务注册与服务发现-Eureka入门,我们实现了将User和Goods微服务都注册到了Eureka上,那么在生产环境中为了达到高可用的目的,Eureka Service是集群部署的,那么接下来编写一个多节点Eureka Server集群。如下图所示:

编写多节点Eureka Server

第一步:设置主机名

因为是在本机部署两个节点,所以要修改系统/etc/hosts 文件。

vim /etc/hosts
# 添加节点
127.0.0.1 eurekaService1 eurekaService2

备注:windows系统hosts文件路径为:C:\windows\system32\drivers\etc\hosts,名字可以随便起,只要不重复即可。

第二步:添加Eureka Service配置

在可以copy上一篇microservice-discovery-eureka项目。

spring:
application:
name: microservice-discovery-eureka-ha
---
spring:
profiles: eurekaService1
server:
port: 8761
eureka:
instance:
hostname: eurekaService1
client:
service-url:
defaultZone: http://eurekaService2:8762/eureka/ # 将自己注册到eurekaService2这个Eureka上面去
---
spring:
profiles: eurekaService2
server:
port: 8762
eureka:
instance:
hostname: eurekaService2
client:
service-url:
defaultZone: http://eurekaService1:8761/eureka/

设置两个profile:eurekaService1、eurekaService2。两个Profile下各有一个Eureka Server,通过相互注册的方式,构建了Eureka Server集群。

第三步:启动

将microservice-discovery-eureka-ha项目打成jar包,通过命令进行启动。

java -jar microservice-discovery-eureka-ha-0.0.1-SNAPSHOT.jar --spring.profiles.active=eurekaService1
java -jar microservice-discovery-eureka-ha-0.0.1-SNAPSHOT.jar --spring.profiles.active=eurekaService2

如果启动第一个实例报错不要着急,这是正常的,因为在启动过程中eurekaService1尝试连接eurekaService2,但是eurekaService2并没有启动,所以会报连接异常。

备注:本文演示的是两个Eureka Server实例在一台机器上启动,所以必须配置hosts。

第四步:访问测试

分别在浏览器访问链接:http://127.0.0.1:8761/
和http://127.0.0.1:8762/,如下图所示:



如上图所示:eurekaService1和eurekaService2进行了相互注册。

将user微服务注册到Eureka Server集群上

第一步:修改配置
eureka:
client:
service-url:
# eureka server的通讯地址,注意路径
# defaultZone: http://127.0.0.1:8761/eureka/
defaultZone: http://eurekaService1:8761/eureka/,http://eurekaService2:8762/eureka/

对的,你没有看错,就这么简单。

第二部:启动测试

eurekaService1.jpg

eurekaService1.jpg

如上图所示,将user微服务注册到了Eureka Server集群上了,大家也可以将goods微服务也注册上去看看效果。

了解一下Eureka 自我保护模式

1. 什么是自我保护模式

默认情况下,如果Eureka Server在一定时间内没有接收到某个微服务实例的心跳,Eureka Server将会注销该实例(默认90秒)。但是当网络分区故障发生时,微服务与Eureka Server之间无法正常通信,以上行为可能变得非常危险了——因为微服务本身其实是健康的,此时本不应该注销这个微服务。
一旦进入该模式,Eureka Server就会保护服务注册表中的信息,不再删除服务注册表中的数据(也就是不会注销任何微服务)。当网络故障恢复后,该Eureka Server节点会自动退出自我保护模式。

2. 禁用自我保护模式

增加如下配置:

eureka.server.enable-self-preservation = false

配套代码

主代码库:https://github.com/yundianzixun/spring-cloud-study
Eureka Service 集群:https://github.com/yundianzixun/spring-cloud-study/tree/master/microservice-discovery-eureka-ha



全部评论: 0

    我有话说:

    Spring CloudGreenwich)-06-Spring Cloud集成Feign

    Spring Cloud系列教程第6节-Spring Cloud集成Feign

    Spring Cloud快速搭建开放平台解决方案

    基于Spring Cloud开放平台解决方案 SOP

    构建数据集成和实时数据处理流水线工具Spring Cloud Data Flow

    Spring Cloud Data Flow 是基于原生云对 Spring XD 的重新设计

    深入理解 Spring Cloud 核心组件 底层原理

    搜云库技术团队:https://mp.weixin.qq.com/s/_KCBWTPvFQ2QsM4P8-gqTQ 之前一直在看 Spring Cloud 及微服务架构 对 Spring Cloud

    Spring Cloud Alibaba 发布毕业后的首个版本

    方剑,花名洛夜,GitHub ID @fangjian0423,开源爱好者,阿里巴巴高级开发工程师,阿里云产品 EDAS 开发,Spring Cloud Alibaba 开源项目负责人。

    码云推荐:一个优秀的分布式spring boot/Spring Cloud API限流框架,特别适合微服务架构

    一个优秀的分布式spring boot/Spring Cloud API限流框架,特别适合微服务架构.

    Spring Cloud Eureka Nacos如何解决服务上线下线延时过长问题

    1.降低延迟时间     1)中小型的项目建议关闭自我保护(eureka.server.enableSelfPreservation=false)     2

    微服务架构学习笔记:gRPC Spring Boot Starter 2.2.0 发布,及使用步骤

    gRPC Spring Boot Starter 项目是一个 gRPC 的 Spring Boot 模块。内嵌一个 gRPC Server 对外提供服务,并支持 Spring Cloud 的服务发现

    Dubbo3.0 来了:服务发现百万伸缩微服务架构

    来自:可用架构原文:https://mp.weixin.qq.com/s/_Ih4AyL2c1JjyLwKCPmphg 本文是一篇关于 Dubbo 地址推送性能的压测文章,我们期望通过对比的方式

    详细讲解一下Hadoop3.2 新版本的搭建过程

    详细讲解一下Hadoop3.2 新版本的搭建过程

    【轻阅读】基于 Java Spring cloud的开源在线教育系统调试实战

    转载自:https://www.toutiao.com/i6759167063090004483开篇之前分享

    「360技术」Pika 3.4.0 发布,从单机到

    pika 3.4.0 发布了。pika 是 360 公司发布一个持久化的大容量 redis 存储服务,兼容 string、hash、list、zset、set 的绝大部分接口,解决 redis

    Spring Cloud 2020.0.1 BUG 修复版本发布

    2021 首发, Spring Cloud 2020.0.1 (代号"Ilford",伊尔福德)版本发布,此版本 BUG 修复版本,从 2020.0.0 版本平滑升级。目前已可以从 maven

    蚂蚁宣布开源 KubeTEE:云原生化机密计算框架

    蚂蚁在上海外滩大会可信原生技术论坛上宣布开源 KubeTEE。 KubeTEE 是一个云原生大规模化机密计算框架,旨在解决在云原生环境中 TEE 可信执行环境技术特有的从开发、部署到运维整体流程

    架构实战篇(十二):Spring Boot 分布式Session共享Redis

    分布式Web网站一般都会碰到session共享问题,小编整理了一套解决方案,内附GitHub 源码地址哦~~~