2021-11-02Eureka集群搭建遇到的坑

环境 :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 = true时,注册到Eureka Server上的是IP,以及是什么IP_m0_37840000的博客-CSDN博客老套路,定位问题从配置开始。(1) 我们通过eureka.instance.prefer-ip-address 配置项,可以找到源码1org.springframework.cloud.netflix.eureka.EurekaInstanceConfigBean.preferIpAddress(2) preferIpAddress被哪里调用,可以找到1org.springframework.cl...https://blog.csdn.net/m0_37840000/article/details/80924695

解决方法:

eureka.instance.prefer-ip-address = false
问题二:通用信息中出现
unavailable-replicashttp://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名称设置一样

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值