SpringCloud系列四:实现Eureka Server的高可用并将应用注册到Eureka Sever集群上
1. 回顾
上一篇博客中,实现了单节点的Eureka Server。Eureka Client会定时连接Eureka Server,获取注册表中的信息并缓存到本地。微服务在消费远程API时总是使用本地缓存中的数据。因此一般来说,即使Eureka Server发生宕机,也不会影响到服务之间的调用。但如果Eureka Server宕机时,某些微服务也出现了不可用的情况,Eureka Server中的缓存若不被刷新,就可能会影响到微服务的调用,甚至影响到整个应用系统的高可用。因此,在生成环境中,通常会部署一个高可用的Eureka Server集群。
Eureka Server可以通过运行多个实例并相互注册的方式实现高可用部署,Eureka Server实例会彼此增量地同步信息,从而确保所有节点数据一致。事实上,节点之间相互注册是Eureka Server的默认行为。
2. 构建一个双节点的Eureka Server集群
> 复制项目microservice-discovery-eureka,将ArtifactId修改为microservice-discovery-eureka-ha01
> 复制项目microservice-discovery-eureka,将ArtifactId修改为microservice-discovery-eureka-ha02
> 修改hosts文件,在windows平台下,进入目录:C:\Windows\System32\drivers\etc,然后用管理员权限打开hosts文件,添加一条记录
127.0.0.1 peer1 peer2
> 修改microservice-discovery-eureka-ha01的配置文件application.yml
server:
port:
eureka:
instance:
hostname: peer1
client:
service-url:
defaultZone: http://peer2:8763/eureka # 设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。
spring:
application:
name: microservice-discovery-eureka-ha
> 修改microservice-discovery-eureka-ha02的配置文件application.yml
server:
port:
eureka:
instance:
hostname: peer2
client:
service-url:
defaultZone: http://peer1:8762/eureka # 设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。
spring:
application:
name: microservice-discovery-eureka-ha
> 两个项目的spring.application.name必须相同,eureka.instance.hostname必须不同,否则都会失败。(至少我测试的是这样)
> 启动两个项目,访问:http://peer1:8762/ 和 http://peer2:8763/ ,此时registered-replicas(已注册分片)都有另一个系统的url地址,并且都在available-replicase(可用分片)中


3. 将微服务注册到Eureka Server集群上
> 修改microservice-provider-user中的配置文件application.yml,将eureka.client.service-url.defaultZone改为http://peer1:8762/eureka/。
eureka:
client:
service-url:
defaultZone: http://peer1:8762/eureka/
> 修改microservice-consumer-movie中的配置文件application.yml,将eureka.client.service-url.defaultZone改为http://peer1:8762/eureka/,http://peer2:8763/eureka/。
eureka:
client:
service-url:
defaultZone: http://peer1:8762/eureka/,http://peer2:8763/eureka
> 先启动Eureka Server集群,再启动这两个微服务。访问:http://peer1:8762/和 http://peer2:8763/。发现这两个微服务都注册在了集群里。
说明即使微服务只配置Eureka Server集群中的某个节点,也能正常注册到Eureka Server集群,因为多个Eureka Server之间的数据会相互同步。
不过为适应某些极端场景,建议在客户端配置多个Eureka Server节点。


