在启动类上家@EnableEurekaServer注解表示这是eureka注册中心,用于被系统识别
运行机制
注册 客户端会反复链接服务器进行注册,直到注册成功
拉取 每三十秒拉取一次注册表,来刷新注册表,eureka启动后启动的服务不会时时注册到eureka之中,需要等到拉取的时候更新到注册表中
心跳 客户端会每隔30秒发送一次心跳,如果服务器连续三次收不到一个服务的心跳,就会删除这个服务
自我保护模式 网络不稳定,网络中断,15分钟内注册表中的85%的服务器出现心跳异常,就会进入自我保护模式,这种情况下,所有服务都不删除,直到网络恢复,保护解除
Connect to localhost:8761 timed out这个错误时由于eureka未链接到8761端口造成的,8761是eureka默认链接端口,如果eureka配置中没有对其指定对应路径时,就会默认路径为8761,会不断的尝试链接
这是默认url的相关源码
解决方法就是在eureka的配置文件中加入defaultZone,这个配置会覆盖默认的url
eureka: client: service-url: defaultZone: http://eureka1:2001/eureka
在eureka客户端配置网卡
uereka服务bootstrap.yml添加配置
此配置只有在bootstrap.yml中有效
spring:
cloud:
inetutils:
ignored-interfaces: #忽略的网卡
- VM.*
preferred-networks: #要使用的网卡网段
- 192\.168\.99\..+ .+正则表达式任意值 \是转译
- xxx\.xxx\.xxx\.x
client:
register-with-eureka: false #表示是否向自己注册 否
fetch-registry: false #是否从注册表里拉取信息 否
注册ip地址,而不注册主机名,直接使用ip(注册主机名访问时还要dns转译)
修改application.yml(没有application.yml文件,可以修改配置中心的c对应的onfig文件 )
eureka:
instance:
prefer-ip-address: true
instance-id: ${spring.cloud.client.ipAddress}:${spring.application.name}
:${server.port}:@project.version@
instance-id不加也不影响,这个作用就是让注册表里显示的也是ip
经由上面的代码已经可以注册ip而不注册主机名