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?
- Instalaremos y configuraremos Eureka Server, que actuará como el registro de servicios.
- Conectaremos un microservicio como Eureka Client, para que se registre en el servidor.
- Comprobaremos todo en la práctica usando la consola Eureka Dashboard.
- 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
- Indica las dependencias:
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
- Arranca ambas aplicaciones: Eureka Server y Service Client.
- Abre el Eureka Dashboard:
http://localhost:8761. - Deberías ver el microservicio con el nombre
service-clientregistrado 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:
- URL del servidor Eureka incorrecto:
- Comprueba que el URL indicado en
application.ymlsea correcto y que el servidor esté en marcha.
- Comprueba que el URL indicado en
- 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.
- 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.
GO TO FULL VERSION