一、简介
之所以进行 eureka 集群的搭建,在于我们平时的生产环境中,很难保证单节点的 eureka 服务能提供百分百不间断的服务,如果 eureka 无响应了,整个项目应用都会出现问题。
因此要保证 eureka 随时都能提供服务的情况下,最好的方式就是采用 eureka 的集群模式,也就是搭建 eureka 的高可用。
在 eureka 的集群模式下,多个 eureka server 之间可以同步注册服务。因此,在一个 eureka 宕掉的情况下,仍然可以提供服务注册和服务发现的能力,从而达到注册中心的高可用。
二、创建 Eureka 集群
配置本地 hosts
文件【C:\Windows\System32\drivers\etc】
为本地 IP 127.0.0.1
映射到多个域名
127.0.0.1 eureka7001.com
127.0.0.1 eureka7002.com
127.0.0.1 eureka7003.com
创建另外两个子 module
- 【springcloud-eureka-7002】
- 【springcloud-eureka-7003】
导入依赖 pom.xml
父依赖 【springcloud】
<modules>
<module>springcloud-eureka-7001</module>
<module>springcloud-eureka-7002</module>
<module>springcloud-eureka-7003</module>
<module>springcloud-provider-8001</module>
</modules>
【springcloud-eureka-7002】、【springcloud-eureka-7003】
复制【springcloud-eureka-7001】中的依赖
<?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>com.cyo</groupId>
<artifactId>springcloud</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<groupId>com.cyo</groupId>
<artifactId>springcloud-eureka-7002</artifactId>
<version>0.0.1-SNAPSHOT</version>
<!--打包方式 jar -->
<packaging>jar</packaging>
<name>springcloud-eureka-7002</name>
<description>Demo project for Spring Boot</description>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies>
</project>
编写配置类 application.yml
1、修改【springcloud-eureka-7001】配置文件
server:
port: 7001
# Eureka 配置
eureka:
instance:
# Eureka 实例名字
hostname: eureka7001.com
client:
# 表示是否向 Eureka 注册中心注册自己(这个模块本身是服务器,所以不需要)
register-with-eureka: false
# fetch-registry如果为false,则表示自己为注册中心,客户端的为 ture
fetch-registry: false
# Eureka 监控页面
service-url:
# defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
# 集群(关联):7001关联7002、7003
defaultZone: http://eureka7001.com:7002/eureka/,http://eureka7003.com:7002/eureka/
spring:
application:
name: springcloud-eureka-7001
2、配置【springcloud-eureka-7002】配置文件
server:
port: 7002
# Eureka 配置
eureka:
instance:
# Eureka 实例名字
hostname: eureka7002.com
client:
# 表示是否向 Eureka 注册中心注册自己(这个模块本身是服务器,所以不需要)
register-with-eureka: false
# fetch-registry如果为false,则表示自己为注册中心,客户端的为 ture
fetch-registry: false
# Eureka 监控页面
service-url:
defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7003.com:7003/eureka/
spring:
application:
name: springcloud-eureka-7002
3、配置【springcloud-eureka-7003】配置文件
server:
port: 7003
# Eureka 配置
eureka:
instance:
# Eureka 实例名字
hostname: eureka7003.com
client:
# 表示是否向 Eureka 注册中心注册自己(这个模块本身是服务器,所以不需要)
register-with-eureka: false
# fetch-registry如果为false,则表示自己为注册中心,客户端的为 ture
fetch-registry: false
# Eureka 监控页面
service-url:
# defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
# 集群(关联):7003关联7001、7002
defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/
spring:
application:
name: springcloud-eureka-7003
4、修改 【springcloud-provider-8001】配置文件
server:
port: 8001
spring:
application:
name: springcloud-provider
eureka:
client:
service-url:
defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
# 实例id
instance:
instance-id: springcloud-provider-8001
启动类启动配置
在新创建的两个 eureka 模块中的启动类添加启动配置注解 @EnableEurekaServer
@SpringBootApplication
@EnableEurekaServer // @EnableEurekaServer 服务端的启动类,可以接受别人注册进来~
public class SpringcloudEureka7002Application {
public static void main(String[] args) {
SpringApplication.run(SpringcloudEureka7002Application.class, args);
}
}
三、结果演示
启动服务,如果电脑内存不足,可以只启动两个 eureka 服务。
- 【springcloud-eureka-7001】
- 【springcloud-eureka-7002】
- 【springcloud-eureka-7003】
- 【springcloud-provider-8001】
浏览器访问
http://eureka7001.com:7001/
http://eureka7002.com:7002/
http://eureka7003com:7003/
参考资料
https://blog.csdn.net/u014135369/article/details/102470107