CodeGym /Cursos /Módulo 5. Spring /Lección 247: Práctica: configuración de Eureka para el de...

Lección 247: Práctica: configuración de Eureka para el descubrimiento de microservicios

Módulo 5. Spring
Nivel 24 , Lección 6
Disponible

Eureka es la "guía telefónica" para tus microservicios. En vez de poner a mano las direcciones IP y los puertos de los servicios, puedes permitir que se registren en un registro central, donde estarán disponibles para otros clientes o el API Gateway cuando los necesites. Esto facilita mucho el mantenimiento y el escalado de un sistema de microservicios. Imagina que tienes 10 microservicios y sus direcciones cambian en cada despliegue. Con Eureka no tienes que memorizar esas direcciones: todo se actualizará automáticamente.


¿Qué haremos hoy?

  1. Instalaremos y configuraremos Eureka Server, que actuará como el registro de servicios.
  2. Conectaremos un microservicio como Eureka Client, para que se registre en el servidor.
  3. Comprobaremos todo en la práctica usando la consola Eureka Dashboard.
  4. Resolveremos posibles problemas con el registro y la interacción.

Paso 1: Configurar Eureka Server

Para empezar, necesitas crear un nuevo proyecto Spring Boot que hará de Eureka Server.

1.1 Creamos el proyecto

  • Usa Spring Initializr:
    • Indica las dependencias:
      • Spring Boot Starter Web
      • Spring Boot Starter Actuator
      • Eureka Server

1.2 Configuración de pom.xml

Si usas Maven, verifica que las dependencias estén añadidas correctamente:


<dependencies>
    <!-- Eureka Server -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
    </dependency>
    <!-- Web Starter -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- Actuator for Monitoring -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
</dependencies>

No olvides indicar la versión de Spring Cloud en application.properties o en la sección <dependencyManagement>:


<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>2022.0.4</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

1.3 Configuramos application.yml

Crea el archivo src/main/resources/application.yml:

server:
  port: 8761 # Puerto estándar para Eureka Server
spring:
  application:
    name: eureka-server
eureka:
  client:
    register-with-eureka: false # El propio servidor no se registrará en otros servidores
    fetch-registry: false      # No intentamos descargar el registro
  server:
    enable-self-preservation: false # Desactivamos el modo de self-preservation para simplificar

1.4 Activar Eureka Server

Añade la anotación @EnableEurekaServer en la clase principal de la aplicación:


import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args);
    }
}

Arranca la aplicación. Tu Eureka Server ahora está disponible en: http://localhost:8761.


Paso 2: Configurar Eureka Client

Ahora crea un microservicio que se registrará en el Eureka Server.

2.1 Creamos un nuevo proyecto

Usa Spring Initializr:

  • Dependencias:
    • Spring Boot Starter Web
    • Spring Boot Starter Actuator
    • Eureka Client

2.2 Configuración de pom.xml

Añade las dependencias necesarias:

<dependencies>
    <!-- Eureka Client -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
    <!-- Web Starter -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- Actuator for Monitoring -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
</dependencies>

2.3 Configuramos application.yml

Crea el archivo src/main/resources/application.yml:


server:
  port: 8081 # Indica el puerto del microservicio
spring:
  application:
    name: service-client # Nombre del microservicio
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/ # URL del servidor Eureka

2.4 Conectar Eureka Client

En la clase principal añade la anotación @EnableEurekaClient:


import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

@SpringBootApplication
@EnableEurekaClient
public class ServiceClientApplication {

    public static void main(String[] args) {
        SpringApplication.run(ServiceClientApplication.class, args);
    }
}

Paso 3: Comprobación de la interacción

  1. Arranca ambas aplicaciones: Eureka Server y Service Client.
  2. Abre el Eureka Dashboard: http://localhost:8761.
  3. Deberías ver el microservicio con el nombre service-client registrado en el registro. Aparecerá en la sección Instances currently registered with Eureka.

Paso 4: Errores típicos y cómo solucionarlos

Si el cliente no aparece en el Eureka Dashboard, comprueba lo siguiente:

  1. URL del servidor Eureka incorrecto:
    • Comprueba que el URL indicado en application.yml sea correcto y que el servidor esté en marcha.
  2. Versión incompatible de Spring Cloud:
    • Asegúrate de que Spring Cloud y Spring Boot sean compatibles. Por ejemplo, Spring Boot 3.x es compatible con Spring Cloud 2022.x.
  3. Problemas con CORS:
    • Si el microservicio hace peticiones entre dominios, configura la política CORS.

Ahora tienes una configuración funcional de Eureka Server y Eureka Client. En proyectos reales esto permitirá registrar y descubrir microservicios automáticamente, ahorrándote la gestión manual de sus direcciones y puertos. Es un gran paso hacia una arquitectura de microservicios profesional.

Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION