文章目录

  • 前言
  • 一、Eureka集群
  • 1、修改配置文件为application-replica1.properties
  • 2、新增配置文件application-replica2.properties
  • 3、分别使用两个配置文件启动同一eureka-server服务
  • 4、修改Eureka-client,连接到集群
  • 二、Eureka注册中心添加认证
  • 1、在pom文件中添加依赖
  • 2、添加Java配置WebSecurityConfig
  • 3、eureka-client注册到有登录认证的注册中心
  • 总结


前言

单节点eureka服务注册中心一旦宕机,将导致所有服务将无法使用,通过集群可以保证服务的高可用。本篇内容为对eureka服务注册与发现中心进行集群与安全认证学习。搭建一个双节点的注册中心集群以及配置安全认证。

注: 该部分内容上篇内容的基础上,已经成功搭建单节点eureka-server服务注册中心。

一、Eureka集群

1、修改配置文件为application-replica1.properties

#服务端口号
server.port=1001

#应用名称
spring.application.name=eureka-server
#实例名称
eureka.instance.hostname=server1
#client.register-with-eureka为是否将应用注册到eureka,默认为true,单点server节点指定为false
eureka.client.register-with-eureka=true
#client.fetch-registry为是否从注册中心拉取已注册信息,默认为true,单点server节点指定为false
eureka.client.fetch-registry=true
#client.service-url.defaultZone指定注册中心地址
eureka.client.service-url.defaultZone=http://localhost:1010/eureka

#server端,关闭注册中心自我保护机制
eureka.server..enable-self-preservation=false
#注册中心清理间隔,单位为毫秒
enruka.server.evication-interval-timer-in-ms=10000

#安全认证用户名及密码
spring.security.user.name=root
spring.security.user.password=root

2、新增配置文件application-replica2.properties

#服务端口号
server.port=1010

#应用名称
spring.application.name=eureka-server
#实例名称
eureka.instance.hostname=server2
#client.register-with-eureka为是否将应用注册到eureka,默认为true,单点server节点指定为false
eureka.client.register-with-eureka=true
#client.fetch-registry为是否从注册中心拉取已注册信息,默认为true,单点server节点指定为false
eureka.client.fetch-registry=true
#client.service-url.defaultZone指定注册中心地址
eureka.client.service-url.defaultZone=http://localhost:1001/eureka

#server端,关闭注册中心自我保护机制
eureka.server..enable-self-preservation=false
#注册中心清理间隔,单位为毫秒
enruka.server.evication-interval-timer-in-ms=10000

#安全认证用户名及密码
spring.security.user.name=root
spring.security.user.password=root

3、分别使用两个配置文件启动同一eureka-server服务

springboot集成eurka集群_spring cloud

springboot集成eurka集群_eureka_02


此时访问http://localhost:1001/,已经可以看到端口1010的服务已经被注册了

,访问http://localhost:1010/则可以看到1001端口已经被注册。

springboot集成eurka集群_spring_03

4、修改Eureka-client,连接到集群

springboot集成eurka集群_spring cloud_04

#端口号
server.port=2001

#应用名称
spring.application.name=eureka-introduce

#实例ID
eureka.instance.instance-id=${spring.application.name}:${spring.cloud.client.ip-address}:${server.port}
#client.service-url.defaultZone指定注册中心地址
eureka.client.service-url.defaultZone=http://localhost:1001/eureka,http://localhost:1010/eureka

#client端,开启健康检查(需要spring-boot-starter-actuator依赖)
eureka.client.healthcheck.enabled=true
#设置租期更新时间,默认30秒
eureka.instance.lease-renewal-interval-seconds=30
#设置租期到期时间,默认90秒
eureka.instance.lease-expiration-duration-in-seconds=90

springboot集成eurka集群_spring cloud_05

二、Eureka注册中心添加认证

1、在pom文件中添加依赖

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

2、添加Java配置WebSecurityConfig

默认情况下添加SpringSecurity依赖的应用每个请求都需要添加CSRF token才能访问,Eureka客户端注册时并不会添加,所以需要配置/eureka/**路径不需要CSRF token。

package com.hjl.eureka_server.config;

import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;

/**
 * TODO:
 *
 * @Version 1.0
 * @Author HJL
 * @Date 2021/12/27 20:51
 */
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.csrf().ignoringAntMatchers("/eureka/**");
        super.configure(http);
    }
}

重新访问eureka服务;

springboot集成eurka集群_eureka_06

3、eureka-client注册到有登录认证的注册中心

配置文件中需要修改注册中心地址格式

http://${username}:${password}@${hostname}:${port}/eureka/

springboot集成eurka集群_spring_07

springboot集成eurka集群_eureka_08


Eureka的常用配置

eureka:
  client: #eureka客户端配置
    register-with-eureka: true #是否将自己注册到eureka服务端上去
    fetch-registry: true #是否获取eureka服务端上注册的服务列表
    service-url:
      defaultZone: http://localhost:8001/eureka/ # 指定注册中心地址
    enabled: true # 启用eureka客户端
    registry-fetch-interval-seconds: 30 #定义去eureka服务端获取服务列表的时间间隔
  instance: #eureka客户端实例配置
    lease-renewal-interval-in-seconds: 30 #定义服务多久去注册中心续约
    lease-expiration-duration-in-seconds: 90 #定义服务多久不去续约认为服务失效
    metadata-map:
      zone: guangdong #所在区域
    hostname: localhost #服务主机名称
    prefer-ip-address: false #是否优先使用ip来作为主机名
  server: #eureka服务端配置
    enable-self-preservation: false #关闭eureka服务端的保护机制

总结

Eureka服务注册中心的集群,只需要开启eureka-server的自身服务注册功能,并填写集群其它的eureka服务地址,让注册中心服务间能相互发现即可,即具备eureka-client的能力。
eureka的安全认证可以通过spring security组件完成。