spring cloud 入门系列三:使用Eureka 搭建高可用服务注册中心
在上一篇中分享了如何使用Eureka 进行服务治理,里面搭建的服务注册中心是单体的,
但是在实际的应用中,分布式系统为了防止单体服务宕机带来严重后果,一般都会采用服务器集群的形式,服务注册中心也是一样,需要多台服务一起工作,组成高可用的服务注册中心。这样,如果有其中一台宕机,系统也能正常运行。
那么如何来构建高可用的服务注册中心呢?
由于eureka注册中心既可以作为服务端(服务注册中心),也可以作为客户端(到别的注册中心注册自己),
我们可以通过在机器上部署peer1和peer2两个服务,两个服务相互注册。
一、代码实现
还是使用上篇文章中的eureka服务例子,在此基础上我们进行修改:
- 新增/eureka/src/main/resources/application-peer1.properties
server.port= spring.application.name=eureka-service
#设定主机名为peer1
eureka.instance.hostname=peer1 #eureka.client.register-with-eureka=false
#eureka.client.fetch-registry=false
#设定eureka的serviceUrl为peer2
eureka.client.serviceUrl.defaultZone=http://peer2:1112/eureka - 新增/eureka/src/main/resources/application-peer2.properties
server.port= spring.application.name=eureka-service
eureka.instance.hostname=peer2
#eureka.client.register-with-eureka=false
#eureka.client.fetch-registry=false
#设定eureka的serviceUrl为peer1
eureka.client.serviceUrl.defaultZone=http://peer1:1111/eureka由于需要peer1和peer2相互注册,因此第1和第2步中,eureka.client.register-with-eureka=false和eureka.client.fetch-registry=false这两个配置就不能要了,需要注释掉或删掉。
- 设定host,在C:\Windows\System32\drivers\etc目录下的hosts文件中添加
127.0.0.1 peer1
127.0.0.1 peer2以将peer1和peer2进行解析。
- 配置两个启动服务
- )

- )

- )
- 启动eureka1和eureka2
- 页面访问http://localhost:1111/
我们会发现,在DS Replicas(分片)中会有peer2; 在服务instance中会有2个,一个是1111,一个是1112; 在registered-replicas(注册分片)和available-replicas(可用分片)中出现了peer2:1112。 同样道理,我们访问http://localhost:1112/也能看到相似效果。 如果将peer2停掉,那么在访问http://localhost:1111/的时候就会发现peer2已经跑到unavailable-replicas(不可用分片)中,具体截图略。
二、调试中遇到的问题
我在调试以上内容的时候遇到一个问题,就是在peer1和peer2一直不能彼此注册成功,页面表现就是服务instance为空并且available-replicas为空,对应的服务在unavailable-replicas中。后来经过多次实现和分析,终于发现,原来是在我的application.properties文件中还保留着下面两个配置,服务在启动的时候是会读取到这个配置的,
虽然这两个配置默认是true,但是却被application.properties覆盖了,这个时候讲这两个配置注释掉就好了。

