欢迎来到菜鸟SpringCloud入门实战系列(SpringCloudForNoob),该系列经过层层递进的实战视角,来一步步学习和理解SpringCloud。html
本系列适合有必定Java以及SpringBoot基础的同窗阅读。git
每篇文章末尾都附有本文对应的Github源代码,方便同窗调试。程序员
Github仓库地址:github
https://github.com/qqxx6661/springcloud_for_noob面试
你还能够经过如下两种途径查看菜鸟SpringCloud入门实战系列:算法
简单的服务注册中心Eureka Server与服务提供者Eureka Client的网络拓扑图spring
这种配置方式有如下致命缺陷:后端
- 当成千上万的服务提供者都向它单节点的服务注册中心进行注册时,它的负载是很是高的。
- 一旦这个单节点的服务注册中心挂掉,则全部服务提供者的注册信息都将变得不可用。
为了方便学习集群eureka,咱们建立单独的子模块eureka-ha安全
修改其application.ymlbash
---
# 高可用节点1的配置
server:
port: 8771
spring:
# 节点1的标签
profiles: peer1
# 服务名保持一致
application:
name: eureka-ha
eureka:
instance:
hostname: peer1
client:
# 进行注册(高可用配置、默认配置)
# registerWithEureka: true
# 获取注册信息(高可用配置、默认配置)
# fetchRegistry: true
serviceUrl:
# 节点1向节点2/3进行服务注册
defaultZone: http://localhost:8772/eureka/,http://localhost:8773/eureka/
---
# 高可用节点2的配置
server:
port: 8772
spring:
# 节点2的标签
profiles: peer2
# 服务名保持一致
application:
name: eureka-ha
eureka:
instance:
hostname: peer2
client:
# 进行注册(高可用配置、默认配置)
# registerWithEureka: true
# 获取注册信息(高可用配置、默认配置)
# fetchRegistry: true
serviceUrl:
# 节点2向节点1/3进行服务注册
defaultZone: http://localhost:8771/eureka/,http://localhost:8773/eureka/
---
# 高可用节点3的配置
server:
port: 8773
spring:
# 节点3的标签
profiles: peer3
# 服务名保持一致
application:
name: eureka-ha
eureka:
instance:
hostname: peer3
client:
# 进行注册(高可用配置、默认配置)
# registerWithEureka: true
# 获取注册信息(高可用配置、默认配置)
# fetchRegistry: true
serviceUrl:
# 节点3向节点1/2进行服务注册
defaultZone: http://localhost:8771/eureka/,http://localhost:8772/eureka/
复制代码
代码重点:
和eureka一养,添加@EnableEurekaServer
由于是集群,因此要启动三个端口不一样的实例,端口已经在yml文件中进行了设置。
在Run configuration里自行设置三个运行配置,分别对应三个配置文件,注意图中箭头的设置。
你也可使用复制配置按钮:
若是你发现Run configuration里没有eureka-ha,请手动添加:
最后,分别运行三个eureka-ha:
打开网页,输入 http://localhost:8771/ , http://localhost:8772/ ,http://localhost:8773/
能够看到,Instances里有了三个注册的实例
你觉得大功告成了,然而,你发现有一个问题,全部的服务显示在了unavailable-replicas之下。
通过搜索,看见了以下解释,
参考:Eureka高可用,节点均出如今unavailable-replicas下:
https://www.jianshu.com/p/59c54ccc6ba6
eureka.client.serviceUrl.defaultZone配置项的地址,不能使用localhost,要使用域名,DNS解析请自行配置。
因为咱们在yml文件里设置了相似defaultZone: http://localhost:8771/eureka/,http://localhost:8772/eureka/
, 符合上述问题, 因此这里的注册url不能设置为localhost
看来,仍是须要本身搞定DNS,对应我Windows的环境,也就是要修改host设置。
修改HOST请自行谷歌,在host文件下添加三行:
127.0.0.1 peer1
127.0.0.1 peer2
127.0.0.1 peer3
复制代码
从新启动三个实例,大功告成:
咱们新建子模块eureka-hi-ha,用来做为高可用集群下的服务提供者
修改application.yml,设置为8783端口
# 服务地址
server:
port: 8783
# 服务名称
spring:
application:
name: service-hi-ha
eureka:
client:
serviceUrl:
# 这里只须要执行其中一个服务注册中心节点便可
defaultZone: http://peer1:8771/eureka/
复制代码
这里只须要执行其中一个服务注册中心节点便可,其余两个eureka会自动收到来自peer1的客户端记录信息,进行同步。
启动eureka-hi-ha,同时刚才的三个eureka server 不要关闭
查看网页: http://localhost:8771/ , http://localhost:8772/ ,http://localhost:8773/
能够看到,8773也成功显示了服务。
咱们来实验让一个节点停机,咱们关闭peer1的进程
注意:
高可用的服务注册中心Eureka Server与服务提供者Eureka Client的网络拓扑图,能够总结以下:
当前其中任意节点宕机以后,其余节点上还保存着全部的服务注册信息。
springcloud(二):注册中心Eureka:
http://www.ityouknow.com/springcloud/2017/05/10/springcloud-eureka.html
Spring-Cloud笔记03:服务注册中心Eureka Server的简单配置、访问控制配置以及高可用配置
https://blog.csdn.net/hanchao5272/article/details/80561199
全复习手册文章导航:经过如下两种途径查看
菜鸟SpringCloud实战专栏
我是蛮三刀把刀,后端开发。
主要关注后端开发,数据安全,爬虫等方向。
来微信和我聊聊:yangzd1102
Github我的主页:
同步更新公众号及如下博客
1. Csdn
拥有专栏:
2. 知乎
拥有专栏:
3. 掘金
4. 简书
若是文章对你有帮助,不妨收藏起来并转发给您的朋友们~