springcloud 高可用注册中心ip 配置

网络上大多是写了一点点。配置得并不算成功,各种抄袭得也不少,很少人会注意到这里是否注册成功,失败会进入unavailable-replicas

springcloud 高可用注册中心ip 配置_第1张图片

特别是ip配置方式,不用去修改host,就更难注册进入;本人尝试了两天,经过好多次得测试配置

注册失败原因

instance:

hostname: ${spring.cloud.client.ip-address} #获取本机ip

prefer-ip-address: true

实际上是不会注册成功得,全部注册失败,如果是本机,想多开得话,会因为本机ip 重复而注册失败,所以如果各位想测试请尽量进行多服务器地址测试,本人是vm装了三台centos7进行测试;

 

网络流行解决方案1:prefer-ip-address: false ,对于ip配置来说是不可行得;大多解释为cloud不支持ip模式;实际上是支持得;

网络流行解决方案2:   

register-with-eureka: false

fetch-registry: false

将以上配置为false,禁止注册中心注册自己,并发现其他服务,也没给出具体解释,自欺欺人,注册和发现服务是注册中心的基本功能;

 

网络流行解决方案3:虚拟机ip混淆了cloud的ip发现机制

spring:
cloud:
  inetutils:
    # 可用正则表达式,表示禁用以VMware开头的网络
    ignoredInterfaces: ['VMware.*']
    # 可用ip地址段表示
    preferred-networks: ['192.168']
    use-only-site-local-interfaces: true

忽略vm网络段,让cloud能够正常获取ip,实际上也不是这个原因,因为我通过调试得知cloud是可以获取到真实地址的;

 

 

 

我发现即使获取了设置了hostname,配置了prefer-ip-address: true 注册中心中依旧会使用计算机名+端口作为显示;

而这个名称就是instance-id,于是我尝试将ip+端口配置给instance-id;发现注册中心正常显示ip+端口显示了,但是依旧注册失败;

再尝试上面的几个方法,交叉测试,发现不可以将register-with-eureka: false 和retch-registry: false ,最好为默认配置;因为如果不配置的话根本没有注册信息register信息,也就是上面截图的那块;但是依旧注册失败,但是并不是所有的都注册失败,而是其中一台机器成功,一台失败。。哭啊。。

后来,把port 加到hostname里,竟然成功了。。实在没信息调试代码了。。请大家见谅!

最终解决方案:

配置文件

server:

port: 5761

 

eureka:

server:

enable-self-preservation: true # 设为false,关闭自我保护-测试环境使用

eviction-interval-timer-in-ms: 5000 #续期时间,即扫描失效服务的间隔时间(缺省为60*1000ms)

instance:

hostname: ${spring.cloud.client.ip-address}:${server.port}
prefer-ip-address: true
instance-id: ${spring.cloud.client.ip-address}:${spring.application.name}:${server.port} #页面显示的application 名字其实就是这个

# 配置主机名方式

# hostname: localhost-eureka

# prefer-ip-address: true

# ip-address: 192.168.233.129

client:

register-with-eureka: false #向注册中心注册自己

retch-registry: false #检索其他的服务

serviceUrl:

# defaultZone: http://localhost:5761/eureka/

defaultZone: http://192.168.233.129:5761/eureka/,http://192.168.233.130:5761/eureka/,http://192.168.233.131:5761/eureka/

 

 

 

 

 

 

你可能感兴趣的:(个人)