SpringCloud学习之搭建eureka集群,手把手教学,新手教程

一.为什么需要集群

上一篇文章讲解了如何搭建单个节点的eureka,这篇讲解如何搭建eureka集群,这里的集群还是本地不同的端口执行三个eureka,因为条件不要允许,没有三台电脑,所以大家将就一下吧,eureka集群的目的就是防止一个点故障导致,整个服务瘫痪的问题,成为单点故障,因为一个点出问题,还有另一个点顶上去,代替这个点工作,所以集群也实现了高可用、高性能

二.集群的原理

每一个注册点都配置有其它点的url,能够与其他server点进行数据的同步,当服务向一个点注册时,该店就会把该服务同步到其它注册点,当消费者需要消费时就会向注册中心询问具体的服务,注册中心就会向消费者提供具体的提供该服务的服务提供者的访问地址,最后实现服务的调用

SpringCloud学习之搭建eureka集群,手把手教学,新手教程_第1张图片在这里插入图片描述

三.创建集群win环境配置

这里方便就直接把所有的服务都泡在本地的win10环境中,本来真正模拟环境是要在linux的虚拟机上跑的,大家可以自行百度,原理都一样的,只不过跑在linux上需要打包发布,我就直接在win上操作了。首先本地跑多个服务配置一下,域名映射,在C:\Windows\System32\drivers\etc路径下的hosts文件中加入:
127.0.0.1 eureka3000.com
127.0.0.1 eureka3001.com
127.0.0.1 eureka3002.com
这里需要提醒的是,修改hosts文件是有权限的,具体设置权限的方法参考https://blog.csdn.net/qq_43255017/article/details/103549642

