pom.xml文件
4.0.0 org.springframework.boot spring-boot-starter-parent 2.2.2.RELEASE com.lanh eureka 0.0.1-SNAPSHOT eureka Demo project for Spring Boot 1.8 org.springframework.cloud spring-cloud-dependencies Hoxton.SR1 pom import org.springframework.cloud spring-cloud-starter-netflix-eureka-server org.springframework.boot spring-boot-starter org.springframework.boot spring-boot-starter-test test org.springframework.boot spring-boot-maven-plugin
启动类
package com.lanh.eureka;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@SpringBootApplication
@EnableEurekaServer
public class EurekaApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaApplication.class, args);
}
}
方法一
- 配置系统的hosts,Windows系统的hosts文件路径是C:WindowsSystem32driversetchosts;Linux及MacOS等系统的文件路径是/etc/hosts。
127.0.0.1 peer1 peer2将application.yml修改如下,让两个节点的Eureka Server相互注册。
server:
# 设置 Eureka Server WEB 控制台端口、服务注册发现端口。Eureka Server 服务注册 发现端口默认为 8761。
port: 8761
spring:
application:
# 设置 spring 应用命名,默认为 null。同命名的应用会注册到同一个服务集群中。
name: eureka1
# 指定profile=peer1
profiles: peer1
eureka:
client:
service-url:
# 将自己注册到peer2这个Eureka上面去
defaultZone: http://peer2:8762/eureka/
instance:
hostname: peer1
---
server:
# 设置 Eureka Server WEB 控制台端口、服务注册发现端口。Eureka Server 服务注册 发现端口默认为 8761。
port: 8762
spring:
application:
# 设置 spring 应用命名,默认为 null。同命名的应用会注册到同一个服务集群中。
name: eureka2
# 指定profile=peer2
profiles: peer2
eureka:
client:
service-url:
# 将自己注册到peer2这个Eureka上面去
defaultZone: http://peer1:8761/eureka/
instance:
hostname: peer2
如上,使用连字符(—)将该application.yml文件分为三段。第二段和第三段分别为spring.properties指定了一个值,该值表示它所在的那段内容应用在哪个Profile里。第一段由于并未指定spring.profiles,因此这段内容会对所有Profile生效。
经过以上分析,不难理解,我们定义了peer1和peer2这两个Profile。当应用以peer1这个Profile启动时,配置该EurekaServer的主机名为peer1,并将其注册到http://peer2:8762/eureka/ ;反之,当应用以profile=peer2时,EurekaServer会注册到peer1节点的Eureka Server。
打包项目,并使用以下命令启动两个Eureka Server节点
jar名称根据自己的项目名进行修改
通过spring.profiles.active指定使用哪个profile启动。
启动后:
访问http://peer1:8761 ,会发现“registered-replicas”中已有peer2节点;同理,访问http://peer2:8762 ,也能发现其中的“registered-replicas”有peer1节点
方法二
不知道你们觉得打包成jar包麻不麻烦,我觉得挺麻烦的,虽然在正常开发的时候确实是这样,但是我们现在是在学习,有一个这么好的Idea摆在我们面前,为什么要用命令窗口去启动测试它呢?所以我的做法是,在idea中并行执行程序:
接下来,填入下面给出的application.yml第一个代码块,启动程序,然后再把application.yml全部替换成第二个代码块,启动,即可出现上面的结果。
注意:两次启动间隔要尽量小,不然就会导致连接不成功,建议:提前复制好第二个代码块,启动完第一次,马上修改yml文件,迅速启动第二次
- 配置系统的hosts,Windows系统的hosts文件路径是C:WindowsSystem32driversetchosts;Linux及MacOS等系统的文件路径是/etc/hosts。
127.0.0.1 peer1 peer2下面有两个application.yml
application.yml
server:
# 设置 Eureka Server WEB 控制台端口、服务注册发现端口。Eureka Server 服务注册 发现端口默认为 8761。
port: 8761
spring:
application:
# 设置 spring 应用命名,默认为 null。同命名的应用会注册到同一个服务集群中。
name: cloud-eureka
eureka:
client:
# 是否将自己注册到 Eureka-Server 中,默认的为 true
register-with-eureka: false
# 是否从 Eureka-Server 中获取服务注册信息,默认为 true
fetch-registry: false
service-url:
defaultZone: http://localhost:8761/eureka/
server:
# 设置 Eureka Server WEB 控制台端口、服务注册发现端口。Eureka Server 服务注册 发现端口默认为 8761。
port: 8762
spring:
application:
# 设置 spring 应用命名,默认为 null。同命名的应用会注册到同一个服务集群中。
name: eureka2
eureka:
client:
service-url:
# 将自己注册到peer2这个Eureka上面去
defaultZone: http://peer1:8761/eureka/
instance:
hostname: peer2



