【springcloud学习(dalston.sr1)】Eureka服务端集群的搭建(含源代码)(二)

该系列项目整体介绍及源代码请参照前面写的一篇文章【springcloud学习(dalston.sr1)】项目整体介绍(含源代码)(一)

springcloud学习(dalston.sr1)系统文章汇总如下:

【springcloud学习(dalston.sr1)】项目整体介绍(含源代码)(一)

【springcloud学习(dalston.sr1)】Eureka服务端集群的搭建(含源代码)(二)

【springcloud学习(dalston.sr1)】Eureka单个服务端的搭建(含源代码)(三)

【springcloud学习(dalston.sr1)】Eureka 客户端服务注册(含源代码)(四)

【springcloud学习(dalston.sr1)】服务消费者通过restTemplate来访问服务提供者(含源代码)(五)

【springcloud学习(dalston.sr1)】Eureka 服务发现(含源代码)(六)

【springcloud学习(dalston.sr1)】Ribbon负载均衡(含源代码)(七)

【springcloud学习(dalston.sr1)】使用Feign实现接口调用(含源代码)(八)

【springcloud学习(dalston.sr1)】Hystrix服务熔断(含源代码)(九)

【springcloud学习(dalston.sr1)】Hystrix服务降级(含源代码)(十)

【springcloud学习(dalston.sr1)】Hystrix Dashboard服务监控(含源代码)(十一)

【springcloud学习(dalston.sr1)】Zuul路由访问映射规则配置及使用(含源代码)(十二)

【springcloud学习(dalston.sr1)】Config配置中心-ConfigServer端与Git通信(含源代码)(十三)

【springcloud学习(dalston.sr1)】Config配置中心-Configclient端通过和Config server端通信来获取配置文件信息(含源代码)(十四)

这篇文章主要介绍多个eureka服务端的集群环境是如何搭建的。

(一)eureka的简要说明

Eureka是用来进行服务注册与发现的。类似于一栋写字楼,有很多公司入驻,但入驻前需要先在大楼的物业处进行注册登记。Eureka也分为服务端和客户端,服务端是提供服务注册和服务发现,通过访问服务端,能获取到一个服务注册列表。客户端则需要访问服务端,以将自己注册到服务端。类似于写字楼的物业公司,通常自己不用注册,但其他入驻的公司,需要在物业处进行注册,其他公司在物业处,能获取到注册登记的公司列表。

(二)eureka服务端集群搭建

(1)新建3个module

这里通过了3个模块,来模拟eureka服务端集群的搭建。首先在IDEA的springcloud2025项目中新建了3个module,如下图。

(2)在新建号的module中,比如microservicecloud-eureka-7001模块中,在POM引入相关依赖

XML 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>springcloud2025</artifactId>
        <groupId>com.company</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>microservicecloud-eureka-7001</artifactId>

    <!-- Eureka-server服务端 -->
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka-server</artifactId>
        </dependency>
    </dependencies>

</project>

(3)主机域名地址映射修改,通过修改路径C:\Windows\System32\drivers\etc\hosts文件,增加3个域名映射。这样访问http://eureka7001.com的效果等同于访问http://localhost(当然访问http://eureka7002.com的效果也同样等同于访问http://localhost),这里只是在一台机器上模拟不同域名的主机,所以就这样处理了下。实际项目场景中应该是不同的主机。