四.创建集群

  • 首先创建的目录如下:创建eureka3000在上一篇文章已经讲过了(参考https://blog.csdn.net/qq_43255017/article/details/103553070),创建eureka3001和eureka3001也是一样,这里就直接粘贴处pom文件了

SpringCloud学习之搭建eureka集群,手把手教学,新手教程_第2张图片在这里插入图片描述

  • eureka3000的pom文件:

<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0modelVersion>
    <groupId>com.org.ldcgroupId>
    <artifactId>eureka3000artifactId>
    <version>0.0.1-SNAPSHOTversion>
    <name>eureka3000name>
    <description>Demo project for Spring Bootdescription>

    <properties>
        <java.version>1.8java.version>
    properties>

    
    <parent>
        <groupId>com.org.ldcgroupId>
        <artifactId>eureka-fatherartifactId>
        <version>1.0.0.RELEASEversion>
    parent>

    
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloudgroupId>
            <artifactId>spring-cloud-starter-netflix-eureka-serverartifactId>
        dependency>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>
        dependency>
    dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloudgroupId>
                <artifactId>spring-cloud-dependenciesartifactId>
                <version>Finchley.SR2version>
                <type>pomtype>
                <scope>importscope>
            dependency>
        dependencies>
    dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-maven-pluginartifactId>
            plugin>
        plugins>
    build>
project>
  • eureka3000的applicatiion.yml文件:
server:
  port: 3000
eureka:
  server:
    enable-self-preservation: false  #关闭自我保护机制
    eviction-interval-timer-in-ms: 4000 #设置清理间隔(单位:毫秒 默认是60*1000)
  instance:
    hostname: eureka3000.com
  client:
    serviceUrl:
        defaultZone: http://eureka3001.com:3001/eureka,http://eureka3002.com:3002/eureka   #将自己当成服务注册到其他注册中心
spring:
  application:
    name: eureka-server-cluster  #设置服务名
  • eureka3000启动类和原来的一样
    • eureka3001的pom文件:

<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0modelVersion>
    <groupId>com.org.ldcgroupId>
    <artifactId>eureka3001artifactId>
    <version>0.0.1-SNAPSHOTversion>
    <name>eureka3001name>
    <description>Demo project for Spring Bootdescription>

    <properties>
        <java.version>1.8java.version>
    properties>

    
    <parent>
        <groupId>com.org.ldcgroupId>
        <artifactId>eureka-fatherartifactId>
        <version>1.0.0.RELEASEversion>
    parent>

    
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloudgroupId>
            <artifactId>spring-cloud-starter-netflix-eureka-serverartifactId>
        dependency>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>
        dependency>
    dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloudgroupId>
                <artifactId>spring-cloud-dependenciesartifactId>
                <version>Finchley.SR2version>
                <type>pomtype>
                <scope>importscope>
            dependency>
        dependencies>
    dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-maven-pluginartifactId>
            plugin>
        plugins>
    build>
project>
  • eureka3001的application文件:
server:
  port: 3001
eureka:
  server:
    enable-self-preservation: false  #关闭自我保护机制
    eviction-interval-timer-in-ms: 4000 #设置清理间隔(单位:毫秒 默认是60*1000)
  instance:
    hostname: eureka3001.com
  client:
    serviceUrl:
        defaultZone: http://eureka3000.com:3000/eureka,http://eureka3002.com:3002/eureka   #将自己当成服务注册到其他注册中心
spring:
  application:
    name: eureka-server-cluster  #设置服务名
  • 启动类同上

  • eureka3002的pom文件:


<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0modelVersion>
    <groupId>com.org.ldcgroupId>
    <artifactId>eureka3002artifactId>
    <version>0.0.1-SNAPSHOTversion>
    <name>eureka3002name>
    <description>Demo project for Spring Bootdescription>

    <properties>
        <java.version>1.8java.version>
    properties>

    
    <parent>
        <groupId>com.org.ldcgroupId>
        <artifactId>eureka-fatherartifactId>
        <version>1.0.0.RELEASEversion>
    parent>

    
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloudgroupId>
            <artifactId>spring-cloud-starter-netflix-eureka-serverartifactId>
        dependency>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>
        dependency>
    dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloudgroupId>
                <artifactId>spring-cloud-dependenciesartifactId>
                <version>Finchley.SR2version>
                <type>pomtype>
                <scope>importscope>
            dependency>
        dependencies>
    dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-maven-pluginartifactId>
            plugin>
        plugins>
    build>

project>
  • eureka3002的application文件:
server:
  port: 3002
eureka:
  server:
    enable-self-preservation: false  #关闭自我保护机制
    eviction-interval-timer-in-ms: 4000 #设置清理间隔(单位:毫秒 默认是60*1000)
  instance:
    hostname: eureka3002.com
  client:
    serviceUrl:
        defaultZone: http://eureka3001.com:3001/eureka,http://eureka3000.com:3000/eureka   #将自己当成服务注册到其他注册中心
spring:
  application:
    name: eureka-server-cluster  #设置服务名
  • 最后是工程的pom文件内容如下:

<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    
    <description>SpringBoot-Eureka环境搭建多模块构建示例description>
    <modelVersion>4.0.0modelVersion>
    <name>eureka-fathername>
    <packaging>pompackaging>

    
    <groupId>com.org.ldcgroupId>
    <artifactId>eureka-fatherartifactId>
    <version>1.0.0.RELEASEversion>

    
    <parent>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-parentartifactId>
        <version>2.0.2.RELEASEversion>
    parent>

    <modules>
        <module>eureka3000module>
        <module>eureka3001module>
        <module>eureka3002module>
        <module>user5000module>
    modules>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.org.ldcgroupId>
                <artifactId>eureka3000artifactId>
                <version>0.0.1-SNAPSHOTversion>
            dependency>
            <dependency>
                <groupId>com.org.ldcgroupId>
                <artifactId>eureka3001artifactId>
                <version>0.0.1-SNAPSHOTversion>
            dependency>
            <dependency>
                <groupId>com.org.ldcgroupId>
                <artifactId>eureka3002artifactId>
                <version>0.0.1-SNAPSHOTversion>
            dependency>
            <dependency>
                <groupId>com.org.ldcgroupId>
                <artifactId>user5000artifactId>
                <version>0.0.1-SNAPSHOTversion>
            dependency>
        dependencies>
    dependencyManagement>
project>

在这里说明一下,这里的搭建教程是基于maven的聚合工程搭建的,需要有能搭建maven聚合工程的前提,这里就默认大家会搭建,所以就一顿输出了,如果还不懂的可以自行去百度。

最后测试就是启动各个注册中心,然后最后启动服务在浏览器分别输入各个注册中心的访问地址,出现如下图,说明搭建成功

SpringCloud学习之搭建eureka集群,手把手教学,新手教程_第3张图片在这里插入图片描述

更多的教程请关注非科班的科班,一起努力,加油干,路过的小伙伴帮我点个赞,谢谢大家

你可能感兴趣的:(SpringCloud学习之搭建eureka集群,手把手教学,新手教程)