1.Spring Cloud Eureka的介绍
Spring Cloud Eureka是基于Netflix Eureka之上做了二次封装。它主要由Eureka Server和Eureka Client组成。
Eureka Server即注册中心服务端,供服务注册的服务器。服务端记录着每个服务的名字,运行状态、在哪台机器上啊。
Eureka Client即服务注册客户端,用来简化与服务端的交互,作为轮询负载均衡器并提供服务的故障切换支持。系统中的其他服务通过客户端连接到服务端,并维持心跳连接,检测各个服务间是否正常运行。
2.Eureka Server的开发
创建项目,我用的是idea开发。
创建完项目后可删除一些不必要的文件
注意这里的版本要跟我保持一致,要不然掉坑里就难爬出来
spring cloud 与其他的版本关系: https://projects.spring.io/spring-cloud/
在启动类加上@EnableEurekaServer ,加这个注解表示这是注册中心服务端,然后启动项目。
启动后打开 http://localhost:8080/ 这就是注册中心
一直报错是因为这个项目既是Server端同时,它也是一个client端。按照下面的进行配置,这样启动完成后就不会报错了
如下图所示,eureka服务就注册到服务端了。
实际情况中,这个eureka服务就是一个服务端,它不应该注册到服务中心,可以通过如下配置,不注册到服务中心。
代码git地址: https://github.com/hmilyos/springCloud-eureka.git
3. 加上一个安全管理的功能
添加 security 的依赖
<dependency>
<groupId>org.springframework.boot </groupId>
<artifactId>spring-boot-starter-security </artifactId>
</dependency>
application.yml 的内容改成如下,增加 security 的账号密码配置和注册时加上账号密码
security:
user:
name: hmily
password: 111111
serviceUrl:
defaultZone: http://hmily:111111@localhost:${server.port}/eureka/
打开 管理页面 ,现在就要输入配置的账号和密码了,登录进去就能看到管理页面了。
配置了安全认证,客户端 要往 服务端注册 就得使用 http://账号:密码@localhost:8761/eureka/ 这种格式的 URL
如果加了 security 安全认证后,client 向 eureka 服务 注册时发生 com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server 的异常,提示注册不上,例如
这是因为 新版的 security 默认启用了 csrf 检验,要在 eureka 服务端那边配置 security 的 csrf 检验为 false, 具体代码如下
@EnableWebSecurity
public class WebSecurityConfigurerextends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http)throws Exception {
http.csrf().disable();
super.configure(http);
}
}
这样就能注册上去了