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/
重新启动测试,可以看到已经注册到了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(消息总线)实现自动更新
网友评论