前言:当注册中心只有一个,而且当这个注册中心宕机了,就会导致整个服务环境不可用,所以我们需要搭建Eureka注册中心集群来实现负载均衡+故障容错
Eureka架构原理图
1、Eureka集群原理
2、创建Eureka Server端服务注册中心模块
(1)在父工程下新建模块
(2)选择模块的项目类型为Maven并选择模块要使用的JDK版本
(3)填写子模块的名称,然后点完成即可完成创建
效果图:
(4)修改eureka-server7002子模块的pom.xml文件,然后reolad一下,下载依赖
例:
<?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">
<parent>
<artifactId>springcloud01</artifactId>
<groupId>com.ken.springcloud</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>eureka-server7002</artifactId>
<dependencies>
<!--以下依赖都没写版本号,没写版本号的情况下会引用父项目的版本-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--监控-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!--热部署-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<!--lombok插件-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--引入自己定义的api调用包,可以使用Payment模块的entity-->
<dependency>
<groupId>com.ken.springcloud</groupId>
<artifactId>api-commons</artifactId>
<version>${project.version}</version>
</dependency>
<!--Eureka Server-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies>
</project>
3、为子模块添加名为application的yml配置文件(注:yml是官方推荐的配置文件格式,最好使用yml文件而不是properties文件)
效果图:
如果application.yml不是绿色的,而是红色的,可以尝试install当前Maven工程,如果还不行可以尝试清除Idea的缓存
4、修改hosts文件,将映射配置进hosts文件里
(1)进入C:\Windows\System32\drivers\etc文件夹,找到hosts文件
(2)修改hosts文件,添加以下映射
127.0.0.1 eureka7001.com
127.0.0.1 eureka7002.com
效果图:
5、分别修改eureka-server7001模块和eureka-server7002模块的application.yml配置文件
(1)修改eureka-server7001的yml配置
server:
port: 7001
eureka:
instance:
#eureka服务端的实例名称
hostname: eureka7001.com
client:
#false表示不向服务中心注册自己
register-with-eureka: false
#false表示自己端就是注册中心,只需要维护服务实例,并不需要检索服务
fetch-registry: false
service-url:
#设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址
defaultZone: http://eureka7002.com:7002/eureka/
效果图:
(2)修改eureka-server7002的yml配置
server:
port: 7002
eureka:
instance:
#eureka服务端的实例名称
hostname: eureka7002.com
client:
#false表示不向服务中心注册自己
register-with-eureka: false
#false表示自己端就是注册中心,只需要维护服务实例,并不需要检索服务
fetch-registry: false
service-url:
#设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址
defaultZone: http://eureka7001.com:7001/eureka/
效果图:
6、为eureka-server7002子模块新建一个主启动类,类名输入com.ken.springcloud.EurekaMain,然后创建即可
效果图:
7、编写为eureka-server7002子模块的主启动类
package om.ken.springcloud;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@SpringBootApplication
//标注为Eureka Server(服务注册中心)
@EnableEurekaServer
public class EurekaMain {
public static void main(String[] args) {
SpringApplication.run(EurekaMain.class, args);
}
}
效果图:
8、分别启动eureka-server7001子模块和eureka-server7002子模块,然后分别进入http://localhost:7001/和http://localhost:7002/或者分别进入http://eureka7001.com:7001/和http://eureka7002.com:7002/查看是否成功相互注册,进入页面后如果发现互相注册对方,则证明eureka集群搭建成功
eureka7001的效果图:
从图里可以看到eureka7001里注册了eureka7002
或者
eureka7002的效果图:
从图里可以看到eureka7002里注册了eureka7001
或者