【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服务端集群就搭建好了。

相关推荐
兔子坨坨1 小时前
pycharm连接github(详细步骤)
windows·git·学习·pycharm·github
虾球xz2 小时前
游戏引擎学习第293天:移动Familiars
c++·学习·游戏引擎
名誉寒冰3 小时前
RPC框架源码分析学习(二)
qt·学习·rpc
m0_738206546 小时前
嵌入式学习的第二十二天-数据结构-栈+队列
数据结构·学习
Hello World......6 小时前
互联网大厂Java面试:从Spring到微服务的全面探讨
java·spring boot·spring cloud·微服务·面试·技术栈·互联网大厂
向上的车轮11 小时前
MATLAB学习笔记(七):MATLAB建模城市的雨季防洪排污的问题
笔记·学习·matlab
前端小崔12 小时前
从零开始学习three.js(18):一文详解three.js中的着色器Shader
前端·javascript·学习·3d·webgl·数据可视化·着色器
龙湾开发13 小时前
计算机图形学编程(使用OpenGL和C++)(第2版)学习笔记 10.增强表面细节(二)法线贴图
c++·笔记·学习·图形渲染·贴图
liang_202613 小时前
【HT周赛】T3.二维平面 题解(分块:矩形chkmax,求矩形和)
数据结构·笔记·学习·算法·平面·总结