参考文章:
https://www.cnblogs.com/hfultrastrong/p/8549590.html
http://www.cnblogs.com/lovefendi/p/9817740.html
Step1:新建工程,引入依赖
a. idea创建项目结构(使用SpringBoot 1.5.10)
b.依赖文件pom.xml如下:
4.0.0
com.cloud
euruka-server
0.0.1-SNAPSHOT
jar
eureka-server
EurekaServer
org.springframework.boot
spring-boot-starter-parent
2.0.2.RELEASE
UTF-8
UTF-8
1.8
Finchley.SR2
org.springframework.cloud
spring-cloud-starter-netflix-eureka-server
org.springframework.boot
spring-boot-starter-test
test
org.springframework
springloaded
1.2.8.RELEASE
org.springframework.boot
spring-boot-devtools
org.springframework.cloud
spring-cloud-dependencies
${spring-cloud.version}
pom
import
org.springframework.boot
spring-boot-maven-plugin
true
true
maven-compiler-plugin
1.8
1.8
org.apache.maven.plugins
maven-jar-plugin
true
lib/
com.yame.Application
false
./
spring-snapshots
Spring Snapshots
https://repo.spring.io/snapshot
true
spring-milestones
Spring Milestones
https://repo.spring.io/milestone
false
Step2:在启动程序类头部加入注解
package com.lx.helloworld.eureka.server;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@EnableEurekaServer
@SpringBootApplication
public class EurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServerApplication.class, args);
}
}
Step3:在Step2程中添加多实例的配置文件
application.yml配置详情如下:
其中, registerWithEureka: false和fetchRegistry: false表明自己是一个eureka server.
---
spring:
application:
name: spring-cloud-eureka
profiles: peer1
server:
port: 8000
eureka:
instance:
hostname: peer1
client:
serviceUrl:
defaultZone: http://peer2:8001/eureka/,http://peer3:8002/eureka/
server:
#注意:更改Eureka更新频率将打破服务器的自我保护功能,生产环境下不建议自定义这些配置。
eviction-interval-timer-in-ms: 4000 # 清理间隔(单位毫秒,默认是60*1000)
#关闭注册中心的保护机制, 默认false, 不推荐关闭
#eureka.server.enable-self-preservation: false
---
spring:
application:
name: spring-cloud-eureka
profiles: peer2
server:
port: 8001
eureka:
instance:
hostname: peer2
client:
serviceUrl:
defaultZone: http://peer1:8000/eureka/,http://peer3:8002/eureka/
---
spring:
application:
name: spring-cloud-eureka
profiles: peer3
server:
port: 8002
eureka:
instance:
hostname: peer3
#Eureka client 默认 30秒会向 Server 端发送一次心跳;
#Server端 默认是90秒对没有接收到 client 端的续租请求会认为client挂机
#lease-renewal-interval-in-seconds: 10
client:
serviceUrl:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
fetch-registry: true
register-with-eureka: true
说明:
1、fetch-registry: 表示是否从eureka server获取注册信息, 如果是单一节点,
不需要同步其他eureka server节点, 则可以设置为false, 但此处为集群, 应该设置为true,
默认为true, 可不设置。
2、register-with-eureka: 表示是否将自己注册到eureka server,
构建集群环境时, 需要将自己注册到及群众, 所以应该开启。
默认为true,可不显式设置。
Step4:修改hosts文件:
127.0.0.1 peer1
127.0.0.1 peer2
127.0.0.1 peer3
Step5:启动各个eureka注册中心
有两种启动方法:
a. IDEA 启动
配置启动文件:
方法一:
--spring.profiles.active=peer1
方法二:
按照这个步骤添加三个启动节点,注意: program arguments 参数依次更改为 peer2 、peer3,与配置文件中的 spring.application.files 参数值对应。
之后全部启动。
b. 打包成jar之后,使用 java -jar命令启动
java -jar spring-cloud-eureka-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer1
java -jar spring-cloud-eureka-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer2
java -jar spring-cloud-eureka-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer3
注:启动过程会报如下错误, 但是是正常现象:
Step6:查看集群效果
http://peer1:8000/
Step7:集群理解