栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

环境 :windows

 
springCloud版本:Greenwich.SR2

springBoot版本: 2.1.7.RELEASE

jdk版本:1.8

Eureka服务端

		
			org.springframework.cloud
			spring-cloud-starter-netflix-eureka-server
		

启动类:开启@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名称设置一样

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/396901.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号