Spring Cloud, na versão Finchley.RELEASE, utiliza Spring Boot 2.0.3.RELEASE. Documentação oficial disponível em:
http://cloud.spring.io/spring-cloud-static/Finchley.RELEASE/single/spring-cloud.html
O Spring Cloud oferece ferramentas para sistemas distribuídos, incluindo gerenciamento de configuração, descoberta de serviços e balanceamento de carga. Requer conhecimento prévio de Spring Boot e arquitetura de microsserviços.
Criação do Servidor de Registro Eureka
Crie um projeto Maven pai com dependências gerencidaas:
<properties>
<spring-boot.version>2.0.3.RELEASE</spring-boot.version>
<spring-cloud.version>Finchley.RELEASE</spring-cloud.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
</dependency>
</dependencies>
</dependencyManagement>
Módulo Eureka Server
Adicione dependências no módulo:
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
Classe principal:
@EnableEurekaServer
@SpringBootApplication
public class RegistryServer {
public static void main(String[] args) {
SpringApplication.run(RegistryServer.class, args);
}
}
Configuração application.yml:
server:
port: 8070
eureka:
client:
registerWithEureka: false
fetchRegistry: false
Segurança no Eureka Server
Adicoine dependência:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
Configure credenciais:
spring:
security:
user:
name: admin
password: securePass
Classe de configuração de segurança:
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable()
.authorizeRequests()
.anyRequest().authenticated()
.and()
.httpBasic();
}
}
Alta Disponibilidade
Perfil 1 (application-node1.yml):
server:
port: 8071
eureka:
instance:
hostname: node1
client:
serviceUrl:
defaultZone: http://admin:securePass@localhost:8072/eureka/
Perfil 2 (application-node2.yml):
server:
port: 8072
eureka:
instance:
hostname: node2
client:
serviceUrl:
defaultZone: http://admin:securePass@localhost:8071/eureka/
Execute com:
java -jar registry-server.jar --spring.profiles.active=node1
java -jar registry-server.jar --spring.profiles.active=node2