Spring Cloud Netflix Eureka (Registro de Serviços)

  1. Criação do Centro de Registro de Serviços (Spring Cloud Netflix Eureka)

Crie um projeto principal Maven

Em seguida, crie dois módulos:

  • Um como servdior de registro Eureka
  • Outro como cliente Eureka

Configuração do Servidor Eureka

Iniciando o centro de registro

Adicionando autenticação ao Eureka

Primeiro, adicione a dependência de segurança ao servidor Eureka (eureka-server):

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

Segundo, configure o arquivo applicatoin.yml:

### Porta do servidor
server:
  port: 8100

### Nome do serviço
spring:
  application:
    name: app-eureka-center
  security:
    basic:
      enable: true # Ativa autenticação HTTP basic (não necessário em versões recentes)
    user: # Configura credenciais
      name: usuario
      password: senha123

eureka:
  instance:
    # Endereço do centro de registro
    hostname: 127.0.0.1

  client:
    serviceUrl:
      defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@${eureka.instance.hostname}:8100/eureka/
    register-with-eureka: false
    fetch-registry: true

Terceiro, implemente uma classe de segurança:

package com.exemplo.eureka;

import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.config.http.SessionCreationPolicy;

@Configuration
@EnableWebSecurity
public class SegurancaConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.NEVER);
        http.csrf().disable();
        http.authorizeRequests().anyRequest().authenticated().and().httpBasic();
    }
}

Quarto, reinicie o servidor Eureka para testes

Configuração do Cliente Eureka

  1. Processo de criação: padrão

Para clientes conectando a Eureka com autenticação, ajuste a URL:

http://usuario:senha@IP:porta/eureka

Exemplo: http://usuario:senha123@127.0.0.1:8100/eureka

Para clusters múltiplos, configure várias URLs no defaultZone:

defaultZone: http://usuario:senha123@127.0.0.1:8100/eureka/,http://usuario:senha123@127.0.0.1:9100/eureka/

Modo de Proteção do Eureka

Quando o Eureka entra no modo de proteção (desconecte o cliente após iniciar servidor e cliente), ele mantém serviços offline para evitar remoção acidental. Para desativar:

eureka:
  server:
    enable-self-preservation: false
    eviction-interval-timer-in-ms: 15000

Desativando a proteção, serviços offline serão removidos automaticamente.

Cluster de Alta Disponibilidade

Para criar um cluster, configure múltiplos servidores Eureka com registros mútuos.

Exemplo de configuração para servidor na porta 8100:

server:
  port: 8100

spring:
  application:
    name: eureka-cluster
  security:
    user:
      name: admin
      password: secret

eureka:
  instance:
    hostname: 127.0.0.1
  client:
    serviceUrl:
      defaultZone: http://admin:secret@127.0.0.1:9100/eureka/
    register-with-eureka: true

Para o servidor na porta 9100:

server:
  port: 9100

eureka:
  client:
    serviceUrl:
      defaultZone: http://admin:secret@127.0.0.1:8100/eureka/

Especificação de Endereço IP

No cliente, configure:

eureka:
  instance:
    prefer-ip-address: true
    ip-address: 127.0.0.1

Identificação de Instância

Use o parâmetro instance-id:

eureka:
  instance:
    instance-id: ${spring.application.name}:${server.port}

Remoção de Serviços Inválidos

Para remover serviços registrados incorretamente:

  1. Feche o serviço local
  2. Use ferramentas como Postman para requisições POST em /eureka/apps/{nome_serviço}

Monitoramento de Eventos

Eventos principais:

  • EurekaInstanceCanceledEvent
  • EurekaInstanceRegisteredEvent
  • EurekaInstanceRenewedEvent
  • EurekaRegistryAvailableEvent
  • EurekaServerStartedEvent

Exemplo de listener:

@Component
public class MonitorEureka {

    @EventListener
    public void onInstanceCancel(EurekaInstanceCanceledEvent event) {
        System.out.println("Serviço cancelado: " + event.getAppName());
    }

    // Outros listeners...
}

Tags: Spring Cloud Eureka Server microserviços Registro de Serviços Alta Disponibilidade

Publicado em 8-24 01:01