Eureka非分区集群部署

举报
李子捌 发表于 2021/11/09 09:10:49 2021/11/09
【摘要】 1、简介非分区集群部署是Eureka一种简单的集群部署方式,这种方式下集群中的Eureka Server不分区。通常情况下,如果我们的Eureka服务器都在同一个机房中,可以采取这种方式集群部署。2、修改hosts文件由于我在Windows环境下启动多个Eureka服务模拟集群部署,因此先修改C:\Windows\System32\drivers\etc\hosts文件,以便于正确的域名寻址...

1、简介

非分区集群部署是Eureka一种简单的集群部署方式,这种方式下集群中的Eureka Server不分区。通常情况下,如果我们的Eureka服务器都在同一个机房中,可以采取这种方式集群部署。


2、修改hosts文件

由于我在Windows环境下启动多个Eureka服务模拟集群部署,因此先修改C:\Windows\System32\drivers\etc\hosts文件,以便于正确的域名寻址(不修改直接使用127.0.0.1也一样

127.0.0.1       eureka18881.com
127.0.0.1       eureka18882.com
127.0.0.1       eureka18883.com
127.0.0.1       eureka18884.com


3、Eureka Server搭建

我这里一共搭建四个Eureka Server,为了方便看清楚整个Eureka Server的集群方式和启动过程,我搭建了四个Eureka Server,分别是Eureka-01、Eureka-02、Eureka-03、Eureka-04。如果觉得服务过多可以创建不同的profile,在启动Eureka Server时指定不同的profile即可。


第一步:引入pom依赖,我这里采用spring-cloud版本为Greenwich.SR1

<?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">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.liziba</groupId>
    <artifactId>spring-cloud-netflix-demo</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <modules>
        <module>Eureka-01</module>
        <module>Eureka-02</module>
        <module>Eureka-03</module>
        <module>Eureka-04</module>
    </modules>

    <properties>
        <spring-cloud.version>Greenwich.SR1</spring-cloud.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

</project>

第二步:创建启动类Application_EurekaServer01.java,使用@EnableEurekaServer注解开启Eureka Sever

/**
 * <p>
 *		EurekaServer01启动类
 * </p>
 *
 * @Author: Liziba
 * @Date: 2021/10/30 10:46
 */

@SpringBootApplication
@EnableEurekaServer
public class Application_EurekaServer01 {

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

}

第三步:创建application.yml/application.properties配置文件,在如下配置文件中配置类当前Eureka Server的端口信息、服务名称、实例地址、集群地址数组、是否注册本身和获取注册信息,在这里我将Eureka Server本身也注册到了当前Eureka Server中。

## 端口
server:
  port: 18881

## 服务名称
spring:
  application:
    name: Eureka-01

## Eureka 配置信息
eureka:
  instance:
    hostname: eureka18881.com
  client:
    service-url:
      defaultZone: http://eureka18882.com:18882/eureka/,http://eureka18883.com:18883/eureka/,http://eureka18884.com:18884/eureka/
    register-with-eureka: true
    fetch-registry: true

第四步:再创建三个相同的应用,修改对应端口信息、服务名称、集群地址,比如Application_EurekaServer02的配置文件如下所示。

## 修改端口
server:
  port: 18882

## 修改应用名
spring:
  application:
    name: Eureka-02

## 修改实例hostname
eureka:
  instance:
    hostname: eureka18882.com
  client:
    service-url:
    	## defaultZone中配置其他三台服务器地址,剔除自己
      defaultZone: http://eureka18881.com:18881/eureka/,http://eureka18883.com:18883/eureka/,http://eureka18884.com:18884/eureka/
    register-with-eureka: true
    fetch-registry: true

第五步:服务启动,依次启动四个Eureka Server,等服务均启动成功后,访问Eureka Dashboard,查看集群信息。每个Eureka Dashboard中均可以看到四台服务注册信息展示在Instances currently registered with Eureka中,服务注册的名字Application 是配置文件中提供的spring.application.name应用配置名称;DS Replicas中展示的是defaultZone集群信息,展示的名称是对应Eureka Server配置文件中配置的eureka.instance.hostname


4、Eureka Client搭建

Eureka Server未进行分区划分,因此Eureka Client也无需考虑Eureka Server中分区相关配置。

第一步:创建Client服务,引入Eureka Client依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-netflix-eureka-client</artifactId>
</dependency>

第二步:创建启动类,使用@EnableDiscoveryClient开启服务发现

/**
 * <p>
 *      客户端应用启动
 * </p>
 *
 * @Author: Liziba
 * @Date: 2021/10/30 15:34
 */
@SpringBootApplication
@EnableDiscoveryClient
public class Application_client01 {

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

}

第三步:创建配置文件,在配置文件中指定集群服务地址

server:
  port: 19991

spring:
  application:
    name: client-01

eureka:
  client:
    service-url:
      defaultZone: http://eureka18881.com:18881/eureka/,http://eureka18882.com:18882/eureka/,http://eureka18883.com:18883/eureka/,http://eureka18884.com:18884/eureka/

第四步:通过Eureka Dashboard查看服务注册信息,可以看到每个Eureka Server上都会有client-01服务注册上去了


👇🏻 关注公众号 获取更多资料👇🏻

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。