Escalar contenedores es más que simplemente colocar un proxy frente a un servicio y marcharse. Escalar implica mucho más que solo distribución, y en el acelerado mundo de los contenedores hay cinco capacidades distintas necesarias para garantizar la escala: reintentos, disyuntores, descubrimiento, distribución y monitoreo.
En esta publicación sobre el arte de escalar contenedores, profundizaremos en el descubrimiento.
Los modelos tradicionales de escala tienen una configuración relativamente fija . Los servidores proxy de equilibrio de carga utilizan un algoritmo para seleccionar un recurso de un grupo de recursos bastante estático. Si bien la selección del recurso (distribución) es un evento en tiempo real y puede incluir la consideración de variables justo a tiempo, como los tiempos de carga y respuesta, el entorno general no lo es. Los operadores agregan y eliminan recursos según procesos definidos por la empresa que rigen el aumento o la disminución de la capacidad.
Los modelos modernos de escala son volátiles y dinámicos por naturaleza. La premisa de escala en los sistemas modernos se basa en “auto” todo. El escalamiento automático, un concepto que se hizo concreto gracias a la nube, impone la noción de expandir y contraer conjuntos de recursos en función de la demanda, pero esto es solo medio paso respecto de los modelos tradicionales. Todavía existe la noción de un grupo “central” de recursos del cual un algoritmo de equilibrio de carga hace una selección. Ese fondo puede ampliarse o contraerse dinámicamente, pero todavía está limitado por el modelo bastante tradicional en el que opera.
Los contenedores, y en particular los entornos de orquestación de contenedores, rompen ese molde por completo. El concepto de un punto final (el ingreso ) es uno de los pocos elementos "fijos" en la escala basada en contenedores, donde todo lo demás, desde las reglas de enrutamiento hasta los recursos que conforman su grupo de soporte, se considera altamente variable. En teoría, los contenedores sólo pueden vivir unos segundos. En la aplicação, sin embargo, generalmente tienden a vivir durante días. En comparación con los modelos tradicionales, donde los recursos duraban meses (y a veces años), esta vida útil genera una presión sobre los operadores que no puede soportarse sin la automatización.
Por lo tanto, el descubrimiento es un componente fundamental para escalar contenedores. Los servidores proxy de equilibrio de carga deben poder seleccionar un recurso de un grupo de recursos que puede o no ser el mismo que el de hace un minuto. La mayoría de los entornos de orquestación de contenedores incluyen, entonces, un “registro” de recursos que ayuda a los servidores proxy en el descubrimiento de recursos en tiempo real para garantizar la escala.
Este proceso requiere que los servidores proxy no solo se integren al ecosistema de orquestación de contenedores, sino que también hablen el idioma franca de estos entornos: se utilizan archivos de configuración declarativos (archivos de recursos) y metadatos dentro de los entornos de orquestación de contenedores para permitir que los servidores proxy identifiquen los recursos adjuntos a los servicios que están escalando. Esto permite que los servidores proxy ajusten automáticamente sus “grupos” de recursos en tiempo real y eviten la vergüenza de seleccionar un recurso que lamentablemente ya ha sido cerrado.
Sin descubrimiento, no existe una forma eficiente para que un proxy de equilibrio de carga escale aplicações y servicios en un entorno de contenedores. Ningún operador podría seguir el ritmo de los cambios en un entorno de este tipo utilizando métodos manuales de configuración. El mero hecho de realizar un seguimiento de qué recursos están activos (y asociados a un servicio determinado) consumiría la mayor parte de su tiempo, dejando poco tiempo para realizar los cambios necesarios.
El descubrimiento proporciona los medios por los cuales los componentes en un entorno de orquestación de contenedores pueden operar en tiempo real, y permite que los servidores proxy de equilibrio de carga escalen aplicaciones y servicios al garantizar que tengan la información que necesitan para seleccionar recursos a pedido.