Spring Cloud Eureka 集群搭建 - 以及发现一个 “直觉BUG”

发表于:2019-6-06 20:33

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:GordonDicaprio    来源:博客园

  首先解释一下标题所说的“直觉BUG”,这个是我自己的定义。就是我们直觉上认为这是一个BUG,是一个错误,而实际并没有出错。
  比如下图:
  虽然出现报错信息,但是,整个程序并没有出错。至于原因,图片上的文字已经很好的解释了。
  在此,再简单的说一下。
  出现这种情况的原因是,我们的程序已经启动(已经出现红框中此条日志,代表程序已经启动,所以程序本身没有问题。),为什么会出现错误呢?
  是因为在此系统中,我们要搭建的是集群环境, 每一台服务器在自己启动之后,都要去连接集群中的其他服务器,以便于相互之间通讯传递信息。
  但是,我们肯定是按照次序启动服务器,我们不管先启动哪一台服务器,其他的服务器都还没有准备就绪,所以肯定会出现找不到要连接的服务器,所以会报错。
  这个错误根本不需要解决, 把所有的服务器全部启动,整个集群就可以正常运行(因为出现的是连接错误,现在所有的服务器已经准备就绪,所以不会再一次出现连接错误,除非某台服务器down掉。)。
  下面我们看一下SpringCloudEureka集群的搭建过程:
  1、首先创建项目结构:(使用SpringBoot 1.5.10)

  2、在启动程序类头部加入注
   package com.thunisoft.thunisoftregister;
  import org.springframework.boot.SpringApplication;
  import org.springframework.boot.autoconfigure.SpringBootApplication;
  import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
  @EnableEurekaServer
  @SpringBootApplication
  public class ThunisoftRegisterApplication {
  public static void main(String[] args) {
  SpringApplication.run(ThunisoftRegisterApplication.class, args);
  }
  }
  3、编写配置文件
   spring:
  application:
  name: spring-cloud-eureka
  profiles: peer1
  server:
  port: 8000
  eureka:
  instance:
  hostname: peer1
  client:
  serviceUrl:
  defaultZone: http://peer2:8001/eureka/,http://peer3:8002/eureka/
  fetch-registry: true
  register-with-eureka: true
  ---
  spring:
  application:
  name: spring-cloud-eureka
  profiles: peer2
  server:
  port: 8001
  eureka:
  instance:
  hostname: peer2
  client:
  serviceUrl:
  defaultZone: http://peer1:8000/eureka/,http://peer3:8002/eureka/
  fetch-registry: true
  register-with-eureka: true
  ---
  spring:
  application:
  name: spring-cloud-eureka
  profiles: peer3
  server:
  port: 8002
  eureka:
  instance:
  hostname: peer3
  client:
  serviceUrl:
  defaultZone: http://peer1:8000/eureka/,http://peer2:8001/eureka/
  fetch-registry: true
  register-with-eureka: true
   以上配置中标红的代码段很重要,在此进行说明:
  1、fetch-registry:表示是否从eureka server获取注册信息,如果是单一节点,不需要同步其他eureka server节点,则可以设置为false,但此处为集群,应该设置为true,默认为true,可不设置。
  2、register-with-eureka:表示是否将自己注册到eureka server,因为要构建集群环境,需要将自己注册到及群众,所以应该开启。默认为true,可不显式设置。
  4、因为实在一台机器上实验,所以修改host文件(windows系统下、C:\Windows\System32\drivers\etc)
    127.0.0.1       peer1
  127.0.0.1       peer2
  127.0.0.1       peer3
   增加如上三段
  5、启动注册中心服务
  5.1、可以使用IDEA进行启动


  按照这个步骤添加三个启动节点,注意: program arguments 参数依次更改为 peer2 、peer3,与配置文件中的 spring.application.files 参数值对应。
  之后全部启动。
  5.2、打包成jar之后,使用 java -jar命令启动
  使用maven插件或gradl插件等等构件工具,将程序打包为jar。然后执行以下命令
   java -jar 生成的jar包名称.jar --spring.profiles.active=peer1
  java -jar 生成的jar包名称.jar --spring.profiles.active=peer2
  java -jar 生成的jar包名称.jar --spring.profiles.active=peer3
   注意: 以上两种启动方式均可以将集群启动,但是有一个问题要注意,就是上面提到“直觉BUG”问题。详细参考上面。
  6、查看集群效果
  
      上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号