4. 总结
前面几篇博客讲的Eureka Server都是允许匿名访问的。
下一篇博客将讲解为Eureka Server添加用户认证。敬请期待~~~
5. 参考
周立 --- 《Spring Cloud与Docker微服务架构与实战》
SpringCloud系列四:实现Eureka Server的高可用并将应用注册到Eureka Sever集群上的更多相关文章
- Redis高可用(持久化、主从复制、哨兵、集群)
Redis高可用(持久化.主从复制.哨兵.集群) 目录 Redis高可用(持久化.主从复制.哨兵.集群) 一.Redis高可用 1. Redis高可用概述 2. Redis高可用策略 二.Redis持 ...
- Eureka Server的高可用
Eureka Server进行互相注册的方式来实现高可用的部署,所以我们只需要将Eureke Server配置其他可用的serviceUrl就能实现高可用部署 创建application-peer1. ...
- 高可用Redis(十):Redis原生命令搭建集群
1.搭建Redis Cluster主要步骤 1.配置开启节点 2.meet 3.指派槽 4.主从关系分配 2.环境说明 两台虚拟机,IP地址分别为:192.168.81.100和192.168.81. ...
- Spring cloud Eureka 服务治理(高可用服务中心)
在微服务的架构中,我们考虑发生故障的情况,所以在生产环境中我们需要对服务中各个组件进行高可用部署. Eureka Server 的高可用实际上就是将自己作为服务想其它服务注册中心注册自己,这样就形成了 ...
- SpringCloud系列四:Eureka 服务发现框架(定义 Eureka 服务端、Eureka 服务信息、Eureka 发现管理、Eureka 安全配置、Eureka-HA(高可用) 机制、Eureka 服务打包部署)
1.概念:Eureka 服务发现框架 2.具体内容 对于服务发现框架可以简单的理解为服务的注册以及使用操作步骤,例如:在 ZooKeeper 组件,这个组件里面已经明确的描述了一个服务的注册以及发现操 ...
- Zabbix实战-简易教程(6)--Server端高可用
3.4 server前端高可用 至此,单台Zabbix server环境已经搭建完成,为了达到高可用效果,我们需要通过2台服务器之间通过HA软件进行探测,一旦检测到主的server挂掉后,从的s ...
- BizTalk Server 2010高可用方案
BizTalk Server 2010高可用方案 本文介绍了 Microsoft BizTalk Server 中通过对主机的各层进行扩展提供高可用性的方案. 分隔各个区域的功能分为不同的主机和中的层 ...
- 每天学点SpringCloud(五):如何使用高可用的Eureka
前几篇文章我们讲了一下Eureka的基础使用,但是呢有一个很重要的问题,我们讲的都是单机版的情况,如果这个时候Eureka服务挂了的话,那么我们的服务提供者跟服务消费者岂不是都废了?服务提供者和消费者 ...
- spring boot 2.0.3+spring cloud (Finchley)1、搭建服务注册和发现组件Eureka 以及构建高可用Eureka Server集群
一 .搭建Eureka 编写Eureka Server 由于有多个spring boot项目,采用maven多module的结构,项目结构如下: 新建一个maven主工程,在主maven的pom文件中 ...
随机推荐
- Openstack ceilometer
https://www.cnblogs.com/liguangsunls/p/6879879.html
- Javascript中call、apply函数浅析
call/apply函数作用其实就是改变this的取值,有一句话是:谁调用的这个方法那方法里的this就是指谁,而有时我们会需要改变this值,所以call/apply就能派上用场. 下面我写个方法来 ...
- ASP.NET webFrom
web窗体的后缀名.aspx 1.<% %> 标签内的代码在服务器上执行 <body> <form id="form1" runat="se ...
- Python的扩展接口[0] -> VISA仪器控制
VISA仪器控制 / VISA Instrument Control 1 VISA简介 / VISA Introduction VISA(Virtual Instrument Software Arc ...
- 【bzoj2190】【仪仗队】欧拉函数+线性筛(浅尝ACM-J)
向大(hei)佬(e)势力学(di)习(tou) Description 作为体育委员,C君负责这次运动会仪仗队的训练.仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪 ...
- 【面试题】2018年最全Java面试通关秘籍 四套!(无答案)
http://mp.weixin.qq.com/s/RQMQUufCbwlkAK62y57DAw 第一套:<2018年最全Java面试通关秘籍第一套!> 第二套:<2018年最全Ja ...
- 分享 | 自定义属于自己的U盘图标
文章目录 步骤 注意 想不想也可以自定义自己的U盘图标?其实,这并不难 步骤 在网上下载ICO格式的图标,也可以将自己喜欢的图片转换成ICO格式,并将图片命名为demo.ico: 点击这里打开记事本, ...
- 纯CSS实现网站常用的五角星评分和分数展示交互效果
最近做的一个项目涉及到评分和展示分数的模块,UI设计师也给了几个切好的图片,实现五角星评分方式很多,本质爱折腾的精神和对性能追求以及便于维护的考虑,搜集和尝试了很多方式,最终采用了纯css驱动的实现方 ...
- Introduction to the TestFlight SDK
https://developer.apple.com/testflight/ When you want to test an app on your device, usually you plu ...
- Xcode 5 单元测试(二)OCMock和GHUnit
在Xcode 5 单元测试(一)使用XCTest进行单元测试中说了如何在Xcode 5中使用XCTest进行简单的单元测试,本文就来探讨下mock测试和更高级的工具GHUnit. Mock 首先科普下 ...