Eureka增加账号密码认证登录

一、业务背景

注册中心Eureka在微服务开发中经常使用到,用来管理发布的微服务,供前端或者外部调用。但是如果放到生产环境,我们直接通过URL访问的话,这显然是不安全的。

所以需要给注册中心加上登录认证。

通过账号和密码认证进行登录

二、实施步骤

1、在pom文件中引入依赖

XML 复制代码
        <!--加入安全认证  eureka登录认证-->
		<dependency>
		     <groupId>org.springframework.boot</groupId>
		     <artifactId>spring-boot-starter-security</artifactId>
		 </dependency>

2、在yml文件中配置账号密码:

bash 复制代码
#服务名称
spring:
  application:
    name: eureka
  security:
    enabled: true
    user:
      name: admin
      password: 123456

3、如何注册的Eureka,yml中配置

bash 复制代码
eureka:
  client:
    register-with-eureka: true # 表示是否向Eureka注册中心注册自己
    fetch-registry: false # false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
    service-url:
      defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@10.8.215.8:8761/eureka/ #注册的注册中心集群配置

4、关键的一步。重写WebSecurityConfigurerAdapter,要不然会注册不成功。如果没有这个类会报:com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server

java 复制代码
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        //关键就在于这行代码
        http.csrf().disable();
        super.configure(http);
    }
}

三、Eureka介绍

Eureka是Netflix开发的服务发现框架,是一个基于REST(一种软件架构风格,一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性)的服务。主要以AWS云服务为支撑,提供服务发现并实现负载均衡和故障转移。SpringCloud将它集成在其子项目spring-cloud-netflix中,以实现SpringCloud的服务发现功能。

1、Eureka本身有哪些组件

Eureka Server 和Eureka Client

服务端提供服务注册,当客户端服务启动的时候,会主动向服务端进行注册,服务端会存储所有已经注册服务节点信息。服务端会管理这些节点信息,并且会将异常的节点移除服务列表。

客户端会每隔30秒发送心跳给服务端,告诉服务端自己时可用的。如果一个服务长时间没有发送心跳,大约90秒内会被移除服务器列表。另外客户端有缓存功能,所以即便Eureka集群中所有节点都失效,或者发生网络分割故障导致客户端不能访问任何一台Eureka服务器;Eureka服务的消费者仍然可以通过Eureka客户端缓存来获取现有的服务注册信息。

无论是服务端还时客户端,都支持集群模式,注册信息和更新信息会在整个eureka集群的节点进行复制。

2、Eureka的优势

比较流行的服务治理框架还有zookeeper,那与之相比较,为什么偏向于选择eureka。如果用分布式架构的CAP定理(C-数据一致性;A-服务可用性;P-服务对网络分区故障的容错性,这三个特性在任何分布式系统中不能同时满足,最多同时满足两个))来说的话,eureka是偏向于AP,而zookeeper是偏向于CP。一般开发中,大多追求是高可用,那么eureka就更有优势。另外eureka集群中,如果某个服务器不可用,它不会有类似于ZooKeeper的选举leader的过程;客户端请求会自动切换到新的Eureka节点;当宕机的服务器重新恢复后,Eureka会再次将其纳入到服务器集群管理之中,重新同步新的服务注册即可;

3、注册中心

管理各种服务功能包括服务的注册、发现、熔断、负载、降级等,比如dubbo admin后台的各种功能。有了服务中心后,任何一个服务都不能直接去相互调用,必须通过注册中心来调用:

这样一来,服务之间的相互调用就不用去维护对方的地址信息,而是由注册中心来统一管理,不容易出错,易于维护,方便集群,监控每个服务。

相关推荐
2501_924064111 小时前
2025年优测平台:微服务全链路性能瓶颈分析与最佳实践
微服务·云原生·架构·性能瓶颈·全链路性能
隐语SecretFlow2 小时前
【隐语Secretflow】一文速通基于可信执行环境 (TEE) 的零信任计算系统
云原生·kubernetes·开源
MarkHD3 小时前
车辆TBOX科普 第70次 AUTOSAR Adaptive、容器化与云原生的融合革命
云原生·wpf
颜淡慕潇3 小时前
容器生态双核心:Podman与Docker深度对比及实战指南
docker·eureka·podman
测试人社区-小明3 小时前
测试领域的“云原生”进化:Serverless Testing
人工智能·科技·云原生·面试·金融·serverless·github
阿基米东3 小时前
Traefik:为云原生而生的自动化反向代理
运维·云原生·自动化
纷飞梦雪3 小时前
排查k8s连接mysql的pod
云原生·容器·kubernetes
qq_348231853 小时前
Kubernetes 高级路由完整配置指南-- 云原生负载均衡架构
云原生·kubernetes·负载均衡
weixin_46683 小时前
Kubernetes Service
云原生·容器·kubernetes
会飞的小蛮猪5 小时前
K8s-1.29.2二进制安装-第二章(K8s及ETCD下载及安装)
云原生·容器·kubernetes·etcd