Descripción general de la herramienta de escalador automático

En esta página, se presenta la herramienta Escalador automático para Spanner (escalador automático), un herramienta de código abierto que puedes usar como herramienta complementaria de Spanner. Esta herramienta permite aumentar o reducir automáticamente la capacidad de procesamiento de uno o más Instancias de Spanner según la capacidad que se use.

Para obtener más información sobre el escalamiento en Spanner, consulta Ajuste de escala automático de Spanner. Para Para obtener más información sobre la implementación de la herramienta Escalador automático, consulta los siguientes vínculos:

En esta página, se presentan las funciones, la arquitectura, la configuración y la implementación. topologías de Escalador automático. Los temas que continúan con esta serie te guían la implementación del Escalador automático en cada una de las diferentes topologías.

Escalador automático

El Escalador automático es útil para administrar el uso y el rendimiento Implementaciones de Spanner Para ayudarte a equilibrar el control de costos con tus necesidades de rendimiento, el Escalador automático supervisa tus instancias agrega o quita nodos o unidades de procesamiento para garantizar que se mantengan los siguientes parámetros:

Las implementaciones con ajuste de escala automático de Spanner permiten que tu infraestructura se adaptan y escalan automáticamente para cumplir con los requisitos de carga con poca o ninguna para la intervención del usuario. El ajuste de escala automático también aplica un tamaño adecuado a la infraestructura aprovisionada, lo que puede ayudarte a reducir costos.

Arquitectura

En esta sección, se describen los componentes del escalador automático y sus respectivos propósitos con más detalle.

La arquitectura de la herramienta Escalador automático Cloud Scheduler , dos Pub/Sub temas, dos Cloud Functions y Firestore . El API de Cloud Monitoring se usa para obtener el uso de CPU y las métricas de almacenamiento de Spanner individuales.

Cloud Scheduler

Usando Cloud Scheduler debes definir la frecuencia con la que el Escalador automático verifica tu los umbrales de métricas de escalamiento de instancias. Un trabajo de Cloud Scheduler puede verificar una o varias instancias al mismo tiempo. Puedes definir tantos programas de trabajos como necesites.

Función de sondeo de Cloud Functions

La Cloud Function de sondeo es responsable de recopilar y procesar las métricas de series temporales de uno o más instancias de Spanner. La sonda procesa previamente los datos de las métricas cada instancia de Spanner para que solo se puedan se evalúe y se envíe a la Cloud Function de Scaler. El procesamiento previo que realiza la Cloud Function de Poller, también simplifica el proceso de evaluando umbrales para las regiones, birregionales y multirregionales instancias de Spanner.

Cloud Functions de escalamiento

El escalador Cloud Function evalúa los datos recibidos de la Cloud Function de Poller y Determina si debes ajustar la cantidad de nodos o unidades de procesamiento. y, de ser así, en qué medida. La Cloud Function compara los valores de la métrica con el umbral, más o menos un valor permitido margen y ajusta la cantidad de nodos o unidades de procesamiento según la configuración método de escalamiento. Para obtener más detalles sobre los métodos de escalamiento, consulta Funciones del escalador automático .

Flujo operativo

En esta sección, se detalla el modelo operativo de la herramienta Escalador automático, como se muestra en en el siguiente diagrama de arquitectura.

Modelo operativo del escalador automático.

  1. Tú defines el programa, el tiempo y la frecuencia de tus trabajos de ajuste de escala automático de Google Cloud Scheduler.
  2. Según el programa que definas, Cloud Scheduler envía un mensaje que contenga una carga útil de JSON con los parámetros de configuración de la herramienta de escalador automático para una o más instancias de Spanner en el panel Tema de Pub/Sub.
  3. Cuando el mensaje se publica en el tema de sondeo, se crea una instancia de la función de sondeo de Cloud Functions para manejar el mensaje.
  4. La Cloud Function de sondeo lee la carga útil del mensaje y consulta la API de Cloud Monitoring para recuperar el métricas de uso para cada instancia de Spanner.
  5. Para cada instancia de Spanner enumerada en el mensaje, el La función de sondeo envía un mensaje a Scaling Pub/Sub que contiene las métricas y los parámetros de configuración para evaluar la una instancia de Spanner específica.
  6. Para cada mensaje enviado al tema Escalador, Cloud Function hace lo siguiente:

    1. Compara las métricas de la instancia de Spanner con umbrales configurados, más o menos un valor margen.

    Puedes configurar el margen por tu cuenta o usar el valor predeterminado. 1. Determina si se debe escalar la instancia. 1. Calcula la cantidad de nodos o unidades de procesamiento que la instancia según el método de escalamiento elegido.

  7. La función de escalamiento de Cloud Function recupera la hora en que la instancia se escaló por última vez desde Firestore y lo compara con para determinar si se permite aumentar o reducir la escala verticalmente en función del período de inactividad en los períodos de prueba.

  8. Si ya pasó el período de inactividad configurado, el escalador Cloud Function envía una solicitud a Spanner Instancia para aumentar o reducir la escala verticalmente.

