搭建Eureka高可用集群 - day03
全部代码发出来了
搭建服务提供者
步骤:
1.创建项目,引入依赖
2.添加Eureka相关配置
3.添加@EnableEurekaClient注解
4.测试运行
步骤1:创建项目,引入依赖
使用Spring Initializr方式创建一个名称为eureka-provider的Spring Boot项目,这里将Group命名为com.bushuo,将Artifact命名为eureka-provider,在pom.xml文件中添加Web、Eureka Client依赖。
在pom文件中添加的Eureka Client、Web依赖如下:
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.bushuo</groupId>
<artifactId>eureka-provider</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>eureka-provider</name>
<description>Demo project for Spring Boot</description>
<url/>
<licenses>
<license/>
</licenses>
<developers>
<developer/>
</developers>
<scm>
<connection/>
<developerConnection/>
<tag/>
<url/>
</scm>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.9.10</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.SR2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
步骤2:添加Eureka的相关配置
在全局配置文件application.yml中添加Eureka的相关配置信息。
步骤3:在项目启动类添加@EnableEurekaClient注解
在项目启动类EurekaProviderApplication上添加@EnableEurekaClient注解开启Eureka Client功能。
步骤4:测试运行
两个项目都要启动
启动eureka-provider项目,
在浏览器中访问http://localhost:7071,观察注册列表变化。
搭建服务消费者
步骤:
1.创建项目,引入依赖
2.添加Eureka相关配置
3.添加@EnableEurekaClient注解
4.测试运行
步骤1:创建项目,引入依赖
使用Spring Initializr方式创建一个名称为eureka-consumer的Spring Boot项目,这里将Group命名为com.bushuo,将Artifact命名为eureka-consumer,添加Web、Eureka Client依赖。详细内容同搭建服务提供者。
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.bushuo</groupId>
<artifactId>eureka-consumer</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>eureka-consumer</name>
<description>Demo project for Spring Boot</description>
<url/>
<licenses>
<license/>
</licenses>
<developers>
<developer/>
</developers>
<scm>
<connection/>
<developerConnection/>
<tag/>
<url/>
</scm>
<properties>
<java.version>1.8</java.version>
</properties>
<!-- 依赖管理 -->
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>
spring-cloud-starter-netflix-eureka-client
</artifactId>
</dependency>
<!-- Spring Boot Web应用启动器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Spring Boot 测试启动器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.9.10</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.SR2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
步骤2:添加Eureka的相关配置
在全局配置文件application.yml中添加Eureka的相关配置信息。
步骤3:在项目启动类添加@EnableEurekaClient注解
同样在项目启动类EurekaConsumerApplication上添加@EnableEurekaClient注解开启Eureka Client功能。
server项目重新启动
搭建Eureka高可用集群
步骤:
1.使用SpringInitializr方式创建一个父工程
2.将创建的三个eureka项目复制到父工程中,并更新成Maven项目
3.父工程中创建子项目
步骤1:使用SpringInitializr方式创建一个父工程
使用SpringInitializr方式创建一个项目eureka-demo;
步骤2:将创建的三个eureka项目复制到父工程中,并更新成Maven项目
找到当前项目的工作空间,将创建好的3个eureka项目复制到eureka-demo中。
再打开idea页面,eureka-demo项目下就有了以上3个项目模块:
点开每个子项目模块,将它们都转换成maven项目:pom文件上右键->Add as Maven Project。
转换后pom文件前面的标识变成蓝色即可,如下:
如果idea的server的窗口没有,可以点击这个看看
将项目启动就可以在窗口观察到。
步骤:
1.更改系统hosts文件配置
2.改造Eureka Server
3.改造服务提供者
4.改造服务消费者
5.测试运行
步骤1:更改系统hosts文件配置
以 Windows系统为例,如果要构建集群,需要修改 hosts 文件,为其添加主机名的映射。
打开C:\Windows\System32\drivers\etc\hosts 文件,添加以下内容:
127.0.0.1 server1
127.0.0.1 server2
将hosts的文件复制到桌面,进行添加。添加完后,将文件替换
步骤2:改造Eureka Server
按照搭建eureka-server的方式,再搭建一个名为eureka-server-another 的Eureka Server。
eureka-server-another的application.yml配置文件内容如下:
更改eureka的application.yml配置文件内容如下:
步骤3:改造服务提供者
按照搭建eureka-provider的方式,搭建一个名为eureka-provider-another的服务提供者。
eureka-provider-another的application.yml配置文件内容如下:
更改eureka-provider的application.yml配置文件内容如下:
步骤4:改造服务消费者
修改项目eureka-consumer中的全局配置文件application.yml。服务器名称的添加
步骤5:测试运行
依次启动两个Eureka Server、两个服务提供者、一个服务消费者。启动成功后,访问server1:7071的页面效果如下:
访问server1:7009的页面效果如下:
俩个服务器是相同的注册实例
说明Eureka集群的数据同步工作正常:这意味着一个Eureka Server上的注册信息能够被复制到另一个Eureka Server上,确保了数据的一致性。这是Eureka集群高可用性的关键特性之一。
客户端服务能够发现并注册到任一Eureka Server:这表明客户端服务能够通过Eureka客户端库自动发现并注册到集群中的任何活动节点,即使其中一个节点不可用,也能保证服务发现的连续性。