Implementação de Registro e Descoberta de Serviços com Eureka

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

Tags: spring-cloud eureka service-discovery microservices spring-boot

Publicado em 8-9 12:07