A lo largo del flujo, el Escalador automático escribe un resumen de sus recomendaciones y acciones para Cloud Logging para su seguimiento y auditorías.

Sin importar la topología de implementación que elijas, la operación general de la herramienta Escalador automático seguirá siendo la misma.

Funciones del escalador automático

En esta sección, se describen las funciones principales de la herramienta Escalador automático.

Administra varias instancias

El escalador automático puede administrar varias instancias de Spanner en varios proyectos. Las instancias multirregionales, birregionales y regionales tienen y los diferentes umbrales de uso que se usan cuando se escala. Por ejemplo: Las implementaciones multirregionales y birregionales escalan al 45% de la CPU de alta prioridad de uso, mientras que las implementaciones regionales se escalan a un 65% de CPU de alta prioridad de red, con un valor mayor o menor margen. Para obtener más información sobre los diferentes umbrales de escalamiento, consulta Alertas de uso de CPU elevado.

Parámetros de configuración independientes

Cada instancia de Spanner con ajuste de escala automático puede tener uno o más sondeos horarios. Cada programa de sondeo tiene su propio conjunto de parámetros de configuración.

Estos parámetros determinan los siguientes factores:

  • La cantidad mínima y máxima de nodos o unidades de procesamiento que controlan cómo pequeña o grande puede ser tu instancia, lo que te ayuda a controlar los costos.
  • El método de escalamiento que se usa para ajustar la instancia de Spanner específica a tu carga de trabajo.
  • Los períodos de inactividad. para permitir que Spanner administre divisiones de datos.

Distintos métodos de escalamiento para diferentes cargas de trabajo

El escalador automático proporciona tres métodos diferentes de escalamiento para aumentar y disminuir la escala Escala tus instancias de Spanner: de manera gradual, lineal y directa. Cada está diseñado para admitir distintos tipos de cargas de trabajo. Puedes aplicar uno o más métodos a cada instancia de Spanner cuyo ajuste de escala automático se crea horarios de votación independientes.

Paso a paso

El escalamiento paso a paso es útil para cargas de trabajo que tienen picos pequeños o múltiples. Integra que aprovisiona la capacidad para suavizarlos todos con un solo evento de ajuste de escala automático.

En el siguiente gráfico, se muestra un patrón de carga con varias plataformas o pasos de carga, en el que cada paso tiene varios picos pequeños. Este patrón es adecuado para el método gradual.

Patrón de carga con varios pasos.

Cuando se supera el umbral de carga, este método aprovisiona y quita nodos o unidades de procesamiento con un número fijo pero configurable. Por ejemplo, tres nodos se agregan o quitan para cada acción de escalamiento. Cuando cambias la configuración, permite agregar o quitar mayores incrementos de capacidad en cualquier momento.

Lineal

El escalamiento lineal se usa mejor con patrones de carga que cambian de manera más gradual o tienen algunos picos grandes. Con el método, se calcula la cantidad mínima de nodos o unidades de procesamiento necesarios para mantener el uso por debajo del umbral de escalamiento. El la cantidad de nodos o unidades de procesamiento que se agregan o quitan en cada evento de escalamiento es entre otros, sin limitarse a un importe fijo en los pasos.

En el patrón de carga de muestra del siguiente gráfico, se muestran mayores aumentos y disminuciones repentinos en la carga. Estas fluctuaciones no se agrupan en pasos perceptibles como en el gráfico anterior. Este patrón se maneja con mayor facilidad mediante el escalamiento lineal.

