文章目录
Eureka服务注册与发现(二)
接上一篇:Eureka服务注册与发现(一)
为Eureka Server添加用户认证
之前的Eureka Serverhi是可以匿名访问,接下来构造一个需要认证的项目
- 在之前的Eureka Server中添加依赖
// https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-security
compile group: 'org.springframework.boot', name: 'spring-boot-starter-security', version: '2.1.6.RELEASE'
- 在
application.yml
中添加配置
spring:
profiles: peer1
security:
user:
name: root
password: root123
server:
port: 8761
eureka:
instance:
hostname: peer1
client:
serviceUrl:
defaultZone: http://peer2:8762/eureka/
将微服务注册到需要认证的Eureka Server
- 修改用户微服务的配置文件如下:
eureka:
client:
serviceUrl:
defaultZone: http://root:root123@localhost:8761/eureka/
instance:
prefer-ip-address: true
但是这样启动会一直报错。无法将服务注册到Eureka Server,报错如下
com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server
- 通过查阅官方文档,找到解决办法,需要在Eureka Server增加以下配置类:
@EnableWebSecurity
class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().ignoringAntMatchers("/eureka/**");
super.configure(http);
}
}
Eureka的自我保护模式
上一篇提到了Eureka的自我保护模式(红色的提示)。默认情况下,如果Eureka Server在一段时间内如果没有接收到某个微服务实例的心跳,Eureka Sserver会注销该实例(默认30S),但是当网络故障时,微服务与Eureka Server之间无法通信,但是服务确实正常的,如果立即注销服务那很不合理而且很危险。
Eureka Server通过“自我保护模式”解决这个问题——当Eureka Server节点在短时间内丢失过多客户端时,那么这个节点进入自我保护模式。一旦进入该模式,Eureka Server会保护服务注册表中的信息,不在删除服务。当网络故障回复后,该Eureka Server节点会自动退出自我保护模式。
在Spring Cloud中可通过添加如下配置,禁用自我保护模式:
eureka:
server:
enable-self-preservation: false
Eureka的健康检查
-
只有标记为UP的服务才是正常的,才能被其他服务请求。在Spring Boot中通过添加Spring Boot Actuator的/health节点能够看到服务的状态,在Eureka Client中通过简单的配置即可将服务的状态传播到Eureka Server,配置如下:
eureka:
client:
healthcheck:
enabled: true
Github地址
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之家整理,本文链接:https://www.bmabk.com/index.php/post/13158.html