写点什么

Eureka 非分区集群部署

作者:李子捌
  • 2021 年 12 月 11 日
  • 本文字数:2597 字

    阅读完需:约 9 分钟

Eureka非分区集群部署

1、简介

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

2、修改 hosts 文件

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


127.0.0.1       eureka18881.com127.0.0.1       eureka18882.com127.0.0.1       eureka18883.com127.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@EnableEurekaServerpublic 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
## 修改实例hostnameeureka: 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@EnableDiscoveryClientpublic 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 服务注册上去了



发布于: 5 小时前阅读数: 6
用户头像

李子捌

关注

华为云享专家 2020.07.20 加入

公众号【李子捌】

评论

发布
暂无评论
Eureka非分区集群部署