La escala horizontal se refiere a girar más computadoras, yo.e, máquinas virtuales, contenedores o servidores físicos para acomodar cualquier aumento en las demandas. Esto está en contraste con la escala 'verticalmente ', que generalmente se refiere a reemplazar una máquina más lenta (con memoria y almacenamiento más pequeños) con una más rápida 'más grande ' uno.
Con la escala de contenedores de ambos tipos se ha vuelto muy dinámico. Puede establecer cuotas para aplicaciones específicas que establezcan la cantidad de CPU, memoria o almacenamiento a la que pueden tener acceso. Esta cuota se puede cambiar para escalar hacia arriba o hacia abajo según sea necesario. Del mismo modo, puede escalar horizontalmente girando más contenedores que acomodarán un aumento en la demanda, y luego escalar al destruir el exceso de contenedores que creó. Si está utilizando servicios alojados en la nube que lo factura por hora (o minuto), esto puede reducir sustancialmente sus facturas de alojamiento.
En este artículo nos centraremos solo en la escala horizontal que no es tan dinámica como la descripción anterior, pero es un buen punto de partida para alguien que aprende lo básico. Así que comencemos.
Cuando inicia su pila de aplicaciones, pasando su archivo de composición al CLI compuesto de acopolador puedes usar la bandera -escala para especificar la escalabilidad de cualquier servicio en particular especificado allí.
Por ejemplo, para mi archivo Docker-Compose:
Versión: "3"
servicios:
web:
Imagen: "Nginx: Último"
Puertos:
- "80-85: 80"
$ Docker -compose up -d --scale web = 5
Aquí, el servicio se llama Web en la declaración YML, pero puede ser cualquier componente individual de su implementación, yo.E, front-end web, base de datos, demonio de monitoreo, etc. La sintaxis general requiere que elija uno de los elementos en la sección Servicios de nivel superior. También dependiendo de su servicio, es posible que deba modificar otras partes del script. Por ejemplo, el rango 80-85 de puertos de host para acomodar 5 instancias de contenedores nginx que escuchan en su puerto interno 80, pero el host escucha en puertos que van desde 80-85 y redirige el tráfico de cada puerto único a uno de los Instancias nginx.
Para ver qué contenedor obtiene qué número de puerto puede usar el comando:
$ Docker PS -A
Comando de imagen de ID de contenedor creado
D02E19D1B688 Nginx: último "nginx -g 'demonio de ..." hace aproximadamente un minuto
34b4dd74352d nginx: último "nginx -g 'demonio de ..." hace aproximadamente un minuto
98549c0f3dcf nginx: último "nginx -g 'demonio de ..." hace aproximadamente un minuto
Nombres de puertos de estado
Hasta un minuto 0.0.0.0: 83-> 80/TCP Project_web_1
Hasta un minuto 0.0.0.0: 82-> 80/tcp Project_web_3
Hasta un minuto 0.0.0.0: 81-> 80/tcp Project_web_2
…
Para escalar más de un servicio, debe mencionarlos individualmente con el indicador de escala y el parámetro de número para garantizar que se cree el número deseado de instancias. Por ejemplo, si tiene dos servicios diferentes, debe hacer algo como esto:
$ docker -compuesto up -d --scale servicio1 = 5 --scale Service2 = 6
Esta es la única forma de hacer esto, ya que no puede ejecutar el comando Docker -Compose Up -Scale dos veces para cada servicio. Hacerlo escalaría el servicio anterior a un solo contenedor.
Más tarde veremos cómo puede establecer el valor de escala para una imagen determinada, desde el interior del Docker-Compose.YML. En caso de que haya una opción de escala establecida en el archivo, el equivalente de CLI para la opción de escala anulará el valor en el archivo.
Escala
Esta opción se agregó en el archivo Docker-Compose versión 2.2 y se puede utilizar técnicamente, aunque no recomiendo usarlo. Se menciona aquí por integración.
Para mi Docker-Compose.Archivo YML:
versión 2.2 "
servicios:
web:
Imagen: "Nginx: Último"
Puertos:
- "80-85: 80"
Escala: 3
Esta es una opción perfectamente válida. Aunque funciona para Docker Engine 1.13.0 y superior.
Use réplicas en producción
En lugar de usar el comando de escala o el valor de escala obsoleto en su archivo de composición, debe usar la variable de réplica. Este es un entero simple asociado con un servicio determinado y funciona de la misma manera que la variable de escala. La diferencia crucial es que Docker Swarm está explícitamente destinado al sistema distribuido.
Esto significa que puede implementarse su aplicación en múltiples nodos máquinas virtuales o servidores físicos que se ejecutan en múltiples regiones diferentes y múltiples centros de datos diferentes. Esto le permite beneficiarse realmente de la multitud de instancias de servicio que se están ejecutando.
Le permite escalar su aplicación hacia arriba y hacia abajo modificando una sola variable. Además, ofrece una mayor resistencia contra el tiempo de inactividad. Si un centro de datos está inactivo o falla un enlace de red, los usuarios aún pueden acceder a la aplicación porque otra instancia se ejecuta en otro lugar. Si difunde su implementación de aplicaciones en múltiples regiones geográficas, e.G, EU, EE. UU. Y Asia Pacífico. Reducirá la latencia para los usuarios que intentan acceder a su aplicación desde dicha región.
Mientras que la escala de Docker-Compose es útil para entornos pequeños como un solo host de Docker que se ejecuta en producción. También es muy útil para los desarrolladores que ejecutan Docker en su estación de trabajo. Puede ayudarlos a probar cómo la aplicación se escalará en producción, y en diferentes circunstancias. Uso del comando de escala evita la molestia de configurar un nuevo enjambre de Docker.
Si tiene una instancia de Docker enjambre en ejecución, siéntase libre de jugar con réplicas. Aquí está la documentación sobre ese asunto,