Réplicas de Elasticsearch para balanceo de carga en Serverless

Aprende cómo Elastic Cloud Serverless ajusta automáticamente las réplicas del índice según la carga de búsqueda, lo que garantiza un rendimiento óptimo de búsqueda sin configuración manual.

En Elastic Cloud Serverless, ajustamos automáticamente el número de réplicas de tus índices en función de la carga de búsqueda, lo que garantiza un rendimiento óptimo de las consultas sin necesidad de realizar una configuración manual. En este blog, te mostraremos cómo se escalan las réplicas, cuándo el sistema las agrega o elimina, y qué significa esto para tus índices.

La fiesta se está llenando de gente

Organizas una fiesta de pizzas. Tienes a unos cuantos amigos que te ayudan a servirlas, cada uno en un lugar distinto de la sala. Le das a cada amigo una pizza y ellos empiezan a repartir rebanadas a los invitados hambrientos a medida que llegan.

Al principio, todo marcha sin problemas. Unos cuantos invitados van llegando de a poco, tus amigos sirven porciones y todos están contentos. Pero entonces se corre la voz sobre tus pizzas de masa madre. El timbre sigue sonando. Los invitados siguen llegando en masa. Pronto se forma una multitud alrededor de uno de tus amigos, el que lleva la pizza de pepperoni, que parece ser la que quieren todos.

Tu amigo con la pizza de pepperoni está abrumado. Los invitados están esperando, se ponen impacientes y se formó una larga cola. Mientras tanto, tu amiga que sostiene la pizza margherita está de pie con casi nadie pidiéndole una porción.

¿Qué haces?

Pides un par de pizzas de pepperoni más y se las das a otros amigos. Ahora tres amigos tienen pepperoni en lugar de uno. La multitud se dispersa y, de repente, puedes atender a tres veces más invitados a la vez.

A medida que organizas más fiestas, hay algunas cosas que se vuelven claras:

  • No todas las pizzas son igual de populares. Algunas tienen mucha demanda; otras tienen menos interesados. No necesitas "copias" adicionales de las menos populares. Necesitas más de las que todos esperan en cola.
  • Pide más pizzas antes de que la fila se haga demasiado larga. Si esperas hasta que tu amigo esté completamente abrumado y los invitados se estén yendo enojados, esperaste demasiado tiempo. Es mejor pedir una pizza más cuando ves que se está formando una multitud.
  • No deseches las pizzas demasiado rápido. Solo porque la multitud alrededor del pepperoni se redujo durante cinco minutos no significa que la avalancha haya terminado. Tal vez solo están sirviéndose bebidas, o incluso hablando entre ellos (¿eso todavía se hace?). Mantén las pizzas adicionales listas. Si la calma se mantiene por un rato, entonces puedes guardarlas.
  • Solo puedes repartir tantas pizzas como amigos tengas que te estén ayudando. Si solo tienes cuatro amigos ayudándote, diez pizzas no cambiarán el resultado. Solo se pueden servir cuatro a la vez. Haz coincidir tu cantidad de pizzas con tus manos disponibles.
  • Cuando un amigo se vaya, llévate su pizza. Si uno de tus amigos necesita salir, toma su pizza inmediatamente. No puedes dejar las pizzas sin supervisión. Dásela a otra persona, o guárdala.

Desde pizzas hasta réplicas

Vamos a mapear esto de vuelta a Elasticsearch.

En nuestra analogía, las pizzas son réplicas (copias de tus fragmentos de índice), tus colegas ayudando a servir son nodos de búsqueda, los invitados hambrientos son consultas de búsqueda, y esa pizza popular con mucha gente alrededor es un índice caliente con alta carga de búsqueda.

Cuando el tráfico de búsqueda aumenta en un índice en particular, creamos réplicas adicionales y las distribuimos en tus nodos de búsqueda. Cualquier réplica puede responder a cualquier consulta sobre ese índice, igual que cualquier amigo que tenga pepperoni puede repartir rebanadas de pepperoni. Más réplicas significan un mayor rendimiento: tres réplicas pueden manejar tres veces las consultas por segundo de una sola réplica.

Medir el hambre

Antes de decidir cuántas pizzas pedir, necesitamos saber qué tan hambrienta está la multitud.

Elasticsearch rastrea la carga de búsqueda de cada fragmento. Es una métrica que mide el volumen de actividad de búsqueda que gestiona un fragmento. Sumamos estos datos de todos los fragmentos de un índice para conocer la demanda total de búsquedas.

Lo que más importa es la carga de búsqueda relativa: ¿qué proporción del tráfico de búsqueda total de tu proyecto está llegando a cada índice? Si un índice recibe el 60 % de todas las búsquedas mientras que otro recibe el 5 %, sabemos dónde debemos aumentar la capacidad.

La matemática detrás de las pizzas

