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:19492019@localhost: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:123456@localhost:8761/eureka/,http://zhangsan:123456@localhost: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;">

 

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

  1. SpringCloud学习笔记(1):Eureka注册中心

    简介 Eureka是Netflix开源的基于rest的服务治理方案,分为Server端和Client端,Server端为注册中心,其他微服务通过Client端连接Server端进行服务的注册和发现. ...

  2. SpringCloud的入门学习之深入理解Eureka注册中心

    1.Eureka 注册中心三种角色. 答:a.Eureka Server,注册中心,通过 Register.Get.Renew 等接口提供服务的注册和发现. b.Application Service ...

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

      SpringCloud学习心得—1.3—Eureka与REST API Eureka的REST API接口 API的基本访问 Eureka REST APIEureka 作为注册中心,其本质是存储 ...

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

    springCloud系列教程包含如下内容: springCloud系列教程01:Eureka 注册中心集群搭建 springCloud系列教程02:ConfigServer 配置中心server搭建 ...

  5. Spring-cloud (一):Eureka注册中心搭建

    前提 系统安装jdk1.8及以上,配置好maven的ide(这里用idea进行演示,maven版本3.5,配置阿里云源) 项目搭建 新建一个maven项目,创建最简单的那种就好,项目名这里为Eurek ...

  6. SpringCloud的服务注册中心(四)- 高可用服务注册中心的搭建

    一.双 服务注册注册中心 1.服务注册中心的服务端 - EurekaServer 1.1.EurekaServer1 String.application.name=eureka-server ser ...

  7. 【Spring Cloud笔记】Eureka注册中心增加权限认证

    在Spring Cloud通过Eureka实现服务注册与发现时,默认提供web管理界面,但是如果在生产环境暴露出来,会存在安全问题.为了解决这个问题,我们可以通过添加权限认证进行控制,具体步骤如下: ...

  8. Eureka注册中心增加权限认证

    在Spring Cloud通过Eureka实现服务注册与发现时,默认提供web管理界面,但是如果在生产环境暴露出来,会存在安全问题.为了解决这个问题,我们可以通过添加权限认证进行控制,具体步骤如下: ...

  9. 搭建高可用的Eureka注册中心

    搭建高可用的Eureka注册中心 一.搭建高可用的Eureka的作用 当服务器因种种原因导致Eureka注册中心(后面简称Eureka)服务当机(服务器跪了,异常关闭停止服务).这样就会影响到整个业务 ...

随机推荐

  1. 机器学习技法总结(一):支持向量机(linear support vector machine,dual support vector machine)

    第一阶段技法: large margin (the relationship between large marin and regularization), hard-SVM,soft-SVM,du ...

  2. 看看这5个最容易犯的Java错误,你犯了没?

    人非圣贤,孰能无过.都说Java语言是一门简单的编程语言,基于C++演化而来,剔除了很多C++中的复杂特性,但这并不能保证Java程序员不会犯错.那么对于广大的Java程序员来说,它们最容易犯的几个错 ...

  3. 【知识总结】Polya 定理

    我第一次听说 Polya 原理是 NOIP2017 以前,但我觉得太难想着以后再学: NOIP2018 以前我觉得会考这玩意,下定决心学,后来咕了: WC2019 以前我觉得会考这玩意,下定决心学,后 ...

  4. LeetCode | 152. 乘积最大子序列

    原题(Medium): 给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数). 思路: 遍历数组时且逐元素相乘时,如果遇到了0,在求乘积最大值的情况下,0左边的元素 ...

  5. 5. JDBC/ODBC服务器

    Spark SQL也提供JDBC连接支持,这对于让商业智能(BI)工具连接到Spark集群上以及在多用户间共享一个集群的场景都非常有用.JDBC服务器作为一个独立的Spark驱动器程序运行,可以在多用 ...

  6. JAVA day1 基础知识

    一.windows命令 dir:查看文件 cd:打开文件 二.java的编译和运行 编译: javac 源文件名 一个类编译后会对应一个.class文件 运行: java 类名 三.类 一个源文件内可 ...

  7. TypeScript之泛型

    什么是泛型,有什么用? 泛型字面意思就是广泛的类型,怎么样才算广泛呢?当然是能变的最广泛嘛, 所谓泛型就是类型的变量写法,让你的变量的类型是动态可变的,应用场景如官方文档描述的例子: 一个函数,输入什 ...

  8. PMM--简介与部署

    一.PMM架构 Percona Monitoring and Management是percona一款开源的用于管理和监控MySQL 和MongoDB性能的开源平台,通过PMM客户端收集到的DB监控数 ...

  9. ubuntu配置Selenium+Chromedriver

    1.下载并安装最新的Google Chrome版本执行如下命令: wget https://dl.google.com/linux/direct/google-chrome-stable_curren ...

  10. 使用PrintDocument定制打印格式

    虽然说使在IE上直接调用打印插件打印已经不常用,但是有时候还是会用到,这里就记录一下. 首先我们列出来我们的打印类 public class PrintService { //打印机名称 privat ...