Patrón de carga con fluctuaciones.

El escalador automático usa la proporción entre el uso observado y el de uso para calcular si se deben agregar o quitar nodos, de unidades de procesamiento a partir de la cantidad total actual.

La fórmula para calcular la cantidad nueva de nodos o unidades de procesamiento es la siguiente:

newSize = currentSize * currentUtilization / utilizationThreshold

Direct

El escalamiento directo proporciona un aumento inmediato de capacidad. Este método está diseñado para admitir cargas de trabajo por lotes en las que se requiere un recuento de nodos predeterminado más alto de forma periódica en un programa con hora de inicio conocida. Este método escala la instancia hasta el número máximo de nodos o unidades de procesamiento especificado en del programa y está pensado para usarse además de una línea de pedido .

En el siguiente gráfico, se muestra el gran aumento planificado en la carga con capacidad aprovisionada de manera previa del escalador automático para usar el método directo.

Patrón de carga con ajuste de escala directo aprovisionado de forma previa

Una vez que se completa la carga de trabajo por lotes y el uso vuelve a los niveles normales, según la configuración, se aplica un escalamiento lineal o gradual para reducir la escala de la instancia de forma automática.

Métodos de implementación

La herramienta Escalador automático se puede implementar en un proyecto individual o junto con las instancias de Spanner que administra. La herramienta Escalador automático está diseñada para permiten flexibilidad y puede adaptarse a la separación existente de responsabilidades entre los equipos de operaciones y aplicaciones. El responsable de configurar el ajuste de escala automático de las instancias de Spanner puede centralizarse con un único equipo de operaciones o se puede distribuir a que los equipos estén más cerca de las aplicaciones que entregan individuales.

Los diferentes modelos de implementación se analizan con más detalle en Topologías de implementación.

Plataforma sin servidores para facilitar la implementación y la administración

La herramienta Escalador automático se compila solo con las herramientas sin servidores y con poca administración de Google Cloud herramientas, como Cloud Functions, Pub/Sub, Cloud Scheduler y Firestore. Este enfoque minimiza el costo y la sobrecarga operativa de ejecutar la herramienta Escalador automático

Con las herramientas integradas de Google Cloud, el escalador automático puede tomar todo ventaja de IAM (IAM) para la autenticación y autorización.

Configuración

La herramienta Escalador automático tiene diferentes opciones de configuración que puedes usar para administrar el escalamiento de tus implementaciones de Spanner. Las siguientes secciones describirás las opciones de configuración básica y las opciones de configuración más avanzadas.

Configuración básica

El escalador automático administra las instancias de Spanner mediante la configuración definidas en Cloud Scheduler. Si varias instancias de Spanner necesitan se sondeen con el mismo intervalo, te recomendamos que las configures mismo trabajo de Cloud Scheduler. La configuración de cada instancia está representados como un objeto JSON. El siguiente es un ejemplo de una configuración en la que dos instancias de Spanner se administran con una Trabajo de Cloud Scheduler:

   [
    {
        "projectId": "my-spanner-project", "instanceId": "spanner1",
        "scalerPubSubTopic": "projects/my-spanner-project/topics/spanner-scaling",
        "units": "NODES", "minSize": 1, "maxSize": 3
     },
     {
        "projectId":
        "different-project", "instanceId": "another-spanner1", "scalerPubSubTopic":
        "projects/my-spanner-project/topics/spanner-scaling", "units":
        "PROCESSING_UNITS", "minSize": 500, "maxSize": 3000, "scalingMethod": "DIRECT"
    }
   ]

Las instancias de Spanner pueden tener varios parámetros de configuración en diferentes Trabajos de Cloud Scheduler Por ejemplo, una instancia puede tener una configuración de escalador automático con el método lineal para operaciones normales, pero también tiene otra configuración de escalador automático con el método directo para cargas de trabajo por lotes planificadas.

Cuando se ejecuta el trabajo de Cloud Scheduler, se envía un mensaje de Pub/Sub al tema de sondeo de Pub/Sub. La carga útil de este mensaje es el arreglo JSON de los objetos de configuración para todas las instancias configuradas en el mismo trabajo. Consulta la lista completa de opciones de configuración en el archivo README de sondeo.

