Eureka启动报这种异常分为服务器端和客户端,意思是"不能执行请求在任何已知的服务上"。
1.服务器端的异常
1.设置eureka.client.register-with-eureka: false,如果不设置这个就默认为true,就会往注册中心注册自己。
2.设置fetch-registry: false,如果不设置这个就默认为true,单节点的EurekaServer,不需要同步其他的EurekaServer节点的数据,所以设置为false,如果是做集群的话就设置true,同步节点信息。
3.如果配置了以上属性还是报错,检查一下这些配置的格式是否多了空格或者少了空格。
2.客户端的异常
1.检查eureka.client.service-url.defaultZone是否与服务器端的是否一致。
2.如下图,如果服务端配置了安全机制,那么就要取消csrf(跨站攻击方式)。
在服务器端加入以下代码来取消csrf。
@EnableWebSecurity
//自动配置类SecurityConfigurer,类启动会自动去application.xml去找用用户名和密码
class WebSecurityConfig extends WebSecurityConfigurerAdapter {
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable(); //关闭csrf(跨站请求伪造)
super.configure(http);
}
}
并且还要在客户端的eureka.client.service-url.defaultZone的url上拼接账号密码
3.yml文件格式问题
温馨提示:在yml文件中,一定要检查换行时空格的问题,如果按住ctrl+鼠标左键点击是下图,
那么证明你的格式是有问题的,正常是点进去会跳转到另外一个类的中。