Crear Eureka Server
La implementación de un Eureka Server requiere configurar una aplicación Spring Boot específica que actúe como registro central de servicios. Este servidor será el punto de encuentro donde todos los microservicios se registrarán y desde donde podrán descubrir otros servicios de la arquitectura.
Configuración del proyecto
Para crear un Eureka Server necesitamos configurar las dependencias correctas en nuestro proyecto.
Recordemos que ya tenemos un Config Server, y para conectarse a él nuestras aplicaciones de microservicios deben ser Config Clients, por tanto este eureka server también será un Config Client:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.5.6</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<url/>
<licenses>
<license/>
</licenses>
<developers>
<developer/>
</developers>
<scm>
<connection/>
<developerConnection/>
<tag/>
<url/>
</scm>
<properties>
<java.version>17</java.version>
<spring-cloud.version>2025.0.0</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<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-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
El starter spring-cloud-starter-netflix-eureka-server
incluye todas las dependencias necesarias para levantar un servidor Eureka, incluyendo la interfaz web administrativa y las APIs REST para el registro y descubrimiento de servicios.
Habilitación del servidor
La clase principal de nuestra aplicación debe incluir la anotación @EnableEurekaServer
para activar la funcionalidad de servidor Eureka:
package com.example.eurekaserver;
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);
}
}
La anotación @EnableEurekaServer
configura automáticamente todos los componentes internos necesarios para que la aplicación funcione como servidor de registro. No requiere configuración adicional en el código Java.
Ejemplo:
Configuración básica
El archivo application.yml
debe contener la configuración mínima para que el Eureka Server funcione correctamente en un entorno de desarrollo:
spring:
application:
name: eureka-server
server:
port: 8761
eureka:
client:
register-with-eureka: false
fetch-registry: false
server:
enable-self-preservation: false
logging:
level:
com.netflix.eureka: OFF
com.netflix.discovery: OFF
La configuración incluye varios parámetros críticos:
register-with-eureka: false
: Evita que el servidor se registre a sí mismo como clientefetch-registry: false
: Impide que el servidor intente obtener información de registro de otros servidoresenable-self-preservation: false
: Desactiva el modo de auto-preservación para desarrollo localport: 8761
: Puerto estándar para servidores Eureka
Ejemplo mínimo conectando al Config Server:
Estructura del proyecto
El proyecto resultante tendrá una estructura simple:
eureka-server/
├── src/
│ └── main/
│ ├── java/
│ │ └── com/example/eurekaserver/
│ │ └── EurekaServerApplication.java
│ └── resources/
│ └── application.yml
├── pom.xml
└── README.md
Esta estructura minimalista es suficiente para ejecutar un servidor Eureka completamente funcional. No necesitamos configuraciones adicionales, controladores REST personalizados ni componentes complejos.
Ejecución del servidor
Para arrancar el servidor ejecutamos el comando estándar de Spring Boot:
./mvnw spring-boot:run
Una vez iniciado, el servidor estará disponible en http://localhost:8761
. La aplicación arrancará mostrando logs similares a:
Started EurekaServerApplication in 3.847 seconds
Eureka server started at port 8761
El servidor incluye una interfaz web administrativa accesible desde el navegador que permite visualizar todos los servicios registrados, sus instancias activas y el estado general del registro. Esta interfaz será fundamental para monitorear qué servicios están disponibles en nuestro ecosistema de microservicios.
Registro simple de instancias (dashboard)
Una vez que tenemos nuestro Eureka Server funcionando, el siguiente paso es comprobar su interfaz web y registrar servicios simples para observar cómo aparecen en el dashboard. El dashboard de Eureka proporciona una vista completa del estado de todos los servicios registrados en tiempo real.
Acceso al dashboard
El dashboard de Eureka está disponible automáticamente en **http://localhost:8761**
cuando accedemos desde un navegador web. La interfaz muestra información esencial del servidor:
- System Status: Estado general del servidor Eureka
- DS Replicas: Información sobre réplicas del servidor (vacío en configuración standalone)
- Instances currently registered with Eureka: Lista de servicios registrados
- General Info: Información del entorno y configuración
- Instance Info: Detalles específicos del servidor
Inicialmente, la sección "Instances currently registered with Eureka" aparecerá vacía con el mensaje "No instances available", lo cual es normal ya que aún no hemos registrado ningún servicio.
Creación de un cliente simple
Para visualizar cómo funciona el registro de servicios, crearemos un microservicio básico que se registre automáticamente en Eureka. Necesitamos crear un nuevo proyecto Spring Boot con las siguientes dependencias:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
</dependencies>
La dependencia **spring-cloud-starter-netflix-eureka-client**
habilita automáticamente el registro con Eureka sin necesidad de anotaciones adicionales en versiones modernas de Spring Cloud.
Configuración del cliente
El archivo application.yml
del cliente debe incluir la configuración básica para conectarse al servidor Eureka:
spring:
application:
name: simple-service
server:
port: 8080
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka/
instance:
prefer-ip-address: true
La propiedad **spring.application.name**
es crucial porque define el nombre del servicio que aparecerá en el dashboard. El defaultZone
especifica la ubicación del servidor Eureka donde el cliente debe registrarse.
Implementación básica
La clase principal del cliente es muy simple:
package com.example.simpleclient;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
@RestController
public class SimpleClientApplication {
@GetMapping("/hello")
public String hello() {
return "Hello from Simple Service!";
}
public static void main(String[] args) {
SpringApplication.run(SimpleClientApplication.class, args);
}
}
No necesitamos la anotación @EnableEurekaClient
ya que el registro se activa automáticamente al incluir la dependencia del cliente Eureka.
Observación en el dashboard
Cuando ejecutamos el cliente con ./mvnw spring-boot:run
, después de unos segundos veremos en el dashboard de Eureka:
- SIMPLE-SERVICE aparecerá en la lista de aplicaciones
- Se mostrará 1 instance registrada
- El estado aparecerá como UP
- Se incluirán detalles como la IP, puerto y health check URL
La información mostrada incluye:
- Application: Nombre del servicio (SIMPLE-SERVICE)
- AMIs: Número de instancias activas
- Availability Zones: Zonas donde está disponible el servicio
- Status: Estado actual de cada instancia
Verificación del funcionamiento
Podemos comprobar que el servicio está correctamente registrado accediendo directamente a su endpoint:
curl http://localhost:8080/hello
La respuesta "Hello from Simple Service!"
confirma que el servicio funciona correctamente y está disponible a través de la dirección registrada en Eureka.
Múltiples instancias
Para observar el comportamiento con múltiples instancias, podemos arrancar el mismo servicio en diferentes puertos:
java -jar target/simple-client-0.0.1-SNAPSHOT.jar --server.port=8081
El dashboard mostrará automáticamente las dos instancias del mismo servicio, cada una con su puerto correspondiente, demostrando cómo Eureka mantiene un registro actualizado de todas las instancias disponibles.
Fuentes y referencias
Documentación oficial y recursos externos para profundizar en SpringBoot
Documentación oficial de SpringBoot
Alan Sastre
Ingeniero de Software y formador, CEO en CertiDevs
Ingeniero de software especializado en Full Stack y en Inteligencia Artificial. Como CEO de CertiDevs, SpringBoot es una de sus áreas de expertise. Con más de 15 años programando, 6K seguidores en LinkedIn y experiencia como formador, Alan se dedica a crear contenido educativo de calidad para desarrolladores de todos los niveles.
Más tutoriales de SpringBoot
Explora más contenido relacionado con SpringBoot y continúa aprendiendo con nuestros tutoriales gratuitos.
Aprendizajes de esta lección
- Comprender qué es un Eureka Server y su función en una arquitectura de microservicios.
- Configurar un proyecto Spring Boot para levantar un servidor Eureka.
- Habilitar y configurar el servidor Eureka mediante anotaciones y archivos de configuración.
- Registrar un microservicio cliente en el servidor Eureka y verificar su aparición en el dashboard.
- Gestionar múltiples instancias de un mismo servicio y observar su registro en Eureka.
Cursos que incluyen esta lección
Esta lección forma parte de los siguientes cursos estructurados con rutas de aprendizaje