SpringCloud学习心得—1.2—Eureka注册中心的密码认证、高可用的设置

SpringCloud学习心得—1.2—Eureka注册中心的密码认证、高可用的设置

这是相关代码 链接

Eureka开启密码配置

  1. 添加依赖

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
  2. 向properties添加密码与用户名

    spring.security.user.name=yinjihuan #用户名
    spring.security.user.password=123456 #密码
  3. 增加Security配置类:

    @Configuration
    @EnableWebSecurity
    public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
        @Override
        protected void configure(HttpSecurity http) throws Exception {
            // 关闭csrf
            http.csrf().disable();
            // 支持httpBasic
            http.authorizeRequests().anyRequest().authenticated().and().httpBasic();
        }
    }
    • csrf:Cross-site request forgery跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。为了防止跨站提交攻击,通常会配置csrf。post请求不带token就拒绝
    • http.authorizeRequests()其中这里的意思是指通过authorizeRequests()方法来开始请求权限配置;接着的.anyRequest().authenticated()是对http所有的请求必须通过授权认证才可以访问;而and()是返回一个securityBuilder对象,formLogin()和httpBasic()是授权的两种方式。详细可以看这个 链接
  4. 其他客户端也需要添加认证的用户名与密码

    eureka.client.serviceUrl.defaultZone=http://china:[email protected]:8761/eureka/

简单的集群搭建

原理:多台机器,每台机器部署一个Eureka并且向自己以外的所有机器注册。

  1. 创建项目eureka-server-cluster

    1. 增加application-master.properties:
    server.port=8761
    
    # 指向你的从节点的Eureka
    
    eureka.client.serviceUrl.defaultZone=http://用户名:密码@localhost:8762/eureka/
    1. 增加application-master.properties:
    server.port=8762
    
    # 指向你的主节点的Eureka
    
    eureka.client.serviceUrl.defaultZone=http://用户名:密码 @localhost:8761/eureka/
    1. application.properties 中添加下面的内容:
    spring.application.name=eureka-server-cluster
    
    # 由于该应用为注册中心, 所以设置为false, 代表不向注册中心注册自己
    
    eureka.client.register-with-eureka=false
    
    # 由于注册中心的职责就是维护服务实例, 并不需要检索服务, 所以也设置为 false
    
    eureka.client.fetch-registry=false
    
    spring.security.user.name=zhangsan
    spring.security.user.password=123456
    
    # 指定不同的环境
    
    spring.profiles.active=master

    在 A 机器上默认用 master 启动,然后在 B 机器上加上 --spring.profiles.active=slaveone 启动即可。这样就将 master 注册到了 slaveone 中,将 slaveone 注册到了 master 中,无论谁出现问题,应用都能继续使用存活的注册中心。

  2. 在客户端中增加如下配置
eureka.client.serviceUrl.defaultZone=http://zhangsan:[email protected]:8761/eureka/,http://zhangsan:[email protected]:8762/eureka/

自我保护模式与InstanceId的设置

  • 关闭自我保护保护模式主要在一组客户端和 Eureka Server 之间存在网络分区场景时使用。一旦进入保护模式,Eureka Server 将会尝试保护其服务的注册表中的信息,不再删除服务注册表中的数据。当网络故障恢复后,该 Eureka Server 节点会自动退出保护模式。

    配置开启、关闭可添加设置
eureka.server.enableSelfPreservation=false
  • 自定义eureka的instanceId

    • 客户端注册时,有如下默认格式
    ${spring.cloud.client.hostname}:${spring.application.name}:${spring.application. instance_id:${server.port}}

    主机名:服务名称:服务端口格式

    • 很多时候想显示ip地址,可变更为如下配置
    eureka.instance.instance-id=${spring.application.name}:${spring.cloud.client.ip-address}:${server.port}
    • 点击instanceId进行跳转,显示的名称是ip格式,但是跳转的链接还是主机名,可以如下设置
    eureka.instance.preferIpAddress=true

    • 自定义跳转地址
    eureka.instance.status-page-url=c.biancheng.net

快速移除失效服务

在实际开发过程中,我们可能会不停地重启服务,由于 Eureka 有自己的保护机制,故节点下线后,服务信息还会一直存在于 Eureka 中。我们可以通过增加一些配置让移除的速度更快一点,当然只在开发环境下使用,生产环境下不推荐使用。

  1. 在eureka-server中增加配置

    # 关闭自我保护和清理间隔:
    
    eureka.server.enable-self-preservation=false
    
    # 默认 60000 毫秒
    
    eureka.server.eviction-interval-timer-in-ms=5000
  2. 客户端服务eureka-service中增加配置

    # 开启健康检查
    
    eureka.client.healthcheck.enabled=true
    
    # 表示 Eureka Client 发送心跳给 server 端的频率,默认 30 秒
    
    eureka.instance.lease-renewal-interval-in-seconds=5
    
    # 表示 Eureka Server 至上一次收到 client 的心跳之后,等待下一次心跳的超时时间,在这个时间内若没收到下一次心跳,则移除该 Instance默认 90 秒,现在变成五秒就看一次
    
    eureka.instance.lease-expiration-duration-in-seconds=5

    并引用依赖

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>

