zoukankan      html  css  js  c++  java
  • Spring Cloud Eureka 集群搭建

    首先解释一下标题所说的“直觉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:WindowsSystem32driversetc)

    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、查看集群效果

  • 相关阅读:
    Intellij Idea非常6的10个姿势!
    java 集合
    oracle sql调优
    springboot
    整理的java jdk1.8跟mybatiseplus
    java8中lambda的用法(map转list,list转map等等
    遍历数组中的元素(含es6方法)
    云计算初探
    转FMS小工具用法
    Flex内存消耗
  • 原文地址:https://www.cnblogs.com/hfultrastrong/p/8549590.html
Copyright © 2011-2022 走看看