(4)编写microservicecloud-eureka-7001项目的application.yml文件,如下图,其中配置了当前项目的端口号为7001,并设置了eureka服务端主机名称为eureka7001.com这里另外2个eureka服务的主机名分别是eureka7002.comeureka7003.com,这里涉及到主机域名地址映射修改,后面会提到)。需要注意的是服务端自己不注册自己,也不需要检索服务,所以配置项eureka.client.register-with-eureka和eureka.client.fetch-register的值都为false,由于是集群搭建,也需要提供另外两个eureka服务端的地址,也即配置eureka.client.service-url.defaultZone=http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/。由于当前服务部署的主机对应域名为eureka7001.com,这里的defaultZone就需要配置成另外两个[http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/](http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/ "http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/"),这样是为了起到集群的作用(如果不做eureka集群,则这里的地址直接填写为本机地址即可,也即http://localhost:7001/eureka)。

java 复制代码
server:
  port: 7001

eureka:
  instance:
    hostname: eureka7001.com  #eureka服务端的实例名称
  client:
    register-with-eureka: false #false表示不向注册中心注册自己
    fetch-register: false #false表示自己端就是注册中心,我的职责就是维护服务实力,并不需要去检索服务
    service-url:
      defaultZone: http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/ # http://${eureka.instance.hostname}:${server.port}/eureka/ #设置与erueka server交互的地址查询服务和注册服务,都需要依赖于这个地址

(5)在启动类上加@EnableEurekaServer注解,已启用eureka服务,并表明当前服务是eureka的服务端。

java 复制代码
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@SpringBootApplication
@EnableEurekaServer
public class EurekaServer7001Application {

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

项目结构如下:

(6)经过以上步骤,项目microservicecloud-eureka-7001就配置好了。参照这个项目,同样新建另外两个microservicecloud-eureka-7002和microservicecloud-eureka-7003。需要注意的是配置文件信息稍有差别。比如microservicecloud-eureka-7002的配置文件为

java 复制代码
server:
  port: 7002

eureka:
  instance:
    hostname: eureka7002.com  #eureka服务端的实例名称,如果没有做eureka集群,这里直接填localhost即可
  client:
    register-with-eureka: false #false表示不向注册中心注册自己
    fetch-register: false #false表示自己端就是注册中心,我的职责就是维护服务实力,并不需要去检索服务
    service-url:
      defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7003.com:7003/eureka/ #设置与erueka server交互的地址查询服务和注册服务,都需要依赖于这个地址

microservicecloud-eureka-7003的yml配置文件为

java 复制代码
server:
  port: 7003

eureka:
  instance:
    hostname: eureka7003.com  #eureka服务端的实例名称
  client:
    register-with-eureka: false #false表示不向注册中心注册自己
    fetch-register: false #false表示自己端就是注册中心,我的职责就是维护服务实力,并不需要去检索服务
    service-url:
      defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/ #设置与erueka server交互的地址查询服务和注册服务,都需要依赖于这个地址

(7)然后可以启动项目了,首先启动microservicecloud-eureka-7001。需要注意的是由于构建的是集群项目,所以这个项目启动时,另外2个项目还未启动,所以控制台可能报如下错误,可以暂时忽略。此时再依次启动另外microservicecloud-eureka-7002项目和microservicecloud-eureka-7003项目(启动microservicecloud-eureka-7002、microservicecloud-eureka-7003时,由于前面已经启动了microservicecloud-eureka-7001项目,所以这两个项目启动过程中不会报以下错误)

3个项目启动完成后,我们可以在浏览器中输入http://eureka7001.com:7001访问(这里依赖于前面第3部配置的主机名和地址映射,或者直接输入http://localhost:7001也能访问),看到如下页面,即表示eureka服务启动正常了。类似的在浏览器中输入http://eureka7002.com:7002和http://eureka7003.com:7003也是类似的效果

(8)通过上述步骤,由3个项目搭建的eureka服务端集群就搭建好了。

相关推荐
1candobetter1 天前
Docker Compose Build 与 Up 的区别:什么时候必须重建镜像
docker·容器·eureka
西岸行者1 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
悠哉悠哉愿意1 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
追风筝的人er1 天前
企业管理系统如何实现自定义首页与千人千面?RuoYi Office 给出了完整方案
vue.js·spring boot·spring cloud
别催小唐敲代码2 天前
嵌入式学习路线
学习
毛小茛2 天前
计算机系统概论——校验码
学习
babe小鑫2 天前
大专经济信息管理专业学习数据分析的必要性
学习·数据挖掘·数据分析
winfreedoms2 天前
ROS2知识大白话
笔记·学习·ros2
在这habit之下2 天前
Linux Virtual Server(LVS)学习总结
linux·学习·lvs
我想我不够好。2 天前
2026.2.25监控学习
学习