Eureka Server 集群搭建

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qmqm011/article/details/84984857

Eureka Client(包括 service provider 和 service consumer)会定期(默认是30秒,可以修改)向 Eureka Server 发送心跳来进行服务续约(renew),同时 Eureka Client 也会定期(默认30秒,可以修改)从 Eureka Server 获取服务注册列表缓存到本地,可见 Eureka Server 在微服务系统中有着举足轻重的作用,所以,一般情况下都会对 Eureka Server 进行高可用配置。

新建一个 Maven 项目 eureka-server-cluster,其 pom 文件内容如下:

<?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.wuychn</groupId>
    <artifactId>eureka-server-cluster</artifactId>
    <version>1.0-SNAPSHOT</version>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.0.RELEASE</version>
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <spring.cloud.version>Finchley.RELEASE</spring.cloud.version>
    </properties>

    <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>

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

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

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


</project>

在启动类上加上 @EnableEurekaServer 注解开启 Eureka Server 的功能:

package com.wuychn;

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

@SpringBootApplication
@EnableEurekaServer
public class EurekaServerClusterApplication {

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

application.yml 文件如下,采用了多 profiles 的配置方式:

spring:
  application:
    name: eureka-server
  profiles:
    active: peer1

application-peer1.yml:

server:
  port: 9001
eureka:
  instance:
    hostname: peer1
  client:
    fetch-registry: true
    register-with-eureka: true
    serviceUrl:
      defaultZone: http://peer2:9002/eureka/,http://peer3:9003/eureka/

application-peer2.yml:

server:
  port: 9002
eureka:
  instance:
    hostname: peer2
  client:
    fetch-registry: true
    register-with-eureka: true
    serviceUrl:
      defaultZone: http://peer1:9001/eureka/,http://peer3:9003/eureka/

application-peer3.yml:

server:
  port: 9003
eureka:
  instance:
    hostname: peer3
  client:
    fetch-registry: true
    register-with-eureka: true
    serviceUrl:
      defaultZone: http://peer1:9001/eureka/,http://peer2:9002/eureka/

注意配置文件中使用了 peer1、peer2、peer3 这样的主机名,需要在 hosts 文件中添加如下配置:

127.0.0.1			peer1
127.0.0.1			peer2
127.0.0.1			peer3

以 application-peer1.yml 为例,首先配置了端口为 9091,主机名为 peer1,fetch-registry 配置项的意思是是否从注册中心获取服务注册列表信息,在 Eureka Server 单点配置的时候,这里要配置为 false,而集群环境则需要配置为 true,该配置项默认值为 true,因此也可以省略。register-with-eureka 配置项的意思是是否注册到服务注册中心,同 fetch-registry 一样,在 Eureka Server 单点配置时需要配置为 false,集群环境需要配置为 true,该配置项默认值为 true,因此也可以省略。defaultZone 指定集群中其他节点的地址,多个用逗号分隔。

修改 application.yml 配置文件,分别使用 application-peer1.yml、application-peer2.yml 和 application-peer3.yml 启动三个 Eureka Server 节点,在浏览器中访问 localhost:9001(localhost:9002、localhost:9003 类似),可以看到集群配置成功:

项目结构如图:

 

猜你喜欢

转载自blog.csdn.net/qmqm011/article/details/84984857