Configuración avanzada

El escalador automático tiene opciones de configuración avanzadas que te permiten definir para controlar cuándo y cómo se administran las instancias. Lo siguiente estas secciones presentan una selección de estos controles.

Límites personalizados

El Escalador automático determina la cantidad de nodos o unidades de procesamiento que se agregar o restar a una instancia con la umbrales recomendados de Spanner para las siguientes métricas de carga:

  • CPU de alta prioridad
  • CPU promedio móvil de 24 horas
  • Uso de almacenamiento

Te recomendamos que uses los umbrales predeterminados como se describe en Crea alertas para las métricas de Spanner . Sin embargo, en algunos casos, tal vez quiera modificar los umbrales que usan la herramienta Escalador automático. Por ejemplo, podrías usar umbrales más bajos para que el El escalador automático reacciona más rápido que los umbrales más altos. Esta modificación ayuda a evitar que las alertas se activen en umbrales más altos.

Métricas personalizadas

Si bien las métricas predeterminadas del Escalador automático abordan de escalamiento, hay algunos casos en los que podrías necesitar especificar propias métricas para determinar cuándo aumentar o reducir la escala. Para estas situaciones, puedes definir métricas personalizadas en la configuración con metrics propiedad.

Márgenes

Un margen define un límite superior y uno inferior alrededor del umbral. El escalador automático solo activa un evento de ajuste de escala automático si el valor de la métrica es mayor que el límite superior o menor que el límite inferior.

El objetivo de este parámetro es evitar que los eventos de ajuste de escala automático se activen para fluctuaciones pequeñas de la carga de trabajo alrededor del umbral, lo que reduce la cantidad de fluctuación en las acciones del escalador automático. En conjunto, el umbral y el margen definen la siguiente rango, según el valor que desees que tenga el valor de la métrica:

[threshold - margin, threshold + margin]
. Cuanto más pequeño es el margen, más estrecho es el rango, lo que da como resultado una mayor la probabilidad de que se active un evento de ajuste de escala automático.

Especificar un parámetro de margen para una métrica es opcional y tiene un valor predeterminado de cinco puntos porcentuales tanto antes como debajo del parámetro.

Topologías de implementación

Para implementar la herramienta Escalador automático, decide cuál de las siguientes topologías es la mejor para satisfacer tus necesidades técnicas y operativas:

  • Topología por proyecto: la infraestructura del escalador automático se implementa en en el mismo proyecto que Spanner, que necesita un ajuste de escala automático.
  • Topología centralizada: La herramienta Escalador automático se implementa en un proyecto. administra una o más instancias de Spanner en proyectos diferentes.
  • Topología distribuida:: se implementa la mayor parte de la infraestructura del escalador automático. en un proyecto, pero algunos componentes de la infraestructura se implementan Instancias de Spanner con ajuste de escala automático en diferentes proyectos.

Topología por proyecto

En una implementación de topología por proyecto, cada proyecto con una instancia de Spanner que necesita ajuste de escala automático también tiene su propia implementación independiente de los componentes del escalador automático. Recomendamos esta topología para equipos independientes que desean administrar su propia infraestructura y configuración del escalador automático. También es un buen punto de partida para probar las capacidades de la herramienta Escalador automático.

En el siguiente diagrama, se muestra una vista conceptual de alto nivel de una implementación por proyecto.

Implementación conceptual por proyecto

Las implementaciones por proyecto representadas en el diagrama anterior tienen estas características:

  • Dos aplicaciones, la Aplicación 1 y la Aplicación 2, cada una usa su propia instancias de Spanner.
  • Las instancias de Spanner (A) residen en la Aplicación 1 y Proyectos Application 2.
  • Se implementa un escalador automático independiente (B) en cada proyecto para controlar el el ajuste de escala automático de las instancias dentro de un proyecto.

Para obtener un diagrama más detallado de una implementación por proyecto, consulta la Arquitectura sección.

Una implementación por proyecto tiene las siguientes ventajas y desventajas.