如果在application-{profiles}.properties中再配置一遍就又可以覆盖application.properties里面的配置。
代码读取顺序是这样的:
先读取默认配置-->然后读取application.properties-->读取application-{profiles}.properties。
spring cloud 入门系列三:使用Eureka 搭建高可用服务注册中心的更多相关文章
- 搭建高可用服务注册中心-Spring Cloud学习第一天(非原创)
文章大纲 一.Spring Cloud基础知识介绍二.创建单一的服务注册中心三.创建一个服务提供者四.搭建高可用服务注册中心五.项目源码与参考资料下载六.参考文章 一.Spring Cloud基础 ...
- 使用Spring Cloud搭建高可用服务注册中心
我们需要的,不仅仅是一个服务注册中心而已,而是一个高可用服务注册中心. 上篇博客[使用Spring Cloud搭建服务注册中心]中我们介绍了如何使用Spring Cloud搭建一个服务注册中心,但是搭 ...
- 使用SpringCloud搭建高可用服务注册中心
我们需要的,不仅仅是一个服务注册中心而已,而是一个高可用服务注册中心. 上篇博客中我们介绍了如何使用Spring Cloud搭建一个服务注册中心,但是搭建好的服务注册中心是一个单节点的服务注册中心,这 ...
- Spring Cloud Eureka 4 (高可用服务注册中心)
在微服务这样的分布式环境中,我们需要充分考虑发生故障的情况,所以在生产环境中必须考虑对各个组件进行高可用部署,对于服务注册中心也是一样. Eureka Server 的高可用实际上就是讲自己作为服务向 ...
- springboot+cloud 学习(一)高可用服务注册中心(Eureka)
先说说Eureka Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的.SpringClo ...
- 服务注册发现Eureka之二:高可用服务注册中心
前言 在Spring Cloud系列文章的开始,我们就介绍了服务注册与发现,其中,主要演示了如何构建和启动服务注册中心Eureka Server,以及如何将服务注册到Eureka Server中,但是 ...
- SpringCloud的服务注册中心(四)- 高可用服务注册中心的搭建
一.双 服务注册注册中心 1.服务注册中心的服务端 - EurekaServer 1.1.EurekaServer1 String.application.name=eureka-server ser ...
- spring cloud 入门系列七:基于Git存储的分布式配置中心
我们前面接触到的spring cloud组件都是基于Netflix的组件进行实现的,这次我们来看下spring cloud 团队自己创建的一个全新项目:Spring Cloud Config.它用来为 ...
- spring cloud 入门系列七:基于Git存储的分布式配置中心--Spring Cloud Config
我们前面接触到的spring cloud组件都是基于Netflix的组件进行实现的,这次我们来看下spring cloud 团队自己创建的一个全新项目:Spring Cloud Config.它用来为 ...
随机推荐
- loadrunner录制时web时,安全证书问题
测试环境:win7+LoadRunner11+ie9 遇到的问题:用LoadRunner录制时,打开百度,总是报安全证书问题,如图所示 解决方法:Tools——Recording Options——p ...
- django关闭调试信息,打开内置错误视图
1 内置错误视图 Django内置处理HTTP错误的视图,主要错误及视图包括: 404错误:page not found视图 500错误:server error视图 400错误:bad reques ...
- VCS使用学习笔记(0)——写在前面的话
由于毕业设计做的是数字IC相关,虽然不是纯设计,但是也有设计相关.有设计就要有仿真验证,我就趁此机会来学习一下VCS的使用吧.当然,这里只是学习其简单的逻辑仿真功能,从波形仿真到覆盖率等,基本上不涉其 ...
- SecureCRT安装
第一步:下载SecureCRT&SecureCRT激活工具 首先下载SecureCRT安装包和SecureCRT激活工具,SecureCRT&SecureCRT激活工具下载地址:链接: ...
- Hadoop学习笔记(七):初识spark
1. spark的安装: a). 首先复制一台虚拟机出来(复制任意一台master和slave即可),然后将其ip修改为192.168.XX.200,并将其hostname更改为c(hostnamec ...
- 笔记本电脑连wifi然后通过有线网口做桥接
让你的笔记本电脑作为主机,台式机通过通过一根网线连接到你的笔记本,共享无线网络上网,可以进行如下操作: 1,先找跟网线将两台电脑连接. 2,打开win7自带的windows防火墙,此步在控制面板里可以 ...
- python中创建实例属性
虽然可以通过Person类创建出xiaoming.xiaohong等实例,但是这些实例看上除了地址不同外,没有什么其他不同.在现实世界中,区分xiaoming.xiaohong要依靠他们各自的名字.性 ...
- JavaScript 字典(Dictionary)
TypeScript方式实现源码 // set(key,value):向字典中添加新元素. // remove(key):通过使用键值来从字典中移除键值对应的数据值. // has(key ...
- CARVARS 圆形进度条
先看下效果 这是两个不同进度的进度条,由于carvas用找的只是id所以下面想多个进度条必须要根据class来找到id,所以我封装了一个进度条的函数,下面的代码直接复制粘贴就可以了 <!DOCT ...
- [LeetCode] Bold Words in String 字符串中的加粗单词
Given a set of keywords words and a string S, make all appearances of all keywords in S bold. Any le ...