惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

B
Blog RSS Feed
美团技术团队
Attack and Defense Labs
Attack and Defense Labs
博客园 - 三生石上(FineUI控件)
Y
Y Combinator Blog
IT之家
IT之家
GbyAI
GbyAI
博客园_首页
酷 壳 – CoolShell
酷 壳 – CoolShell
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园 - 聂微东
量子位
阮一峰的网络日志
阮一峰的网络日志
Hugging Face - Blog
Hugging Face - Blog
Recent Announcements
Recent Announcements
月光博客
月光博客
The GitHub Blog
The GitHub Blog
V
Visual Studio Blog
D
DataBreaches.Net
Microsoft Azure Blog
Microsoft Azure Blog
博客园 - 司徒正美
罗磊的独立博客
人人都是产品经理
人人都是产品经理
U
Unit 42
宝玉的分享
宝玉的分享
V
V2EX
雷峰网
雷峰网
C
Cyber Attacks, Cyber Crime and Cyber Security
博客园 - 叶小钗
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
L
LINUX DO - 热门话题
Engineering at Meta
Engineering at Meta
P
Palo Alto Networks Blog
Scott Helme
Scott Helme
Cisco Talos Blog
Cisco Talos Blog
Apple Machine Learning Research
Apple Machine Learning Research
Cyberwarzone
Cyberwarzone
腾讯CDC
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
C
Cybersecurity and Infrastructure Security Agency CISA
爱范儿
爱范儿
V
Vulnerabilities – Threatpost
Martin Fowler
Martin Fowler
P
Privacy & Cybersecurity Law Blog
S
Securelist
Google DeepMind News
Google DeepMind News
小众软件
小众软件
T
Threat Research - Cisco Blogs
D
Darknet – Hacking Tools, Hacker News & Cyber Security
L
LangChain Blog

博客园 - PPBoy

状态机的轮子 oracle生成path的sql语句 oracle表空间异常大 springboot2集成activiti出错 策略模式2 策略模式1 sql从n月到m月数据汇总,没有数据,当月显示0 jsp下拉列表 dao层取值用List<map<String,Object>>接收有序map 在线预览pdf springboot打jar包,调用webservice出错 导出到word ueditor后台配置项返回格式出错,上传功能将不能正常使用 js控制多层单选,多选按钮,做隐藏操作 js控制全屏及退出全屏 springboot2.0jar包启动异常 第八篇: 服务链路追踪(Spring Cloud Sleuth) 第七篇: 消息总线(Spring Cloud Bus) 第六篇: 分布式配置中心(Spring Cloud Config)
第九篇: 高可用的服务注册中心
PPBoy · 2018-08-07 · via 博客园 - PPBoy

文章 第一篇: 服务的注册与发现(Eureka) 介绍了服务注册与发现,其中服务注册中心Eureka Server,是一个实例,当成千上万个服务向它注册的时候,它的负载是非常高的,这在生产环境上是不太合适的,这篇文章主要介绍怎么将Eureka Server集群化。

一、准备工作

Eureka通过运行多个实例,使其更具有高可用性。事实上,这是它默认的熟性,你需要做的就是给对等的实例一个合法的关联serviceurl。

这篇文章我们基于第一篇文章的工程,来做修改。

二、改造工作

在eureka-server工程中resources文件夹下,创建配置文件application-peer1.yml:

server:
  port: 8761

spring:
  profiles: peer1
eureka:
  instance:
    #prefer-ip-address: false
    hostname: peer1
  client:
    serviceUrl:
      defaultZone: http://peer2:8769/eureka/,http://peer3:8770/eureka/
    registerWithEureka: true #这里显式的把这两个属性设为true,作为服务注册,当单点时,要设置为false。或者将application.yml的属性设为true,因为即使启动时加了参数peer1也会加载application.yml.
    fetchRegistry: true
