该系列项目整体介绍及源代码请参照前面写的一篇文章【springcloud学习(dalston.sr1)】项目整体介绍(含源代码)(一)
这篇文章主要介绍多个eureka服务端的集群环境是如何搭建的。
(一)eureka的简要说明
Eureka是用来进行服务注册与发现的。类似于一栋写字楼,有很多公司入驻,但入驻前需要先在大楼的物业处进行注册登记。Eureka也分为服务端和客户端,服务端是提供服务注册和服务发现,通过访问服务端,能获取到一个服务注册列表。客户端则需要访问服务端,以将自己注册到服务端。类似于写字楼的物业公司,通常自己不用注册,但其他入驻的公司,需要在物业处进行注册,其他公司在物业处,能获取到注册登记的公司列表。
(二)eureka服务端集群搭建
(1)新建3个module
这里通过了3个模块,来模拟eureka服务端集群的搭建。首先在IDEA的springcloud2025项目中新建了3个module,如下图。
(2)在新建号的module中,比如microservicecloud-eureka-7001模块中,在POM引入相关依赖
<?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>springcloud2025</artifactId>
<groupId>com.company</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>microservicecloud-eureka-7001</artifactId>
<!-- Eureka-server服务端 -->
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
</dependencies>
</project>
(3)主机域名地址映射修改,通过修改路径C:\Windows\System32\drivers\etc\hosts文件,增加3个域名映射。这样访问http://eureka7001.com的效果等同于访问http://localhost(当然访问http://eureka7002.com的效果也同样等同于访问http://localhost),这里只是在一台机器上模拟不同域名的主机,所以就这样处理了下。实际项目场景中应该是不同的主机。
(4)编写microservicecloud-eureka-7001项目的application.yml文件,如下图,其中配置了当前项目的端口号为7001,并设置了eureka服务端主机名称为eureka7001.com(这里另外2个eureka服务的主机名分别是eureka7002.com、eureka7003.com,这里涉及到主机域名地址映射修改,后面会提到)。需要注意的是服务端自己不注册自己,也不需要检索服务,所以配置项eureka.client.register-with-eureka和eureka.client.fetch-register的值都为false,由于是集群搭建,也需要提供另外两个eureka服务端的地址,也即配置eureka.client.service-url.defaultZone=http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/。由于当前服务部署的主机对应域名为eureka7001.com,这里的defaultZone就需要配置成另外两个http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/,这样是为了起到集群的作用(如果不做eureka集群,则这里的地址直接填写为本机地址即可,也即http://localhost:7001/eureka)。
server:
port: 7001
eureka:
instance:
hostname: eureka7001.com #eureka服务端的实例名称
client:
register-with-eureka: false #false表示不向注册中心注册自己
fetch-register: false #false表示自己端就是注册中心,我的职责就是维护服务实力,并不需要去检索服务
service-url:
defaultZone: http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/ # http://${eureka.instance.hostname}:${server.port}/eureka/ #设置与erueka server交互的地址查询服务和注册服务,都需要依赖于这个地址
(5)在启动类上加@EnableEurekaServer注解,已启用eureka服务,并表明当前服务是eureka的服务端。
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@SpringBootApplication
@EnableEurekaServer
public class EurekaServer7001Application {
public static void main(String[] args) {
SpringApplication.run(EurekaServer7001Application.class, args);
}
}
项目结构如下:
(6)经过以上步骤,项目microservicecloud-eureka-7001就配置好了。参照这个项目,同样新建另外两个microservicecloud-eureka-7002和microservicecloud-eureka-7003。需要注意的是配置文件信息稍有差别。比如microservicecloud-eureka-7002的配置文件为
server:
port: 7002
eureka:
instance:
hostname: eureka7002.com #eureka服务端的实例名称,如果没有做eureka集群,这里直接填localhost即可
client:
register-with-eureka: false #false表示不向注册中心注册自己
fetch-register: false #false表示自己端就是注册中心,我的职责就是维护服务实力,并不需要去检索服务
service-url:
defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7003.com:7003/eureka/ #设置与erueka server交互的地址查询服务和注册服务,都需要依赖于这个地址
microservicecloud-eureka-7003的yml配置文件为
server:
port: 7003
eureka:
instance:
hostname: eureka7003.com #eureka服务端的实例名称
client:
register-with-eureka: false #false表示不向注册中心注册自己
fetch-register: false #false表示自己端就是注册中心,我的职责就是维护服务实力,并不需要去检索服务
service-url:
defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/ #设置与erueka server交互的地址查询服务和注册服务,都需要依赖于这个地址
(7)然后可以启动项目了,首先启动microservicecloud-eureka-7001。需要注意的是由于构建的是集群项目,所以这个项目启动时,另外2个项目还未启动,所以控制台可能报如下错误,可以暂时忽略。此时再依次启动另外microservicecloud-eureka-7002项目和microservicecloud-eureka-7003项目(启动microservicecloud-eureka-7002、microservicecloud-eureka-7003时,由于前面已经启动了microservicecloud-eureka-7001项目,所以这两个项目启动过程中不会报以下错误)
3个项目启动完成后,我们可以在浏览器中输入http://eureka7001.com:7001访问(这里依赖于前面第3部配置的主机名和地址映射,或者直接输入http://localhost:7001也能访问),看到如下页面,即表示eureka服务启动正常了。类似的在浏览器中输入http://eureka7002.com:7002和http://eureka7003.com:7003也是类似的效果
(8)通过上述步骤,由3个项目搭建的eureka服务端集群就搭建好了。