Calculamos el número óptimo de réplicas siguiendo esta fórmula:

Dónde:

  • L = la carga de búsqueda relativa del índice (entre 0 y 1).
  • N = el número de nodos de búsqueda deseados en tu proyecto.
  • S = la cantidad de fragmentos en el índice.
  • X = un umbral para evitar puntos calientes (predeterminado: 0,5).

Un ejemplo: cuatro nodos de búsqueda, un índice con dos fragmentos primarios que reciben el 80 % del tráfico de búsqueda:

Este índice activo tiene cuatro réplicas distribuidas entre los nodos de búsqueda.

El umbral X (con un valor predeterminado de 0,5) es importante. No esperamos hasta que una réplica esté completamente saturada, sino que escalamos cuando está a la mitad de su capacidad. Reparte la pizza adicional cuando veas que la multitud empieza a formarse, no cuando los invitados ya se están yendo.

Escala rápido, reduce la escala lentamente

Cuando aumenta la carga de búsqueda, agregamos réplicas inmediatamente. No hay razón para hacer esperar a los usuarios.

Cuando la carga de búsqueda disminuye, esperamos un poco antes de tomar alguna acción. Necesitamos ver una demanda baja constante durante unos 30 minutos antes de reducir las réplicas. (Esto es para manejar el tráfico irregular donde un momento de calma no significa que la fiesta haya terminado.)

Esto importa porque agregar una réplica tiene un costo. La réplica nueva copia datos y calienta sus cachés antes de servir las consultas de manera eficiente. Si eliminas las réplicas con demasiada prisa, terminarás pagando este costo inicial constantemente, ya que el tráfico fluctúa de forma natural.

Respetando los límites de la topología

Las réplicas nunca pueden superar el número de nodos de búsqueda. Tener más réplicas que nodos no aporta ningún beneficio (solo puedes servir tantas pizzas como colegas que ayuden a servir las porciones).

Cuando se eliminan nodos de tu proyecto, reducimos las réplicas inmediatamente para que coincidan. Sin esperar el enfriamiento, ya que no puedes tener réplicas sin asignar. En cuanto un usuario se va, le quitamos la pizza.

El panorama general de Elastic Cloud Serverless

Las réplicas para el balanceo de carga de búsqueda funcionan junto con otros sistemas de autoescalado:

  • El escalado automático de búsqueda ajusta el número de nodos de búsqueda (cuántos amigos están ayudando).
  • Las réplicas para el balanceo de carga de búsqueda distribuyen el tráfico al ajustar la cantidad de réplicas por índice (cuántas pizzas de cada tipo necesitamos).
  • La fragmentación automática de flujos de datos optimiza el número de particiones para las operaciones de escritura (cómo cortar cada pizza, como se explicó en la publicación anterior).

Un principio de diseño importante: las réplicas para el equilibrio de carga no activan directamente el escalado automático de búsqueda. En cambio, distribuir las consultas de búsqueda entre más réplicas permite aumentar la utilización de recursos en todos tus nodos de búsqueda. Este mayor uso luego activa nuestra lógica de escalado automático existente para agregar capacidad si es necesario. Las réplicas para el balanceo de carga permiten que el autoescalado haga su trabajo, lo que asegura que tus nodos de búsqueda realmente se estén utilizando, en lugar de que todo el tráfico esté bloqueado en una sola réplica mientras otros nodos permanecen inactivos.

Qué significa esto para ti

No necesitas predecir qué índices serán populares. No necesitas ajustar manualmente las réplicas cuando cambian los patrones de tráfico. No necesitas despertarte a las 3 a. m. porque un aumento repentino sobrecargó tu índice más ocupado.

El sistema observa dónde se están formando colas y pide más pizzas para esos lugares. Los índices fríos no desperdician recursos en réplicas innecesarias. Los índices calientes obtienen la capacidad que necesitan. Tu presupuesto se destina a donde importa.

Conclusión

En la publicación sobre la autofragmentación (autosharding) nos aseguramos de que tus pizzas estén cortadas correctamente. Ahora, con réplicas para el equilibrio de carga de búsqueda, nos aseguramos de que tengas suficientes pizzas, en las manos adecuadas, cuando llegue la multitud hambrienta.

Prueba Elastic Cloud Serverless y déjanos encargarnos de la logística de la pizza.

Preguntas frecuentes

¿Te ha sido útil este contenido?

No es útil

Algo útil

Muy útil

Contenido relacionado

¿Estás listo para crear experiencias de búsqueda de última generación?

No se logra una búsqueda suficientemente avanzada con los esfuerzos de uno. Elasticsearch está impulsado por científicos de datos, operaciones de ML, ingenieros y muchos más que son tan apasionados por la búsqueda como tú. Conectemos y trabajemos juntos para crear la experiencia mágica de búsqueda que te dará los resultados que deseas.

Pruébalo tú mismo