一,Eureka介绍
注册服务中心
flowchart TD C[服务消费者] --发现--> E[Eureka] P[服务提供者] --注册 --> E[Eureka]
服务消费者 和 服务提供者 都属于 Eureka客户端。
Eureka 就是Eureka服务端。
作用
- 类似于114查号台的作用, Eureka就是114查号台, 服务提供者就是商家,服务消费者就是别的商家或消费者,服务提供者将信息登记到114,服务消费者会去114查询商家的联系方式。
二,搭建Server端(eureka)
具体步骤如下:
1. 添加依赖
在pom中添加依赖
<!--eureka服务依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
2. 按开关
//放在启动类上方
@EnableEurekaServer
3. 加配置
#顶格放
eureka:
instance:
ip-address: 127.0.0.1
prefer-ip-address: true
server:
enable-self-preservation: false #是否开启自我保护,防止网络分区故障时删掉微服务
client:
fetch-registry: false #是否从注册中心获取注册表
register-with-eureka: false #是否要注册到注册中心
二,搭建Client端(house,contract等)
搭建步骤:
1.添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--注册中心(eureka)客户端依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
2.按开关
//放在启动类上方
@EnableEurekaClient
3.加配置
#顶格放
eureka:
instance:
prefer-ip-address: true # 优先使用ip地址
ip-address: 127.0.0.1 # 使用这个ip
# instance-id: user # 显示实例名称
client:
register-with-eureka: true # 注册到eureka
fetch_registry: true #从服务器获取注册信息
service-url:
defaultZone: http://localhost:8761/eureka/ # 注册中心地址
三,搭建eureka集群
当只有一个Eureka服务的时候,如果这个服务宕机,就会导致整个系统崩溃,所以需要搭建一个Eureka服务集群,提高服务的稳定性。
1. 添加配置文件
假设我们要创建两个服务的集群,则先创建两个配置文件,如下:
- application-01.yml
- application-02.yml
然后修改配置中的eureka的配置,修改后如下所示
eureka:
instance:
ip-address: 127.0.0.1
prefer-ip-address: true
server:
enable-self-preservation: false #是否开启自我保护,防止网络分区故障时删掉微服务
client:
fetch-registry: true #是否从注册中心获取注册表; 这里需要获取,所以改为true
register-with-eureka: true #是否要注册到注册中心; 需要注册到注册中心,所以改为true
service-url:
defaultZone: http://localhost:8762/eureka/,http://localhost:8761/eureka/ #两个服务互相指向对方
修改idea的运行配置文件
在IDEA中配置启动入口时,指定要使用的配置文件,例如下面的配置指定使用application-01.yml配置文件。
四,用security保护 eureka
任何用户都可以访问Eureka服务会有安全性隐患,所以一般会在Eureka服务端添加安全保护措施。
加依赖
在Eureka服务的pom中添加依赖。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
配置文件中添加用户名和密码
在Eureka的application.yml文件中添加security配置
spring:
application:
name: eureka
security: # 一定要注意对齐关系,security和application平级
user: # 指定spring security的登录
name: admin
password: 123456
添加安全设置
在Eureka服务中添加以下配置类,放开向eureka的注册请求。
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
//csrf -> Cross-Site Request Forgery 跨站请求伪造
http.csrf().ignoringAntMatchers("/eureka/**"); //ignore是忽略的意思
super.configure(http);
}
}
Eureka客户端添加认证信息
格式: 用户名:密码@url
defaultZone: http://macro:123456@localhost:8761/eureka # 注册中心地址
注意,无论是我们示例中的house,contract还是eureka服务本身,只要他想向被security保护的eureka服务端注册都需要带上上面的用户名和密码配置。
其它eureka常用配置
eureka:
client:
register-with-eureka: true #是否将自己注册到eureka服务
fetch-registry: true #是否从eureka服务获取注册信息
service-url:
defaultZone: http://localhost:8761/eureka/ #服务地址,逗号分隔
registry-fetch-interval-seconds: 30 #多久去服务端取一次注册信息
instance:
lease-renewal-interval-in-seconds: 30 #续约间隔,秒
lease-expiration-duration-in-seconds: 90 #过期间隔 ,秒
prefer-ip-address: true #优先使用ip地址而非主机名称
ip-address: 127.0.0.1
server:
enable-self-preservaation: false #开启自我保护
### 打开services面板
打开service窗口:
五、常见错误:
- 添加security配置时,security和application没有上下对齐。