1.说明

本文详细介绍Spring Cloud创建Eureka模块集群的方法,
基于已经创建好的Spring Cloud Eureka Server模块,
请参考SpringCloud创建Eureka模块,
通过配置文件启动多个Eureka Server模块,
演示Eureka Server集群的创建和使用方法,
包括2个Eureka Server服务作为集群,
以及1个Eureka Client服务作为客户端。

2.模块打包

使用如下Maven命令,打包Eureka Server模块:

mvn clean install -DskipTests

打包成功后,在模块target目录下,
可以找到jar包:
eureka-server-0.0.1-SNAPSHOT.jar
另外一个jar包没有用,不需要管:
eureka-server-0.0.1-SNAPSHOT.jar.original

3.配置文件

Eureka Server 1对应eureka-server-dev-1.yml:

server:port: 7001
eureka:instance:hostname: eureka1client:register-with-eureka: falsefetch-registry: falseservice-url:defaultZone: http://eureka1:7001/eureka,http://eureka2:7002/eurekaserver:enable-self-preservation: false

Eureka Server 2对应eureka-server-dev-2.yml:

server:port: 7002
eureka:instance:hostname: eureka2client:register-with-eureka: falsefetch-registry: falseservice-url:defaultZone: http://eureka1:7001/eureka,http://eureka2:7002/eurekaserver:enable-self-preservation: false

注意上面配置的eureka1,eureka2主机名,
不能和原来单机的时候相同,使用localhost了,
否则访问Eureka控制台页面的时候,
会无法看到集群中的其他Eureka Server。
另外eureka.client.service-url.defaultZone这个属性,
可以配置Eureka集群中所有可用的实例,
Eureka会自动排除掉与自身重复的实例:

http://eureka1:7001/eureka,http://eureka2:7002/eureka

4.配置主机名

在Windows一台主机上启动这两个服务,
需要修改C:\Windows\System32\drivers\etc\hosts,
增加对应的主机名:

127.0.0.1 eureka1
127.0.0.1 eureka2

这里为了演示,
在同一个主机上部署了两个Eureka Server,
eureka1和eureka2都对应本机的127.0.0.1,
所以他们的端口不能相同为7001、7002,
如果部署在不同的主机上面,
可以配置成同一个端口,
这样只需要主机名不同就行了。

5.启动Eureka集群

启动Eureka Server 1:

java -jar -Dspring.config.location=eureka-server-dev-1.yml eureka-server-0.0.1-SNAPSHOT.jar

启动Eureka Server 2:

java -jar -Dspring.config.location=eureka-server-dev-2.yml eureka-server-0.0.1-SNAPSHOT.jar

Eureka Server 1的启动日志,
可以看到启动时,找到了集群的备用节点eureka2,
同样Eureka Server 2的启动日志也是类似的:

.   ____          _            __ _ _/\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \\\/  ___)| |_)| | | | | || (_| |  ) ) ) )'  |____| .__|_| |_|_| |_\__, | / / / /=========|_|==============|___/=/_/_/_/:: Spring Boot ::        (v2.3.1.RELEASE)2020-09-22 17:51:43.902  INFO 16748 --- [           main] c.y.s.eureka.EurekaServerApplication     : No active profile set, falling back to default profiles: default
2020-09-22 17:51:45.940  WARN 16748 --- [           main] o.s.boot.actuate.endpoint.EndpointId     : Endpoint ID 'service-registry' contains invalid characters, please migrate to a valid format.
2020-09-22 17:51:46.124  INFO 16748 --- [           main] o.s.cloud.context.scope.GenericScope     : BeanFactory id=c94dfcb8-a92b-3043-9fe7-9ab9d1567d69
2020-09-22 17:51:47.247  INFO 16748 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 7001 (http)
2020-09-22 17:51:47.262  INFO 16748 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2020-09-22 17:51:47.262  INFO 16748 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.36]
2020-09-22 17:51:47.407  INFO 16748 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2020-09-22 17:51:47.408  INFO 16748 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 3470 ms
2020-09-22 17:51:47.506  WARN 16748 --- [           main] c.n.c.sources.URLConfigurationSource     : No URLs will be polled as dynamic configuration sources.
2020-09-22 17:51:47.506  INFO 16748 --- [           main] c.n.c.sources.URLConfigurationSource     : To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
2020-09-22 17:51:47.531  INFO 16748 --- [           main] c.netflix.config.DynamicPropertyFactory  : DynamicPropertyFactory is initialized with configuration sources: com.netflix.config.ConcurrentCompositeConfiguration@5c80cf32
2020-09-22 17:51:48.152  INFO 16748 --- [           main] c.s.j.s.i.a.WebApplicationImpl           : Initiating Jersey application, version 'Jersey: 1.19.1 03/11/2016 02:08 PM'
2020-09-22 17:51:48.295  INFO 16748 --- [           main] c.n.d.provider.DiscoveryJerseyProvider   : Using JSON encoding codec LegacyJacksonJson
2020-09-22 17:51:48.297  INFO 16748 --- [           main] c.n.d.provider.DiscoveryJerseyProvider   : Using JSON decoding codec LegacyJacksonJson
2020-09-22 17:51:48.561  INFO 16748 --- [           main] c.n.d.provider.DiscoveryJerseyProvider   : Using XML encoding codec XStreamXml
2020-09-22 17:51:48.561  INFO 16748 --- [           main] c.n.d.provider.DiscoveryJerseyProvider   : Using XML decoding codec XStreamXml
2020-09-22 17:51:49.245  WARN 16748 --- [           main] o.s.c.n.a.ArchaiusAutoConfiguration      : No spring.application.name found, defaulting to 'application'
2020-09-22 17:51:49.246  WARN 16748 --- [           main] c.n.c.sources.URLConfigurationSource     : No URLs will be polled as dynamic configuration sources.
2020-09-22 17:51:49.246  INFO 16748 --- [           main] c.n.c.sources.URLConfigurationSource     : To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
2020-09-22 17:51:49.699  INFO 16748 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2020-09-22 17:51:51.647  WARN 16748 --- [           main] ockingLoadBalancerClientRibbonWarnLogger : You already have RibbonLoadBalancerClient on your classpath. It will be used by default. As Spring Cloud Ribbon is in maintenance mode. We recommend switching to BlockingLoadBalancerClient instead. In order to use it, set the value of `spring.cloud.loadbalancer.ribbon.enabled` to `false` or remove spring-cloud-starter-netflix-ribbon from your project.
2020-09-22 17:51:51.694  INFO 16748 --- [           main] o.s.c.n.eureka.InstanceInfoFactory       : Setting initial instance status as: STARTING
2020-09-22 17:51:51.730  INFO 16748 --- [           main] com.netflix.discovery.DiscoveryClient    : Initializing Eureka in region us-east-1
2020-09-22 17:51:51.730  INFO 16748 --- [           main] com.netflix.discovery.DiscoveryClient    : Client configured to neither register nor query for data.
2020-09-22 17:51:51.740  INFO 16748 --- [           main] com.netflix.discovery.DiscoveryClient    : Discovery Client initialized at timestamp 1600768311739 with initial instances count: 0
2020-09-22 17:51:51.791  INFO 16748 --- [           main] c.n.eureka.DefaultEurekaServerContext    : Initializing ...
2020-09-22 17:51:51.793  INFO 16748 --- [           main] c.n.eureka.cluster.PeerEurekaNodes       : Adding new peer nodes [http://eureka2:7002/eureka/]
2020-09-22 17:51:52.373  INFO 16748 --- [           main] c.n.d.provider.DiscoveryJerseyProvider   : Using JSON encoding codec LegacyJacksonJson
2020-09-22 17:51:52.373  INFO 16748 --- [           main] c.n.d.provider.DiscoveryJerseyProvider   : Using JSON decoding codec LegacyJacksonJson
2020-09-22 17:51:52.373  INFO 16748 --- [           main] c.n.d.provider.DiscoveryJerseyProvider   : Using XML encoding codec XStreamXml
2020-09-22 17:51:52.373  INFO 16748 --- [           main] c.n.d.provider.DiscoveryJerseyProvider   : Using XML decoding codec XStreamXml
2020-09-22 17:51:52.477  INFO 16748 --- [           main] c.n.eureka.cluster.PeerEurekaNodes       : Replica node URL:  http://eureka2:7002/eureka/
2020-09-22 17:51:52.484  INFO 16748 --- [           main] c.n.e.registry.AbstractInstanceRegistry  : Finished initializing remote region registries. All known remote regions: []
2020-09-22 17:51:52.484  INFO 16748 --- [           main] c.n.eureka.DefaultEurekaServerContext    : Initialized
2020-09-22 17:51:52.493  INFO 16748 --- [           main] o.s.b.a.e.web.EndpointLinksResolver      : Exposing 2 endpoint(s) beneath base path '/actuator'
2020-09-22 17:51:52.514  INFO 16748 --- [           main] o.s.c.n.e.s.EurekaServiceRegistry        : Registering application UNKNOWN with eureka with status UP
2020-09-22 17:51:52.516  INFO 16748 --- [     Thread-383] o.s.c.n.e.server.EurekaServerBootstrap   : Setting the eureka configuration..
2020-09-22 17:51:52.516  INFO 16748 --- [     Thread-383] o.s.c.n.e.server.EurekaServerBootstrap   : Eureka data center value eureka.datacenter is not set, defaulting to default
2020-09-22 17:51:52.517  INFO 16748 --- [     Thread-383] o.s.c.n.e.server.EurekaServerBootstrap   : Eureka environment value eureka.environment is not set, defaulting to test
2020-09-22 17:51:52.538  INFO 16748 --- [     Thread-383] o.s.c.n.e.server.EurekaServerBootstrap   : isAws returned false
2020-09-22 17:51:52.539  INFO 16748 --- [     Thread-383] o.s.c.n.e.server.EurekaServerBootstrap   : Initialized server context
2020-09-22 17:51:52.539  INFO 16748 --- [     Thread-383] c.n.e.r.PeerAwareInstanceRegistryImpl    : Got 1 instances from neighboring DS node
2020-09-22 17:51:52.539  INFO 16748 --- [     Thread-383] c.n.e.r.PeerAwareInstanceRegistryImpl    : Renew threshold is: 1
2020-09-22 17:51:52.539  INFO 16748 --- [     Thread-383] c.n.e.r.PeerAwareInstanceRegistryImpl    : Changing status to UP
2020-09-22 17:51:52.549  INFO 16748 --- [     Thread-383] e.s.EurekaServerInitializerConfiguration : Started Eureka Server
2020-09-22 17:51:52.576  INFO 16748 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 7001 (http) with context path ''
2020-09-22 17:51:52.576  INFO 16748 --- [           main] .s.c.n.e.s.EurekaAutoServiceRegistration : Updating port to 7001
2020-09-22 17:51:53.160  INFO 16748 --- [           main] c.y.s.eureka.EurekaServerApplication     : Started EurekaServerApplication in 11.497 seconds (JVM running for 12.053)

6.查看Eureka服务

访问http://eureka1:7001/

访问http://eureka2:7002/

可以从上面看出集群信息,
Eureka Server 1对应的DS Replicas是eureka2;
Eureka Server 2对应的DS Replicas是eureka1。

7.配置Eureka Client

Eureka Client访问Eureka Sever集群配置:

eureka:instance:hostname: localhostprefer-ip-address: true    client:service-url:register-with-eureka: truefetch-registry: truedefaultZone: http://eureka1:7001/eureka,http://eureka2:7002/eureka

只需要指定eureka.client.service-url.defaultZone这个属性,
为所有Eureka Server集群信息即可,
区别在于单机的时候配置一个Eureka Server即可。

8.参考文章

Eureka集群搭建
SpringCloud服务注册中心双节点集群(Eureka集群)

http://www.taodudu.cc/news/show-1250985.html

相关文章:

  • Eclipse启动SpringCloud微服务集群的方法
  • SpringCloud发现服务代码(EurekaClient,DiscoveryClient)
  • SpringBoot集成Actuator监控管理
  • SpringBoot集成Actuator端点配置
  • SpringBoot集成Actuator健康指示器health
  • gRPC创建Java RPC服务
  • ProtoBuf3语法指南(Protocol Buffers)_上
  • ProtoBuf3语法指南(Protocol Buffers)_下
  • gPRC基本介绍
  • Log4j2日志框架集成Slf4j日志门面
  • XML解析的四种方式
  • XML解析和创建的JAXB方式
  • 【转载】JSON介绍
  • Elasticsearch单机安装Version7.10.1
  • Drools创建Maven工程
  • Java二、八、十、十六进制介绍
  • Drools集成SpringBoot
  • Drools集成SpringBootStarter
  • Jsonschema2pojo从JSON生成Java类(Maven)
  • YangTools从YANG生成Java类(Maven)
  • GitBash添加tree命令
  • SpringBoot集成Maven工程
  • SpringBoot开发Restful接口
  • Notepad++便签模式
  • SpringBoot集成Cache缓存(Ehcache缓存框架,注解方式)
  • PowerDesigner生成数据库刷库脚本
  • PowerDesigner生成数据库设计文档
  • Eclipse配置国内镜像源
  • PingInfoView批量PING工具
  • Git合并两个不同的仓库

SpringCloud创建Eureka模块集群相关推荐

  1. SpringCloud创建Eureka模块

    1.说明 本文详细介绍Spring Cloud创建Eureka模块的方法, 基于已经创建好的Spring Cloud父工程, 请参考SpringCloud创建项目父工程, 在里面创建Eureka模块, ...

  2. SpringCloud(三)Eureka之集群搭建以及将服务注册到多个EurekaServer

    概述:为了保证EurekaServer的高可用,可以采用服务集群方式.当有一台挂掉时,其他节点仍可以继续提供服务.在EurekaServer的集群配置中,他们为分别配置对方为自己的注册中心,并将自己节 ...

  3. SpringCloud创建Eureka Client服务注册

    1.说明 本文详细介绍微服务注册到Eureka的方法, 即Eureka Client注册到Eureka Server, 这里用任意一个Spring Cloud服务为例, 比如下面已经创建好的Confi ...

  4. SpringCloud创建Config模块

    1.说明 本文详细介绍Spring Cloud创建Config模块的方法, 基于已经创建好的Spring Cloud父工程, 请参考SpringCloud创建项目父工程, 创建Config模块这个子工 ...

  5. SpringCloud创建Gateway模块

    1.说明 本文详细介绍Spring Cloud创建Gateway模块的方法, 基于已经创建好的Spring Cloud父工程, 请参考SpringCloud创建项目父工程, 和已经创建好的Eureka ...

  6. SpringCloud的入门学习之Netflix-eureka(Eureka的集群版搭建)

    1.Eureka单机版的话,可能会出现单点故障,所以要保障Eureka的高可用,那么可以进行搭建Eureka的集群版. 高可用的Eureka的注册中心,将注册中心服务部署到多台物理节点上,形成一个集群 ...

  7. 基于云服务创建弹性托管集群服务

    弹性托管集群服务 使用JMR产品,可在几分钟内创建并启动集群,弹性灵活,可根据业务规模与工作负载等需求实现低成本集群组件最优组合,动态扩容缩容,更专注于业务分析. 使用京东云的JMR,对于其他云平台可 ...

  8. Eureka Server集群数据同步

    一.数据同步 Eureka Server之间会互相进行注册,构建Eureka Server集群,不同Eureka Server之间会进行服务同步,用来保证服务信息的一致性.当服务提供者发送注册请求到一 ...

  9. Redis创建高可用集群教程【Windows环境】

    模仿的过程中,加入自己的思考和理解,也会有进步和收获. 在这个互联网时代,在高并发和高流量可能随时爆发的情况下,单机版的系统或者单机版的应用已经无法生存,越来越多的应用开始支持集群,支持分布式部署了. ...

最新文章

  1. windows 10 代理服务器出现问题
  2. laravel mysql 锁表_Laravel 数据库加密及数据库表前缀配置方法
  3. 为什么不可以使用哈曼顿距离_哈曼卡顿音乐琉璃1代2代评测,不但抓耳,还让你视线也难离开...
  4. oracle 48小时内_近了近了,内马尔正大步向巴萨走来,西媒称有望48小时内敲定转会...
  5. python cls_关于python中的self,ins , cls的解释
  6. 网络(8)-HTTP、Socket、TCP、UDP的区别和联系
  7. Spring Boot 菜鸟教程 application.properties 常用配置
  8. tqdm模块不能单行输出问题
  9. common-io-2.0的新功能之文件监控FileAlteration(文件监听的两种实现方法《很全的监听文件例子》)...
  10. KCF跟踪算法 入门详解
  11. UNIX环境高级编程习题——第一章
  12. json对象转换为字符串数组 java_Json对象与Json字符串的转化、JSON字符串与Java对象的转换...
  13. ClassForName应用于工厂模式
  14. cherry pick用法
  15. QT笔记——Qt动态属性 之 unpolish() 和 polish()
  16. 根本原因分析(RCA)
  17. 【个人提升】如何克服惰性
  18. java不会英语可以学习吗,详细说明
  19. PIL库的Image.open打开webp文件报错
  20. XAG一键并轨XRP媒体报道

热门文章

  1. Maven 创建、测试工程
  2. IE浏览器报错 ‘Rowspan’ 为空或不是对象
  3. #ifndef HeaderName_h #define HeaderName_h #endif 使用详解
  4. 51单片机中断interrupt……using……
  5. 修改SQL Service数据库排序规则
  6. JavaScript算法(实例九)整数的置换 / 求s=a+aa+aaa+aaaa+aa...a的值 / 自守数
  7. 入门机器学习(六)--课后作业解析-logistics回归(python实现)
  8. python 从大到小循环_python算法(3) 插入排序
  9. 排序算法之选择排序(简单选择排序、堆排序)
  10. 8086CPU的寄存器