Springcloud整合Eureka报错的问题

注:接着学习《SpringCloud与docker微服务架构》遇到的问题

Erueka为服务发现组件;具体的架构以及如何在springcloud使用,在这里不做详细介绍;

       eureka server相当于注册表,服务的提供者;

       eureka client相当于服务调用者,消费者;

eureka server如果不设置认证,是可以允许匿名访问的,当为其添加一个需要登录认证才能访问的时候,需要以下操作:

1. 引入pom.xml

  
            org.springframework.boot
            spring-boot-starter-security
 

2. eureka server中application.yml中添加

security:
  basic:
    enabled: true
  user: 
    name: user
    password: 123456  #均为自定义:
eureka:
  client:
    registerWithEureka: false
    fetchRegistry: false

   重点是添加security;

   对于client下的两个属性;

  • registerWithEureka:表示是否将自己注册到serviceUrl下dafaultZone;所以对于单机的eureka server应用来说不用配置这一项,即显示置为false(因为默认为true);对于eureka server根据自己情况而定;
  • fetchRegistry:表示是否从eureka server获取注册信息,默认为true,对于单点eureka server,不需要获取,所以置为true;

3. eureka client 的application.yml中:

eureka:
  client:
    serviceUrl:
      defaultZone:http//user:123456@localhost:8761/eureka/

正常启动ok!但是可能会有如下问题:

对于这个报错:com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server 折磨了我本人一个下午,现在结合网上找的解决措施以及我自己的新发现做以下总结;

  1. 个人觉得,首先应该排除所引入的依赖的版本号冲突问题;如果server能正常启动,即排除;
  2. yml文件问题;
    1. 有严格的格式约束问题,不支持table键,必须按照严格的空格缩进;
    2. 可以将自己的yml文件在yml在线校验工具检查;
    3. 在yml中建议将  fetch-register: false;  改为  fetchRegister: false;这种格式;
  3. 关于引入spring-boot-starter-security依赖:如果eureka client没有按照如上图配置,也可能出现以上报错;

最后再说一点:我本人还遇到了启动一个eureka server引用,在访问的时候,会弹出一个登录窗口(认证窗口);在输入完成后,不停的会弹这个窗口,这个情况一定是application.yml某个配置写错了(也可能是单词拼写错误);

你可能感兴趣的:(springcloud)