如何使用Eureka Server
将groupId 为 org.springframework.cloud
,artifactId 为spring-cloud-starter-netflix-eureka-server
的依赖添加到项目中即可引入Eureka Server,具体版本号可以参考Spring Cloud Project
使用如下代码快速启动Eureka Server
@SpringBootApplication@EnableEurekaServerpublic class Application { public static void main(String[] args) { new SpringApplicationBuilder(Application.class).web(true).run(args);
}
}
Server 包含一个主页和其他的HTTP API,默认在/eureka/*
路径下。
Eureka并不包含存储,但是所有的服务实例必须发送心跳信息来更新啊们的状态,这些信息都是在内存中操作的。客户端同样也包含一个Eureka的注册信息。 默认情况下,一个Eureka的Server同样也是一个Eureka的Client,需要配置Service URL来定位对方。
由于Server和Client缓存的存在,使得独立模式下的Eureka对于失败更具有弹性,只要有其他的监控或者弹性运行时保证其可用 接口。在独立模式下,可以选择关闭Client想问,这样Client就不会持续尝试获取其他断点,例如:
server:
port: 8761eureka:
instance:
hostname: localhost
client:
registerWithEureka: false
fetchRegistry: false
serviceUrl:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
通过多实例互相注册,可以使得Eureka更具弹性和可靠性。例如:
---
spring:
profiles: peer1
eureka:
instance:
hostname: peer1
client:
serviceUrl:
defaultZone: http://peer2/eureka/---
spring:
profiles: peer2
eureka:
instance:
hostname: peer2
client:
serviceUrl:
defaultZone: http://peer1/eureka/
配置两个Eureka Server,这两个Server互相注册。
通过设置eureka.instance.preferIpAddress=true
开启IP地址注册,设置后,Eureka Client会使用IP注册器服务而不是其hostname。
可以通过spring-boot-starter-sercurity
对Eureka Server添加安全认证。默认情况下,将其添加到classpath后,会对每个请求进行CSRF检查。Eureka并不会生成CSRF token,所以需要关掉对/eureka/*
路径下的检查:
@EnableWebSecurityclass WebSecurityConfig extends WebSecurityConfigurerAdapter { @Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().ignoringAntMatchers("/eureka/**"); super.configure(http);
}
}
用户认证可以通过设置如下开启
security:
basic:
enabled: true
user:
name: name
password:password