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的配置檔案如下所示。
## 修改端口
port: 18882
## 修改應用名
name: Eureka-02
## 修改執行個體hostname
hostname: eureka18882.com
## defaultZone中配置其他三台伺服器位址,剔除自己
http://eureka18881.com:18881/eureka/,http://eureka18883.com:18883/eureka/,http://eureka18884.com:18884/eureka/第五步:服務啟動,依次啟動四個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開啟服務發現
* 用戶端應用啟動
* @Date: 2021/10/30 15:34
@EnableDiscoveryClient
public class Application_client01 {
SpringApplication.run(Application_client01.class, args);
第三步:建立配置檔案,在配置檔案中指定叢集服務位址
port: 19991
name: client-01
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服務注冊上去了