栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringCloud——高可用EurekaServer应该这样编写

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringCloud——高可用EurekaServer应该这样编写

高可用Eureka Server 构建一个双节点Eureka Server集群 Eureka Server

pom.xml文件



    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.2.2.RELEASE
         
    
    com.lanh
    eureka
    0.0.1-SNAPSHOT
    eureka
    Demo project for Spring Boot
    
        1.8
    
    
        
            
                org.springframework.cloud
                spring-cloud-dependencies
                Hoxton.SR1
                pom
                import
            
        
    
    
        
            org.springframework.cloud
            spring-cloud-starter-netflix-eureka-server
        

        
            org.springframework.boot
            spring-boot-starter
        

        
            org.springframework.boot
            spring-boot-starter-test
            test
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    



启动类

package com.lanh.eureka;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@SpringBootApplication
@EnableEurekaServer
public class EurekaApplication {

    public static void main(String[] args) {
        SpringApplication.run(EurekaApplication.class, args);
    }

}
方法一
    配置系统的hosts,Windows系统的hosts文件路径是C:WindowsSystem32driversetchosts;Linux及MacOS等系统的文件路径是/etc/hosts。
    127.0.0.1 peer1 peer2
    
    将application.yml修改如下,让两个节点的Eureka Server相互注册。
server:
# 设置 Eureka Server WEB 控制台端口、服务注册发现端口。Eureka Server 服务注册 发现端口默认为 8761。
    port: 8761
spring:
    application:
    # 设置 spring 应用命名,默认为 null。同命名的应用会注册到同一个服务集群中。
        name: eureka1
    # 指定profile=peer1
    profiles: peer1

eureka:
    client:
        service-url:
            # 将自己注册到peer2这个Eureka上面去
            defaultZone: http://peer2:8762/eureka/
    instance:
        hostname: peer1
        
---

server:
    # 设置 Eureka Server WEB 控制台端口、服务注册发现端口。Eureka Server 服务注册 发现端口默认为 8761。
    port: 8762
spring:
    application:
        # 设置 spring 应用命名,默认为 null。同命名的应用会注册到同一个服务集群中。
        name: eureka2
    # 指定profile=peer2
    profiles: peer2

eureka:
    client:
        service-url:
            # 将自己注册到peer2这个Eureka上面去
            defaultZone: http://peer1:8761/eureka/
    instance:
        hostname: peer2

如上,使用连字符(—)将该application.yml文件分为三段。第二段和第三段分别为spring.properties指定了一个值,该值表示它所在的那段内容应用在哪个Profile里。第一段由于并未指定spring.profiles,因此这段内容会对所有Profile生效。
经过以上分析,不难理解,我们定义了peer1和peer2这两个Profile。当应用以peer1这个Profile启动时,配置该EurekaServer的主机名为peer1,并将其注册到http://peer2:8762/eureka/ ;反之,当应用以profile=peer2时,EurekaServer会注册到peer1节点的Eureka Server。

测试

打包项目,并使用以下命令启动两个Eureka Server节点

jar名称根据自己的项目名进行修改

通过spring.profiles.active指定使用哪个profile启动。

启动后:
访问http://peer1:8761 ,会发现“registered-replicas”中已有peer2节点;同理,访问http://peer2:8762 ,也能发现其中的“registered-replicas”有peer1节点

方法二

不知道你们觉得打包成jar包麻不麻烦,我觉得挺麻烦的,虽然在正常开发的时候确实是这样,但是我们现在是在学习,有一个这么好的Idea摆在我们面前,为什么要用命令窗口去启动测试它呢?所以我的做法是,在idea中并行执行程序:

接下来,填入下面给出的application.yml第一个代码块,启动程序,然后再把application.yml全部替换成第二个代码块,启动,即可出现上面的结果。

注意:两次启动间隔要尽量小,不然就会导致连接不成功,建议:提前复制好第二个代码块,启动完第一次,马上修改yml文件,迅速启动第二次

    配置系统的hosts,Windows系统的hosts文件路径是C:WindowsSystem32driversetchosts;Linux及MacOS等系统的文件路径是/etc/hosts。
    127.0.0.1 peer1 peer2
    
    下面有两个application.yml

application.yml

server:
# 设置 Eureka Server WEB 控制台端口、服务注册发现端口。Eureka Server 服务注册 发现端口默认为 8761。
    port: 8761
spring:
    application:
    # 设置 spring 应用命名,默认为 null。同命名的应用会注册到同一个服务集群中。
        name: cloud-eureka
eureka:
    client:
        # 是否将自己注册到 Eureka-Server 中,默认的为 true
        register-with-eureka: false
        # 是否从 Eureka-Server 中获取服务注册信息,默认为 true
        fetch-registry: false
        service-url:
            defaultZone: http://localhost:8761/eureka/
server:
# 设置 Eureka Server WEB 控制台端口、服务注册发现端口。Eureka Server 服务注册 发现端口默认为 8761。
    port: 8762
spring:
    application:
        # 设置 spring 应用命名,默认为 null。同命名的应用会注册到同一个服务集群中。
        name: eureka2

eureka:
    client:
        service-url:
            # 将自己注册到peer2这个Eureka上面去
            defaultZone: http://peer1:8761/eureka/
    instance:
        hostname: peer2

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/762575.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号