1.第一步,建立一个 springboot 工程,这个地方不再赘述,但是有些点需要注意,因为这次是 springcloud 的应用,也就是有多个模块,那么在父模块的 pom 文件里,有一些和单模块应用的不同,记录一下 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>
<groupId>cn.chenforcode.homepage</groupId>
<artifactId>imooc-homepage</artifactId>
<version>1.0-SNAPSHOT</version>
<modules>
<module>homepage-eureka</module>
</modules>
<!-- 如果是父模块的pom文件的话,他的打包方式必须是pom -->
<packaging>pom</packaging>
<name>imooc-homepage-spring-cloud</name>
<description>Project for ImoocHomepage SpringCloud</description>
<!-- springboot项目都需要加的一个依赖 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.4.RELEASE</version>
</parent>
<!-- 标注springcloud版本 -->
<properties>
<spring-cloud.version>Greenwich.RELEASE</spring-cloud.version>
</properties>
<!-- 引入相关的依赖 -->
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<!-- 管理springcloud的版本 -->
<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>
</dependencies>
</dependencyManagement>
<!-- 配置maven远程仓库 -->
<repositories>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>http://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
</project>
2.建立 homepage-eureka 模块,目前整个项目的结构如下图
3.完成改模块的 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>imooc-homepage</artifactId>
<groupId>cn.chenforcode.homepage</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>homepage-eureka</artifactId>
<!-- 指定这个子模块的版本 -->
<version>1.0-SNAPSHOT</version>
<!-- 指定打包的方式 -->
<packaging>jar</packaging>
<!-- 模块名及描述信息 -->
<name>homepage-eureka</name>
<description>Spring Cloud Eureka</description>
<dependencies>
<!-- Eureka Server:提供服务注册和服务发现 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
4.编写启动类
package cn.chenforcode.homepage;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
/**
* @author <a href="http://www.chenforcode.cn">PKUCoder</a>
* @date 2019/11/9 4:34 下午
* @description Eureka模块应用启动,只需要你加入@EnableEurekaServer就可以将这个模块变成一个eureka server
* 同时还需要在pom文件中加入相应的依赖:spring-cloud-starter-netflix-eureka-server
*/
@SpringBootApplication
@EnableEurekaServer
public class EurekaApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaApplication.class, args);
}
}
5.编写配置文件
spring:
application:
name: homepage-eureka
server:
port: 8000
eureka:
instance:
hostname: localhost
client:
# 表示是否从eureka server中获取注册信息 默认为true
fetch-registry: false
# 表示是否将自己注册到eureka server中 默认为true
register-with-eureka: false
service-url:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
6.这个时候启动项目,已经可以看到 eureka server 的后台页面
7.开始搭建多个节点的 eureka server,首先模拟出来多个主机,但是都对应本机的 ip 地址,当然如果有多台服务器的话可以忽略这一步,
8.在终端中输入 sudo vim /etc/hosts
然后在里边输入
127.0.0.1 server1
127.0.0.1 server2
127.0.0.1 server3
然后保存退出
9.编写 bootstrap.yml 文件,在 springboot 启动过程中,bootstrap 的加载顺序是先于 application.yml 的,所以将 erueka 的相关配置都写入 bootstrap。先把 application 给注释掉
spring:
application:
name: homepage-eureka
profiles: server1
server:
port: 8000
eureka:
instance:
hostname: server1
prefer-ip-address: false
client:
service-url:
defaultZone: http://server2:8001/eureka/, http://server3:8002/eureka/
---
spring:
application:
name: homepage-eureka
profiles: server2
server:
port: 8001
eureka:
instance:
hostname: server2
prefer-ip-address: false
client:
service-url:
defaultZone: http://server1:8000/eureka/, http://server3:8002/eureka/
---
spring:
application:
name: homepage-eureka
profiles: server3
server:
port: 8002
eureka:
instance:
hostname: server3
prefer-ip-address: false
client:
service-url:
defaultZone: http://server1:8000/eureka/, http://server2:8001/eureka/
10.将项目打成 jar 包,在工程根目录下,即 imooc-homepage-spring-cloud 目录下输入
mvn clean package -Dmaven.test.skip=true -U,第一次打包的过程显得如此的漫长
12.打包完成后进入 homepage-eureka 模块的 target 目录下
运行
第一个终端输入
java -jar homepage-eureka-1.0-SNAPSHOT.jar --spring.profiles.active=server1
第二个终端输入
java -jar homepage-eureka-1.0-SNAPSHOT.jar --spring.profiles.active=server2
第三个终端
java -jar homepage-eureka-1.0-SNAPSHOT.jar --spring.profiles.active=server3
如果你确认前面的步骤都没有错的话,那么如果在启动的过程中抛出异常的话不用担心,这是因为每一个服务都需要注册到另外的两个服务上,但是另外两服务可能还没有稳定,还没有注册好,如果三个服务都稳定下来,就不会再抛出异常了
13.分别进入三个后台管理页面
即进入 http://127.0.0.1:8000
http://127.0.0.1:8001
http://127.0.0.1:8002
如果看到了
就是没问题的
这里说明了 homepage-eureka 有三个副本,地址分别是下边三个
这里说明了已经注册的副本和可用的副本
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于