文章目录
- 前言
- 一、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服务
此时访问http://localhost:1001/,已经可以看到端口1010的服务已经被注册了
,访问http://localhost:1010/则可以看到1001端口已经被注册。
4、修改Eureka-client,连接到集群
#端口号
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
二、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服务;
3、eureka-client注册到有登录认证的注册中心
配置文件中需要修改注册中心地址格式
http://${username}:${password}@${hostname}:${port}/eureka/
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组件完成。