本次将会创建三个注册中心和一个客户端进行集群,架构图如下:
修改本机hosts文件,创建三个域名:
代码结构如图:
由于三个注册中心结构都是一样的,区别在于配置文件:
#注册中心(eureka-server01.com)的yml配置 server: port: 8671 eureka: instance: hostname: eureka-server01.com #这里需要设置为跟http://eureka-server01.com:8671/域名一样 instance-id: eureka-server prefer-ip-address: false #需要设置为false client: registerWithEureka: true #需要设置为true fetchRegistry: false serviceUrl: defaultZone: http://eureka-server02.com:8672/eureka/,http://eureka-server03.com:8673/eureka/ #另外两个注册中心的注册地址 spring: application: name: server # 三个注册中心集群的名字需要一致 #注册中心(eureka-server02.com)的yml配置 server: port: 8672 eureka: instance: hostname: eureka-server02.com #这里需要设置为跟http://eureka-server02.com:8672/域名一样 instance-id: eureka-server2 prefer-ip-address: false #需要设置为false client: registerWithEureka: true #这里需要设置为true fetchRegistry: false serviceUrl: defaultZone: http://eureka-server01.com:8671/eureka/,http://eureka-server03.com:8673/eureka/ #另外两个注册中心的注册地址 spring: application: name: server # 三个注册中心集群的名字需要一致 #注册中心(eureka-server03.com)的yml配置 server: port: 8673 eureka: instance: hostname: eureka-server03.com #这里需要设置为跟http://eureka-server03.com:8673/域名一样 instance-id: eureka-server3 prefer-ip-address: false #需要设置为false client: registerWithEureka: true #需要设置为true fetchRegistry: false serviceUrl: defaultZone: http://eureka-server01.com:8671/eureka/,http://eureka-server02.com:8672/eureka/ #另外两个注册中心的注册地址 spring: application: name: server # 三个注册中心集群的名字需要一致
注册中心主启动类添加注解:
@EnableEurekaServer,如:
注册中心的依赖:
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
到此注册中心集群搭建完毕,下面搭建客户端product-client
yml配置:
server: port: 8674 eureka: client: serviceUrl: defaultZone: http://eureka-server01.com:8671/eureka/,http://eureka-server02.com:8672/eureka/,http://eureka-server03.com:8673/eureka/ #三个注册中心的地址都要加上 instance: instance-id: product-client prefer-ip-address: true spring: application: name: product-client
启动类:
依赖:
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<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>
</dependency>
</dependencies>
注册中心和客户端都继承于父工程,父工程的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"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.5.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.yang.xiao</groupId> <artifactId>cloud</artifactId> <packaging>pom</packaging> <version>1.0-SNAPSHOT</version> <modules> <module>eurekaserver</module> <module>eurekaserver2</module> <module>eurekaserver3</module> <module>eurekaserver3</module> <module>prouctClient</module> </modules> <name>cloud</name> <properties> <java.version>1.8</java.version> <spring-cloud.version>Hoxton.SR3</spring-cloud.version> </properties> <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> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>