环境 :windows
springCloud版本:Greenwich.SR2
springBoot版本: 2.1.7.RELEASE
jdk版本:1.8
Eureka服务端
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
启动类:开启@EnableEurekaServer
package com.gisquest.cloud;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@EnableEurekaServer
@SpringBootApplication
public class EurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServerApplication.class,args);
}
}
host文件配置
192.168.100.88 eureka7000.com
192.168.100.88 eureka7001.com
192.168.100.88 eureka7002.com
配置文件结构
如下(这里是本地模拟集群,只关注application-peer1.properties,application-peer2.properties、application-peer3.properties三个文件,application.properties是用做单机配置的)
eureka服务端配置文件内容
application-peer1.properties
#eurekaServer集群时使用
spring.application.name=eurekaServer
##spring.application.version这个启动保错才加的,如果启动没有报这个错就不加
spring.application.version=2.1.7
server.port=7000
#域名,如果本地使用请在host文件中配置
eureka.instance.hostname=eureka7000.com
eureka.instance.appname=eurekaCluster
#集群中其他Eureka Server的地址,用于交互,查询服务和服务注册都需要依赖这个地址
eureka.client.serviceUrl.defaultZone=http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/
##是否向自己注册
eureka.client.register-with-eureka=true
##是否获取注册信息
eureka.client.fetch-registry=true
#关闭自我保护模式
eureka.server.enable-self-preservation=false
eureka.server.eviction-interval-timer-in-ms=4000
eureka.instance.preferIpAddress=false
eureka.instance.instanceId=${spring.cloud.client.ipAddress}:${spring.application.name}:${server.port}
application-peer2.properties
#eureka-server集群时使用
spring.application.name=eurekaServer
spring.application.version =2.1.7
server.port=7001
#域名,如果本地使用请在host文件中配置
eureka.instance.hostname=eureka7001.com
eureka.instance.appname=eurekaCluster
#集群中其他Eureka Server的地址,用于交互,查询服务和服务注册都需要依赖这个地址
eureka.client.serviceUrl.defaultZone=http://eureka7000.com:7000/eureka/,http://eureka7002.com:7002/eureka/
eureka.client.register-with-eureka=true
eureka.client.fetch-registry=true
#关闭自我保护模式
eureka.server.enable-self-preservation=false
eureka.server.eviction-interval-timer-in-ms=4000
eureka.instance.preferIpAddress=false
eureka.instance.instanceId=${spring.cloud.client.ipAddress}:${spring.application.name}:${server.port}
application-peer3.properties
#eureka-server集群时使用
spring.application.name=eurekaServer
spring.application.version =2.1.7
server.port=7002
#域名,如果本地使用请在host文件中配置
eureka.instance.hostname=eureka7002.com
eureka.instance.appname=eurekaCluster
#集群中其他Eureka Server的地址,用于交互,查询服务和服务注册都需要依赖这个地址
eureka.client.serviceUrl.defaultZone=http://eureka7001.com:7001/eureka/,http://eureka7000.com:7000/eureka/
eureka.client.register-with-eureka=true
eureka.client.fetch-registry=true
#关闭自我保护模式
eureka.server.enable-self-preservation=false
eureka.server.eviction-interval-timer-in-ms=4000
eureka.instance.preferIpAddress=false
eureka.instance.instanceId=${spring.cloud.client.ipAddress}:${spring.application.name}:${server.port}
配置中心(所有服务的通用配置,启动哪个应用服务,哪个服务就将自己的服务注册到注册中心)
eureka.client.serviceUrl.defaultZone=http://eureka7000.com:7000/eureka/,http://eureka7001.com:7001/eureka/,http://eureka7001.com:7002/eureka/
集群搭建成功验证测试
访问http://192.168.100.88:7000/端口
访问http://192.168.100.88:7001/端口
集群搭建成功注意:
首先是 DS副本项,当访问其中一个eureka服务端口,副本显示另外的eureka服务的主机名
然后是available-replicas中显示,则说明另外两个副本可用
registered-replicas http://eureka7001.com:7001/eureka/, http://eureka7002.com:7002/eureka
available-replicas http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,
如果显示如下则说明另外两个是不可用的副本
registered-replicas http://eureka7001.com:7001/eureka/, http://eureka7002.com:7002/eureka/
unavailable-replicas http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/
遇到的问题
问题一:
eureka.instance.preferIpAddress=true导致出现unavailable-replicas xxxx 副本不可用?
registered-replicas http://eureka7001.com:7001/eureka/, http://eureka7002.com:7002/eureka/
unavailable-replicas http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/
eureka.instance.prefer-ip-address = true
就可以将IP注册到Eureka Server上,而如果不配置就是机器的主机名。
解决方法:
eureka.instance.prefer-ip-address = false
问题二:通用信息中出现
unavailable-replicas http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,
解决方法:
eureka.client.serviceUrl.defaultZone=http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/
eureka.client.register-with-eureka=true
eureka.client.fetch-registry=true
问题三:
集群中eureka.instance.appname设置不同出现多个实例
解决方法:eureka.instance.appname名称设置一样