Ventajas:

  • Diseño más simple: La topología por proyecto es el diseño más simple de la de tres topologías, ya que todos los componentes del escalador automático se implementan junto con las instancias de Spanner para el ajuste de escala automático.
  • Configuración: El control sobre los parámetros del programador pertenece al equipo. que posee la instancia de Spanner, lo que le da al equipo más la libertad de adaptar la herramienta Escalador automático a sus necesidades topología distribuida.
  • Límite claro de la responsabilidad de la infraestructura: el diseño de una topología por proyecto establece un límite claro de responsabilidad y seguridad en la infraestructura del escalador automático, debido a que el propietario del equipo de las instancias de Spanner también es el propietario de la infraestructura del escalador automático.

Desventajas:

  • Mantenimiento más general: Cada equipo es responsable del escalador automático. infraestructura y configuración, por lo que puede ser difícil asegurarse que todas las herramientas del Escalador automático de la empresa sigan la misma actualización lineamientos.
  • Auditoría más compleja: debido a que cada equipo tiene un alto nivel de control, una auditoría centralizada puede volverse más compleja.

Si quieres obtener más información para configurar el escalador automático con una topología por proyecto, consulta Implementa una herramienta de Escalador automático centralizada o por proyecto para Spanner.

Topología centralizada

Al igual que en la topología por proyecto, en una implementación centralizada de la topología, todos los de la herramienta Escalador automático residen en el mismo proyecto. Sin embargo, las instancias de Spanner se encuentran en proyectos diferentes. Esta es adecuado para un equipo que administra la configuración y la infraestructura varias instancias de Spanner desde una sola implementación del escalador automático de forma centralizada.

En el siguiente diagrama, se muestra una vista conceptual de alto nivel de una implementación de proyecto centralizado:

Implementación conceptual de proyecto centralizado

La implementación centralizada que se muestra en el diagrama anterior tiene las siguientes características:

  • Dos aplicaciones, la Aplicación 1 y la Aplicación 2, cada una usa su propia instancias de Spanner.
  • Las instancias de Spanner (A) se encuentran en la Aplicación 1 y Proyectos Application 2.
  • El escalador automático (B) se implementa en un proyecto independiente para controlar la el ajuste de escala automático de las instancias de Spanner en las instancias Proyectos Application 2.

Para obtener un diagrama más detallado de una implementación centralizada de un proyecto, consulta Implementa una herramienta de Escalador automático centralizada o por proyecto para Spanner.

Una implementación centralizada tiene las siguientes ventajas y desventajas.

Ventajas:

  • Infraestructura y configuración centralizadas: Un solo equipo controla las del programador y la infraestructura del escalador automático. Este enfoque puede ser útiles en industrias muy reguladas.
  • Menos mantenimiento general: Por lo general, el mantenimiento y la configuración son menores. y el esfuerzo de mantenimiento en comparación con una implementación por proyecto.
  • Políticas y auditoría centralizadas: las prácticas recomendadas entre los equipos pueden ser más fáciles de especificar y aplicar. Es posible que las auditorías sean más fáciles de ejecutar.

Desventajas:

  • Configuración centralizada: Cualquier cambio en los parámetros del escalador automático debe pasar por el equipo centralizado, a pesar de que el equipo solicite cambio es propietario de la instancia de Spanner.
  • Posible riesgo adicional: El propio equipo centralizado podría volverse un punto único de fallo, incluso si la infraestructura del escalador automático está diseñada teniendo en cuenta la alta disponibilidad.

Si quieres ver un instructivo paso a paso para configurar la herramienta Escalador automático con esta opción, consulta Implementa una herramienta de escalador automático centralizada o por proyecto para Spanner.

Topología distribuida

En una implementación de topología distribuida, Cloud Scheduler y Las instancias de Spanner que necesitan un ajuste de escala automático residen en en un proyecto final. Los componentes restantes de la herramienta Escalador automático residen proyecto administrado. Esta implementación es híbrida. Los equipos a cargo de Las instancias de Spanner solo administran la configuración del escalador automático parámetros para sus instancias, y un equipo central administra Infraestructura del escalador automático.

En el siguiente diagrama, se muestra una vista conceptual de alto nivel de un la implementación de proyectos distribuidos.

Implementación conceptual de proyecto distribuido.