#这里显式的把registerWithEureka,fetchRegistry设为true,作为服务注册,当单点时,要设置为false。或者将application.yml的属性设为true,因为即使启动时加了参数peer1也会加载application.yml.(重要的事情写三遍)
#这里显式的把registerWithEureka,fetchRegistry设为true,作为服务注册,当单点时,要设置为false。或者将application.yml的属性设为true,因为即使启动时加了参数peer1也会加载application.yml.(重要的事情写三遍)
#这里显式的把registerWithEureka,fetchRegistry设为true,作为服务注册,当单点时,要设置为false。或者将application.yml的属性设为true,因为即使启动时加了参数peer1也会加载application.yml.(重要的事情写三遍)
 

并且创建另外一个配置文件application-peer2.yml:

server:
  port: 8769

spring:
  profiles: peer2
eureka:
  instance:
    #prefer-ip-address: false
    hostname: peer2
  client:
    serviceUrl:
      defaultZone: http://peer1:8761/eureka/,http://peer3:8770/eureka/
    registerWithEureka: true
    fetchRegistry: true

并且创建另外一个配置文件application-peer3.yml:

server:
  port: 8770

spring:
  profiles: peer3
eureka:
  instance:
    #prefer-ip-address: false
    hostname: peer3
  client:
    serviceUrl:
      defaultZone: http://peer1:8761/eureka/,http://peer2:8769/eureka/
    registerWithEureka: true
    fetchRegistry: true

新建了peer1,peer2,peer3三个eureka配置文件,互相依赖。

按照官方文档的指示,需要改变etc/hosts,linux系统通过vim /etc/hosts ,加上:

127.0.0.1 peer1
127.0.0.1 peer2
127.0.0.1 peer3

windows电脑,在C:\Windows\System32\drivers\etc修改。

这时eureka-server就已经改造完毕。

三、打包

这时需要打成jar包,分别由三个配置文件启动eureka-server,成为一个三个节点的小集群。

右键点击项目名 -》run as -》maven install打包。

tip1:这里需要先打包项目的父依赖,也就是:

<parent>
        <groupId>com.sun</groupId>
        <artifactId>springcloud-parent</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>

springcloud-parent项目,否则会出现:Could not find artifact com.sun:springcloud-parent:pom:0.0.1-SNAPSHOT and 'parent.relativePath' points at wrong local POM这样的错误。

tip2:我碰到打包的时候提示我jre环境错误,这时,需要右键项目-》build path-》configure build path:

选择编译环境是jdk。

正确打包后显示:

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.939 s
[INFO] Finished at: 2018-08-07T09:29:16+08:00
[INFO] Final Memory: 43M/294M
[INFO] ------------------------------------------------------------------------

 这时在项目的target路径下已经有了打包好的eureka-server.jar包:

四、运行

分别在命令提示框下,启动eureka-server:

java -jar eureka-server-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer1
java -jar eureka-server-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer2
java -jar eureka-server-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer3

tip:在eureka-server.jar包的文件夹下,shift+右键可以直接打开命令行界面,这样就不用打路径了。

启动eureka-client项目。

当访问http://localhost:8761/http://localhost:8769/http://localhost:8770/三个地址,我们可以看到:

你会发现注册了service-hi,并且有个peer2和peer3节点,

同理访问localhost:8769你会发现有个peer1和peer3节点

访问localhost:8770你会发现有个peer1和peer2节点

client只向8761注册,但是你打开8769,8770,你也会发现,8769,8770也有 client的注册信息。

Eureka-eserver peer1 8761,Eureka-eserver peer2 8769,Eureka-eserver peer3 8770相互感应,当有服务注册时,三个Eureka-eserver是对等的,它们都存有相同的信息,这就是通过服务器的冗余来增加可靠性,当有一台服务器宕机了,服务并不会终止,因为另两台服务存有相同的数据。

最后感谢:https://blog.csdn.net/forezp/article/details/81041101博主的付出。

但原文是有bug的,在这里感谢https://blog.csdn.net/u012470019/article/details/77973156博主。