<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">

原文地址:https://www.cnblogs.com/pipicai96/p/885b2e717763c07375449e08494323c5.html

时间: 2024-08-02 15:53:10

SpringCloud学习心得—1.2—Eureka注册中心的密码认证、高可用的设置的相关文章

学习Spring Cloud中eureka注册中心添加security认证,eureka client注册启动报错

最近使用SpringCloud在eureka server端添加security登录认证之后,eureka client注册启动一直报错,大概意思是未发现eureka server,导致注册启动失败! 1 2018-08-09 14:50:06.042 WARN 13256 --- [nfoReplicator-0] c.n.discovery.InstanceInfoReplicator : There was a problem with the instance info replicat

SpringCloud学习心得—1.3—Eureka与REST API

SpringCloud学习心得—1.3—Eureka与REST API Eureka的REST API接口 API的基本访问 Eureka REST APIEureka 作为注册中心,其本质是存储了每个客户端的注册信息,Ribbon 在转发的时候会获取注册中心的服务列表,然后根据对应的路由规则来选择一个服务给 Feign 来进行调用. 如果我们不是Spring Cloud 技术选型,也想用 Eureka,可以吗?完全可以. 如果不是 Spring Cloud 技术栈,推荐用 Zookeeper,

springCloud系列教程01:Eureka 注册中心集群搭建

springCloud系列教程包含如下内容: springCloud系列教程02:ConfigServer 配置中心server搭建 springCloud系列教程03:ConfigClient 配置中心client搭建 springCloud系列教程04:配置信息动态刷新 /bus/refresh springCloud系列教程05:@FeignClient微服务间接口调用及权限验证 springCloud系列教程06:zuul统一网关配置及权限验证 springCloud系列教程07:综合演

SpringCloud之eureka注册中心入门

eureka注册中心 一.基本概念 SpringCloud封装 了Netflix公司的eureka作为自己微服务的注册中心.这个注册中心和dubbo中的zookeeper很相似,简单来说,只要你可以将你的"微服务"模块注册到注册中心,就可以供其他服务调用,一般来说,只有provider会注册到eureka,consumer也可以注册,但是并不建议这么做. eureka的架构图如下: 二.在SpringCloud项目中使用eureka 要想使用SpringCloud的子模块,一般分为两步

SpringCloud(一)Eureka注册中心

Eureka简介 Eureka作为注册中心,管理各种服务功能包括服务的注册.发现.熔断.负载.降级等 Eureka注册中心实例 Eureka Server 1.pom文件配置SpringBoot.SpringCloud的依赖: 2.启动类配置 @EnableEurekaServer 注解,表示注册中心: /** * SpringCloud是基于SpringBoot的,这是一个启动类的注解 */ @SpringBootApplication /** * 这是注册中心Eureka的注解 */ @En

Spring-cloud微服务实战【三】:eureka注册中心(中)

??回忆一下,在上一篇文章中,我们创建了两个springboot项目,并且在consumer项目中通过restTemplate进行HTTP通信,成功访问到了producer提供的接口,思考一下这样的实现方式有什么问题? ??1.consumer必须知道producer的IP,才能调用对方的HTTP接口,并且在consumer代码中使用硬编码的方式来访问producer的HTTP接口,代码耦合度高,实现方式不优雅.也许有童鞋会说,我们可以在application.properties配置文件进行配

Spring-cloud微服务实战【四】:eureka注册中心(下)

回忆一下,在上一篇文章中,我们使用eureka作为注册中心,将producer注册到eureka,并且在consumer中通过eureka发现producer服务进行调用,让我们来分析一下,这样是否已经足够完美,还有没有什么问题? 1.首先,eureka没有任何安全验证,任何应用都可以访问,这显然不安全,因此eureka也需要使用spring-security配置用户密码验证. 2.其次,所有服务注册和发现都需要通过eureka,而我们的eureka目前是单机运行,这就有可能导致单点问题,一旦e

SpringCloud Eureka(注册中心集群)

多个注册中心,其实用不同的配置对应 不同的端口号注册就行了. 注册中心自己也是个服务,看看之前的单个注册中心是怎么样的呢? server: port: 8888 # 服务端口eureka: instance: hostname: localhost # 设置主机名 client: registerWithEureka: false # 是否向 Eureka 注册服务.该应用为服务注册中心,不需要自注册,设置为 false fetchRegistry: false # 是否检索服务.该应用为服务注

springCloud Eureka注册中心原理及配置理解

Eureka 配置流程 原理:     服务提供方启动后将注册到 注册中心,提供IP, 名字,什么服务等信息, 服务调用方作为客户端注册到注册中心后,拉取注册中心的服务列表,在通过负载均衡调用对应的服务提供方. 注册中心可以建立集群,生成多台eureka,注册中心为了监测各个服务的心跳,将在每30S 向所注册的服务发起请求判断 服务是否挂掉,如果挂掉90S后将会将服务从注册中心剔除. 一个服务可以监测多台服务实例,从而可实现均很负载. 配置步骤:  一.加依赖 以下指POM文件 <!--注册中心