La implementación híbrida que se muestra en el diagrama anterior tiene las siguientes características:

  • Dos aplicaciones, la Aplicación 1 y la Aplicación 2, usan las suyas instancias de Spanner.
  • Las instancias de Spanner (A) están en los proyectos de aplicación 1 y aplicación 2.
  • Se implementa un componente (C) independiente de Cloud Scheduler en cada proyecto: Aplicación 1 y Aplicación 2.
  • Los componentes restantes del escalador automático (B) se implementan en un proyecto independiente.
  • El escalador automático realiza un ajuste de escala automático de las instancias de Spanner en Los proyectos de la Aplicación 1 y la Aplicación 2 con la configuración enviada por los componentes independientes de Cloud Scheduler en cada proyecto.

Para obtener un diagrama más detallado de la implementación centralizada del proyecto, consulta Implementa una herramienta de Escalador automático distribuida para Spanner.

Una implementación distribuida tiene las siguientes ventajas y desventajas.

Ventajas:

  • Los equipos de aplicaciones controlan la configuración y los programas: Cloud Scheduler se implementa junto con Spanner con ajuste de escala automático, lo que les da a los equipos de aplicaciones más control de la configuración y la programación.
  • El equipo de operaciones controla la infraestructura: Son los componentes principales de la La herramienta de ajuste de escala automático se implementa de forma centralizada para que los equipos de operaciones la infraestructura del escalador automático.
  • Mantenimiento centralizado: La infraestructura del escalador automático está centralizada, lo que reduce la sobrecarga.

Desventajas:

  • Configuración más compleja: Los equipos de aplicaciones deben proporcionar el servicio. cuentas para escribir en el tema de sondeo.
  • Posible riesgo adicional: La infraestructura compartida podría convertirse en punto único de fallo, incluso si la infraestructura está diseñada con altos niveles de tu disponibilidad.

Si quieres aprender a configurar la herramienta Escalador automático en una implementación distribuida, consulta Implementa una herramienta de Escalador automático distribuida para Spanner.

Divisiones de datos

Spanner asigna rangos de datos llamados divisiones a nodos o subdivisiones de un nodo, llamadas unidades de procesamiento. El nodo o las unidades de procesamiento administrar y entregar los datos en las divisiones repartidas. Las divisiones de datos se crean en función de varios factores, como el volumen de datos y los patrones de acceso. Para ver más más detallados, consulta Spanner: Esquema y modelo de datos .

Los datos se organizan en divisiones, y Spanner administra automáticamente divisiones. Cuando la herramienta Escalador automático agrega o quita nodos o unidades de procesamiento debe permitir que el backend de Spanner tenga tiempo suficiente para reasignar reorganizar las divisiones a medida que se agrega o quita capacidad nueva de las instancias.

La herramienta Escalador automático usa períodos de inactividad en eventos de escalamiento vertical y reducción de escala para controlar la rapidez con la que puede agregar o quitar nodos o unidades de procesamiento de un instancia. Este método permite que la instancia tenga el tiempo necesario para reorganizar la relaciones entre las notas de procesamiento o las unidades de procesamiento y las divisiones de datos. De de forma predeterminada, los períodos de espera para el escalamiento vertical y la reducción de la escala se configuran valores mínimos:

  • Valor de escalamiento vertical: 5 minutos
  • Valor de reducción de escala: 30 minutos

Para obtener más información sobre las recomendaciones de escalamiento y los períodos de inactividad, consulta Escala instancias de Spanner.

Costos

El consumo de recursos de la herramienta Escalador automático es mínimo, por lo que, para la mayoría de los casos de uso, los costos son insignificantes. Cuando se usa el escalador automático en Google Cloud, no hay costo. Por ejemplo , ejecutando una herramienta de Escalador automático para administrar 3 instancias de Spanner con un el intervalo de sondeo de 5 minutos para cada instancia está disponible sin costo. Esta la estimación incluye lo siguiente:

  • 3 trabajos de Cloud Scheduler
  • 0.15 GB de mensajes de Pub/Sub
  • 51840 invocaciones de Cloud Functions de 500 ms
  • Menos de 10 MB de datos en Firestore

La estimación no incluye los costos de operación de la base de datos de Spanner. Usa el Calculadora de precios para generar una estimación de costos según el uso previsto.

¿Qué sigue?