美文网首页
Spring Cloud— 五、注册中心Eureka

Spring Cloud— 五、注册中心Eureka

作者: zuoqy | 来源:发表于2018-11-16 09:19 被阅读0次

    5.1、为Eureka添加用户认证

    在前面的实例中,我们可以看到我们需要登陆即可访问到Eureka服务,这样其实是不安全的。

    接下来,我们为Eureka添加用户认证。

    第一步,为springcloud-demo-eureka添加安全认证依赖:

    <!--安全认证-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
    

    第二步,增加application.properties配置文件:


    application.properties.png

    第三步,重新启动Eureka服务进行测试:


    测试结果.png

    输入正确的用户名密码即可登陆。
    这是,服务提供者注册到Eureka时会报错,所以需要在服务注册时也需要设置用户名和密码。

    5.2服务注册时设置账户信息

    服务注册到有认证需求的注册中心时,需要设置如下信息:
    http://User:Password@127.0.0.1:8888/eureka/

    application.properties.png
    重新启动测试,可以看到已经注册到了Eureka服务注册中心。

    5.3、Eureka的自我保护模式

    如图,当前Eureka进入了自我保护模式。


    自我保护模式.png

    默认情况下,如果Eureka Server在一定时间内没有接受到某个微服务实例的心跳,Eureka Server将会注销该实例(默认90秒)。但是当网络分区故障发生时,微服务与Eureka Server之间无法正常通信,以上行为可能变得非常危险了——因为微服务本身其实是健康得,此时本不应该注销这个微服务。
    Eureka通过“自我保护模式”来解决这个问题——当Eureka Server节点在短时间内丢失过多客户端时(可能发生了网络分区故障),那么这个节点就会进入自我保护模式。一旦进入该模式,Eureka Server就会保护服务注册表的信息,不再删除服务注册表中的数据(也就是不会注销任务微服务)。当网络故障恢复后,该Eureka Server节点会自动退出自我保护模式。

    综上,自我保护模式是一种应对网络异常的安全保护措施。它的架构哲学是宁可同时保留所有的微服务(健康的微服务和不健康的微服务都会保留),也不盲目注销任何健康的微服务。使用自我保护模式,可以让Eureka集群更加的健壮、稳定。

    所以,一般进入自我保护模式,无需处理。如果,需要禁用自我保护模式,只需要在application配置文件中添加配置即可 application.properties.png

    重新启动服务查看效果:


    效果.png
    提示,如果禁用自我保护模式,在网络通信故障下会出现问题。

    5.4、Eureka的高可用

    前面得测试,我们会发现,Eureka服务是一个单点服务,在生产环境就会出现单点故障,为了确保Eureka服务得高可用,我需要搭建Eureka服务的集群。

    搭建Eureka集群非常简单,只要启动多个Eureka服务并且让这些服务之间彼此进行注册即可实现。

    第一步,修改springcloud-demo-eureka的application.properties文件: application.properties.png
    第二步:修改配置文件,再启用一个Eureka服务,进行启动测试: application.properties.png
    测试结果: 测试结果.png 测试结果2.png

    可以看到,2个Eureka服务进行了彼此注册。

    说明:启动两个spring boot项目第一个可以用ieda启动,第二个可以用命令mvn spring-boot:run,当然还有其他的很多方式。

    5.5、将服务注册到Eureka集群

    服务注册到Eureka集群时,可以指定多个,也可以指定一个Eureka服务(因为Eureka服务集群间彼此互联)。

    修改springcloud-demo-item的application配置文件:

     #Eureka服务端与Eureka客户端交互地址
    eureka.client.serviceUrl.defaultZone=http://zuo:123456@127.0.0.1:8888/eureka/,http://zuo:123456@127.0.0.1:9999/eureka/
    
    重启,测试: 结果1.png 结果2.png

    可以通过停止Eureka服务进行测试,结果会发现集群是高可用。

    5.6、指定实例的IP地址与实例ID

    在服务的提供者配置文件中可以指定ip地址,如下:

    #指定此实例ip
    eureka.instance.ip-address=127.0.0.1
    #指定此实例ID
    eureka.instance.instance-id=${spring.application.name}:${server.port}
    

    Spring Cloud—一、微服务架构
    Spring Cloud—二、Spring Cloud简介
    Spring Cloud—三、使用Spring Cloud实现微服务
    Spring Cloud—四、Spring Cloud快速入门
    Spring Cloud—五、注册中心Eureka
    Spring Cloud—六、使用Ribbon实现负载均衡
    Spring Cloud—七、容错保护:Hystrix
    Spring Cloud—八、使用Feign实现声明式的Rest调用
    Spring Cloud—九、服务网关Spring Cloud Zuul
    Spring Cloud—十、使用Spring Cloud Config统一管理微服务
    Spring Cloud—十一、使用Spring Cloud Bus(消息总线)实现自动更新

    demo源码

    相关文章

      网友评论

          本文标题:Spring Cloud— 五、注册中心Eureka

          本文链接:https://www.haomeiwen.com/subject/kqepfqtx.html