Visão geral da ferramenta Escalonador automático

Nesta página, apresentamos a ferramenta Escalonador automático para o Spanner (escalonador automático), uma ferramenta de código aberto que você pode ser usada como ferramenta complementar ao Spanner. Esta ferramenta permite aumentar ou reduzir automaticamente a capacidade de computação em um ou mais Instâncias do Spanner com base na capacidade em uso.

Para mais informações sobre escalonamento no Spanner, consulte Como fazer o escalonamento automático do Spanner. Para informações sobre como implantar a ferramenta de escalonamento automático, consulte:

Nesta página, apresentamos os recursos, a arquitetura, a configuração e a implantação e topologias do escalonador automático. Os tópicos desta série orientam você com a implantação do escalonador automático em cada topologia.

Escalonador automático

A ferramenta de escalonamento automático é útil para gerenciar a utilização e o desempenho de Implantações do Spanner. Para ajudar você a equilibrar o controle de custos desempenho, a ferramenta Escalonador automático monitora suas instâncias e automaticamente adiciona ou remove nós ou unidades de processamento para ajudar a garantir que eles permaneçam dentro os seguintes parâmetros:

Com o escalonamento automático de implantações do Spanner, sua infraestrutura pode se adaptar e escalonar automaticamente para atender aos requisitos de carga com pouca ou nenhuma intervenção. O escalonamento automático também dimensiona a infraestrutura provisionada, o que pode ajudar a reduzir custos.

Arquitetura

Nesta seção, descrevemos os componentes do escalonador automático e as respectivas finalidades em mais detalhes.

A arquitetura da ferramenta escalonador automático consiste em Cloud Scheduler , dois Pub/Sub dois tópicos, Cloud Functions e Firestore do Google. A API Cloud Monitoring é usado para acessar as métricas de uso da CPU e de armazenamento do Spanner. instâncias.

Cloud Scheduler

Usando Cloud Scheduler , você define a frequência com que a ferramenta de escalonamento automático verifica o Spanner instâncias que escalam limites de métricas. Um job do Cloud Scheduler pode verificar instâncias individuais ou ao mesmo tempo. É possível definir quantas programações de jobs forem necessárias.

Poller Cloud Function

A função do Cloud Poller é responsável por coletar e processar as métricas de séries temporais para um ou mais instâncias do Spanner. O Poller pré-processa os dados de métricas cada instância do Spanner para que apenas os pontos de dados mais relevantes sejam avaliado e enviado para a função do Cloud do escalonador automático. O pré-processamento feita pela função do Cloud Poller também simplifica o processo de avaliação dos limites para regiões, birregionais e multirregionais instâncias do Spanner.

Scaler Cloud Function

O escalonador função do Cloud avalia os pontos de dados recebidos da função do Cloud Poller e determina se é preciso ajustar o número de nós ou unidades de processamento e, em caso afirmativo, em quanto. A função do Cloud compara os valores das métricas com o limite, mais ou menos um valor margem e ajusta o número de nós ou unidades de processamento com base no método de escalonamento. Para mais detalhes sobre métodos de escalonamento, consulte Recursos do escalonador automático. do Google.

Fluxo operacional

Nesta seção, detalhamos o modelo operacional da ferramenta Autoescalador, conforme mostrado em diagrama de arquitetura a seguir.

Modelo operacional do escalonador automático.

  1. Você define a programação, o horário e a frequência dos jobs de escalonamento automático no Cloud Scheduler.
  2. Na programação que você define, o Cloud Scheduler envia uma mensagem que contém um payload JSON com os parâmetros de configuração da ferramenta "Escalonador automático" uma ou mais instâncias do Spanner no painel tópico do Pub/Sub.
  3. Quando a mensagem é publicada no tópico de pesquisa, uma instância da função de pesquisa do Cloud Functions é criada para processar a mensagem.
  4. A função do Cloud Poller lê o payload da mensagem e consulta a API Cloud Monitoring para recuperar os de uso de CPU para cada instância do Spanner.
  5. Para cada instância do Spanner enumerada na mensagem, o A função de pesquisa envia uma mensagem para o Pub/Sub de escalonamento contendo as métricas e os parâmetros de configuração a serem avaliados para o instância específica do Spanner.
  6. Para cada mensagem enviada para o tópico "Escalonador", o A função do Cloud faz o seguinte:

    1. Compara as métricas da instância do Spanner com as limites configurados, mais ou menos um margin.

    Você pode configurar a margem ou usar o valor padrão. 1. Determina se a instância deve ser escalonada. 1. Calcula o número de nós ou unidades de processamento que a instância precisam ser dimensionados com base no método escolhido.

  7. A função do Cloud de escalonamento recupera o horário em que a instância foi escalonada pela última vez do Firestore e compara com o para determinar se o escalonamento vertical é permitido com base no período de espera períodos.

  8. Se o período de espera configurado tiver passado, o escalonador A função do Cloud envia uma solicitação ao Spanner para escalonar verticalmente.

Ao longo do fluxo, a ferramenta de escalonamento automático grava um resumo das recomendações e ações Cloud Logging (em inglês) para acompanhamento e auditoria.

Independentemente da topologia de implantação escolhido, a operação geral do escalonador automático permanece a mesma.

Recursos do escalonador automático

Nesta seção, descrevemos os principais recursos da ferramenta Autoescalador.

Gerenciar várias instâncias

O escalonador automático gerencia várias instâncias do Spanner em vários projetos. Instâncias multirregionais, birregionais e regionais têm limites de utilização diferentes usados no escalonamento. Por exemplo: as implantações multirregionais e birregionais são escalonadas em 45% de CPU de alta prioridade enquanto as implantações regionais são escalonadas para 65% de CPU de alta prioridade do usuário, mais ou menos um valor margin. Para mais informações sobre os diferentes limites de escalonamento, consulte Alertas de alta utilização da CPU.

Parâmetros de configuração independentes

Cada instância do Spanner com escalonamento automático pode ter uma ou mais pesquisas programações. Cada programação de pesquisa tem o próprio conjunto de parâmetros de configuração.

Esses parâmetros determinam os seguintes fatores:

  • Os números mínimo e máximo de nós ou unidades de processamento que controlam como sua instância pode ser pequena ou grande, ajudando você a controlar os custos.
  • O método de escalonamento usado para ajustar a instância do Spanner específica para sua carga de trabalho.
  • Os períodos de espera para permitir que o Spanner gerencie divisões de dados.

Diferentes métodos de escalonamento para cargas de trabalho distintas

A ferramenta de escalonamento automático fornece três métodos de escalonamento para cima e para baixo escalonar suas instâncias do Spanner: por etapas, lineares e diretas. Cada foi projetado para dar suporte a diferentes tipos de cargas de trabalho. É possível aplicar uma ou mais métodos para cada instância do Spanner que está sendo escalonada automaticamente quando você cria horários de votação independentes.

Etapas

O escalonamento gradual é útil para cargas de trabalho com picos pequenos ou múltiplos. Ela provisiona capacidade para suavizar tudo isso com um único evento de escalonamento automático.

O gráfico a seguir mostra um padrão de carga com vários platôs ou etapas de carga, em que cada um tem vários picos pequenos. Esse padrão é adequado para o método por etapas.

Padrão de carga com várias etapas.

Quando o limite de carga é ultrapassado, este método provisiona e remove nós ou usando um número fixo, mas configurável. Por exemplo, três nós para cada ação de escalonamento. Ao alterar a configuração, você pode permitir a adição ou remoção de incrementos de capacidade maiores a qualquer momento.

Linear

O escalonamento linear é melhor usado com padrões de carga que mudam mais gradualmente ou têm alguns picos grandes. O método calcula o número mínimo de nós ou unidades de processamento necessárias para manter a utilização abaixo do limite de escalonamento. A o número de nós ou unidades de processamento adicionados ou removidos em cada evento de escalonamento é não se limitando a uma taxa de passos fixa.

O padrão de carregamento de amostra no gráfico a seguir mostra aumentos e quedas repentinas maiores na carga. Essas flutuações não são agrupadas em etapas compreensíveis como estão no gráfico anterior. Esse padrão é facilitado com mais facilidade usando o escalonamento linear.

Carregar padrão com flutuações.

A ferramenta de escalonamento automático usa a proporção da utilização observada sobre o o limite de utilização para calcular se devem adicionar ou subtrair nós ou de unidades de processamento com base no número total atual.

A fórmula para calcular o novo número de nós ou unidades de processamento é a seguinte:

newSize = currentSize * currentUtilization / utilizationThreshold

Direta

O escalonamento direto aumenta a capacidade imediatamente. Esse método destina-se a aceitar cargas de trabalho em lote em que uma contagem de nós maior predeterminada é necessária periodicamente em uma programação com um horário de início conhecido. Esse método escalona instância até o número máximo de nós ou unidades de processamento especificados o cronograma e deve ser usado em adição a uma estratégia linear .

O gráfico a seguir mostra o grande aumento planejado na carga, que o escalonador automático pré-provisionado para usar o método direto.

Padrão de carga com escalonamento direto pré-provisionado.

Depois que a carga de trabalho em lote for concluída e a utilização retornar aos níveis normais, dependendo da configuração, o escalonamento linear ou em etapa será aplicado para reduzir a instância automaticamente.

Métodos de implantação

A ferramenta de escalonamento automático pode ser implantada em um projeto individual ou em conjunto as instâncias do Spanner que gerencia. A ferramenta escalonador automático foi projetada para permitir flexibilidade e acomodar a separação existente de responsabilidades de trabalho entre as equipes de operação e de aplicativos. A a responsabilidade de configurar o escalonamento automático das instâncias do Spanner. pode ser centralizado com uma única equipe de operações ou distribuído para as equipes mais próximas dos aplicativos atendidos pelo Spanner instâncias.

Os diferentes modelos de implantação são discutidos com mais detalhes em Topologias de implantação.

Sem servidor para facilitar a implantação e o gerenciamento

A ferramenta de escalonamento automático foi criada usando apenas o Google Cloud sem servidor e de baixo gerenciamento como o Cloud Functions, Pub/Sub, Cloud Scheduler e Firestore. Essa abordagem minimiza o custo e o overhead operacional da execução da ferramenta.

Com as ferramentas integradas do Google Cloud, o escalonador automático pode processar vantagem do IAM (IAM) para autenticação e autorização.

Configuração

A ferramenta escalonador automático tem diferentes opções de configuração que podem ser usadas para gerenciar o escalonamento das implantações do Spanner. As próximas seções descrever as opções de configuração básica e as opções de configuração mais avançadas.

Configuração básica

O escalonador automático gerencia as instâncias do Spanner por meio da configuração definidos no Cloud Scheduler. Se várias instâncias do Spanner precisarem sejam consultadas com o mesmo intervalo, recomendamos que você as configure no o mesmo job do Cloud Scheduler. A configuração de cada instância é representado como um objeto JSON. Este é um exemplo de uma configuração em que duas instâncias do Spanner são gerenciadas Job do 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"
    }
   ]

As instâncias do Spanner podem ter várias configurações em diferentes jobs do Cloud Scheduler. Por exemplo, uma instância pode ter uma configuração do escalonador automático com o método linear para operações normais, mas também ter outra configuração do escalonador automático com o método direto para cargas de trabalho em lote planejada.

Quando o job do Cloud Scheduler é executado, ele envia uma mensagem do Pub/Sub para o tópico de pesquisa do Pub/Sub. O payload dessa mensagem é a matriz JSON dos objetos de configuração para todas as instâncias configuradas no mesmo job. Consulte a lista completa de opções de configuração no arquivo README da função de pesquisa.

Configuração avançada

A ferramenta "Escalonador automático" tem opções de configuração avançadas que permitem que você controlar quando e como as instâncias do Spanner são gerenciadas. O seguinte nestas seções, há uma seleção desses controles.

Limites personalizados

A ferramenta de escalonamento automático determina o número de nós ou unidades de processamento adicionadas ou subtraídas de uma instância usando o limites recomendados do Spanner para as seguintes métricas de carregamento:

  • CPU de alta prioridade
  • CPU em média contínua de 24 horas
  • Uso do armazenamento

Recomendamos que você use os limites padrão, conforme descrito em Como criar alertas para métricas do Spanner do Google. No entanto, em alguns casos, talvez você queira modificar os limites usados pelo usando a ferramenta de escalonamento automático. Por exemplo, você pode usar limites mais baixos para tornar A ferramenta de escalonamento automático reage mais rapidamente do que para limites mais altos. Esta modificação evita que alertas sejam acionados em limiares mais altos.

Métricas personalizadas

As métricas padrão na ferramenta escalonador automático abordam a maior parte do desempenho de escalonamento, há alguns casos em que pode ser necessário especificar métricas próprias usadas para determinar quando escalonar horizontal e verticalmente. Para essas situações, você define métricas personalizadas na configuração usando o metrics .

Margens

Uma margem define um limite superior e um limite menor em torno do limite. Autoescalador de escalonamento automático só aciona um evento de escalonamento automático se o valor da métrica é maior que o limite máximo ou inferior ao limite mínimo.

O objetivo desse parâmetro é evitar que eventos de escalonamento automático sejam acionados por pequenas flutuações de carga de trabalho ao redor do limite, reduzindo a quantidade de flutuação nas ações do escalonador automático. O limite e a margem juntos definem o intervalo a seguir, de acordo com o valor da métrica desejado:

[threshold - margin, threshold + margin]
: Quanto menor a margem, mais estreito será o intervalo, resultando em uma probabilidade de um evento de escalonamento automático ser acionado.

Especificar um parâmetro de margem para uma métrica é opcional e o padrão é cinco pontos percentuais antes e abaixo do parâmetro.

Topologias de implantação

Para implantar a ferramenta escalonador automático, decida qual das topologias a seguir é a melhor para atender às suas necessidades técnicas e operacionais:

  • Topologia por projeto: a infraestrutura do escalonador automático é implantada na no mesmo projeto que o Spanner, que precisa ser escalonado automaticamente.
  • Topologia centralizada: a ferramenta do escalonador automático é implantada em um projeto e gerencia uma ou mais instâncias do Spanner em projetos diferentes.
  • Topologia distribuída:: a maior parte da infraestrutura do escalonador automático foi implantada em um projeto, mas alguns componentes de infraestrutura são implantados com o Instâncias do Spanner sendo escalonadas automaticamente em projetos diferentes.

Topologia por projeto

Em uma implantação de topologia por projeto, cada projeto com uma instância do Spanner que precisa ser escalonado automaticamente também tem sua própria implantação independente dos componentes do escalonador automático. Recomendamos essa topologia para equipes independentes que querem gerenciar a própria configuração e infraestrutura para o escalonador automático. É também uma bom ponto de partida para testar os recursos da ferramenta Escalonador automático.

No diagrama a seguir, mostramos uma visão conceitual de alto nível de uma implantação por projeto.

Implantação conceitual por projeto.

As implantações por projeto descritas no diagrama anterior têm essas características:

  • Dois aplicativos, Aplicativo 1 e Aplicativo 2, cada um usa seu próprio instâncias do Spanner.
  • As instâncias do Spanner (A) estão nos respectivos aplicativos 1 e Projetos do aplicativo 2.
  • Um escalonador automático independente (B) é implantado em cada projeto para controlar os escalonamento automático das instâncias de um projeto.

Para um diagrama mais detalhado de uma implantação por projeto, consulte a Arquitetura nesta seção.

Uma implantação por projeto tem as seguintes vantagens e desvantagens.

Vantagens:

  • Design mais simples: a topologia por projeto é o design mais simples da três topologias, uma vez que todos os componentes do escalonador automático são implantados ao lado instâncias do Spanner que estão sendo escalonadas automaticamente.
  • Configuração: o controle sobre os parâmetros do programador pertence à equipe. proprietária da instância do Spanner, o que dá à equipe mais para adaptar a ferramenta de acordo com as necessidades do que uma ferramenta na topologia distribuída.
  • Liberação clara da responsabilidade da infraestrutura: o design de uma topologia por projeto estabelece um limite claro de responsabilidade e segurança em relação à infraestrutura do escalonador automático porque o proprietário da equipe das instâncias do Spanner também é proprietária da infraestrutura do escalonador automático.

Desvantagens:

  • Maior manutenção geral: cada equipe é responsável pelo escalonador automático e infraestrutura, o que dificulta a verificação que todas as ferramentas de escalonador automático da empresa sigam a mesma atualização diretrizes.
  • Auditoria mais complexa: como cada equipe tem um alto nível de controle, uma auditoria centralizada pode se tornar mais complexa.

Para saber como configurar o escalonador automático usando uma topologia por projeto, consulte Implante uma ferramenta de escalonamento automático centralizado ou por projeto no Spanner.

Topologia centralizada

Como na topologia por projeto, em uma implantação de topologia centralizada, todos os da ferramenta Escalonador automático residam no mesmo projeto. No entanto, as instâncias do Spanner estão localizadas em diferentes projetos. Isso implantação é indicada para uma equipe que gerencia a configuração e a infraestrutura do várias instâncias do Spanner de uma única implantação do escalonador automático. ferramenta em um lugar centralizado.

O diagrama a seguir mostra uma visão conceitual de alto nível de uma implantação de projeto centralizado:

Implantação conceitual de projeto centralizado.

A implantação centralizada mostrada no diagrama anterior tem as seguintes características:

  • Dois aplicativos, Aplicativo 1 e Aplicativo 2, cada um usa seu próprio instâncias do Spanner.
  • As instâncias do Spanner (A) estão nos respectivos Aplicativos 1 e Projetos do aplicativo 2.
  • O escalonador automático (B) é implantado em um projeto separado para controlar os o escalonamento automático das instâncias do Spanner nos aplicativos 1 e Projetos do aplicativo 2.

Para um diagrama mais detalhado de uma implantação de projeto centralizado, consulte Implante uma ferramenta de escalonamento automático centralizado ou por projeto no Spanner.

Uma implantação centralizada tem as seguintes vantagens e desvantagens:

Vantagens:

  • Configuração e infraestrutura centralizadas: uma única equipe controla o parâmetros do programador e a infraestrutura do escalonador automático. Essa abordagem pode ser úteis em setores muito regulamentados.
  • Menor manutenção geral: a manutenção e a configuração geralmente são menores. esforço de manter em comparação com uma implantação por projeto.
  • Políticas centralizadas e auditoria: pode ser mais fácil especificar e encapsular as práticas recomendadas entre equipes. Pode ser mais fácil fazer as auditorias.

Desvantagens:

  • Configuração centralizada: qualquer alteração nos parâmetros do escalonador automático precisa passar pela equipe centralizada, mesmo que a equipe solicite o a mudança é proprietária da instância do Spanner.
  • Potencial de risco adicional: a própria equipe centralizada pode se tornar um ponto único de falha, mesmo que a infraestrutura do escalonador automático seja projetada com a alta disponibilidade em mente.

Para um tutorial passo a passo de como configurar a ferramenta escalonador automático usando essa opção, consulte Implantar uma ferramenta de escalonamento automático centralizado ou por projeto no Spanner.

Topologia distribuída

Em uma implantação de topologia distribuída, o Cloud Scheduler As instâncias do Spanner que precisam ser escalonadas automaticamente ficam no mesmo projeto. Os demais componentes da ferramenta Escalonador automático residem em um em um projeto gerenciado. Esta é uma implantação híbrida. Equipes que possuem a As instâncias do Spanner gerenciam apenas a configuração do escalonador automático parâmetros para suas instâncias, e uma equipe central gerencia o restante Infraestrutura do escalonador automático.

O diagrama a seguir mostra uma visão conceitual geral de um e implantação de projetos distribuídos.

Implantação conceitual de projeto distribuído.

A implantação híbrida representada no diagrama anterior tem as seguintes características:

  • Dois aplicativos, Aplicativo 1 e Aplicativo 2, usam seus próprios instâncias do Spanner.
  • As instâncias do Spanner (A) estão nos projetos do Aplicativo 1 e do Aplicativo 2.
  • Um componente independente do Cloud Scheduler (C) é implantado em cada projeto: Aplicativo 1 e Aplicativo 2.
  • Os componentes restantes do escalonador automático (B) são implantados em um projeto separado.
  • A ferramenta de escalonamento automático escalona automaticamente as instâncias do Spanner nos Projetos do Aplicativo 1 e do Aplicativo 2 usando as configurações enviadas por componentes independentes do Cloud Scheduler em cada projeto.

Para um diagrama mais detalhado da implantação do projeto centralizado, consulte Implantar uma ferramenta de escalonador automático distribuído para o Spanner.

Uma implantação distribuída tem as seguintes vantagens e desvantagens.

Vantagens:

  • As equipes de aplicativo controlam as configurações e programações: O Cloud Scheduler é implantado junto com o Spanner instâncias com escalonamento automático, proporcionando às equipes de aplicativo mais controle acima da configuração e da programação.
  • A equipe de operações controla a infraestrutura: os principais componentes do A ferramenta de escalonador automático é implantada de modo centralizado, para que as equipes de operações controlem a infraestrutura do escalonador automático.
  • Manutenção centralizada: a infraestrutura do escalonador é centralizada, o que sobrecarga.

Desvantagens:

  • Configuração mais complexa: as equipes de aplicativos precisam fornecer serviços contas para gravar no tópico de enquete.
  • Potencial de risco adicional: a infraestrutura compartilhada pode se tornar um de um ponto único de falha, mesmo que a infraestrutura tenha disponibilidade em mente.

Para aprender a configurar a ferramenta Autoescalador em uma implantação distribuída, consulte Implantar uma ferramenta de escalonador automático distribuído para o Spanner.

Divisão de dados

O Spanner atribui intervalos de dados chamados de divisões a nós ou subdivisões de um nó chamado unidades de processamento. O nó ou as unidades de processamento para gerenciar e exibir os dados nas divisões repartidas. As divisões de dados são criadas com base em vários fatores, incluindo volume de dados e padrões de acesso. Para mais detalhes, consulte Spanner: esquema e modelo de dados do Google.

Os dados são organizados em divisões, e o Spanner gerencia automaticamente divisões. Portanto, quando a ferramenta de escalonamento automático adiciona ou remove nós ou unidades de processamento, ele precisa permitir que o back-end do Spanner tenha tempo suficiente para reatribuir e reorganizar as divisões à medida que novas capacidades forem adicionadas ou removidas das instâncias.

A ferramenta de escalonamento automático usa períodos de espera em eventos de aumento e redução de escala para controlar a rapidez com que ele pode adicionar ou remover nós ou unidades de instância. Esse método dá à instância o tempo necessário para reorganizar a relações entre notas de computação, unidades de processamento e divisões de dados. De padrão, os períodos de espera de escalonamento vertical e redução serão definidos da seguinte maneira: valores mínimos:

  • Valor de escalonamento vertical: 5 minutos
  • Valor de redução: 30 minutos

Para mais informações sobre recomendações de escalonamento e períodos de espera, consulte Como escalonar instâncias do Spanner.

Custos

O consumo de recursos da ferramenta Escalonador automático é mínimo, portanto, na maioria dos casos de uso, os custos são insignificantes. Não há custo quando o escalonador automático é usado no Google Cloud. Por exemplo , executando uma ferramenta de escalonador automático para gerenciar três instâncias do Spanner com um de 5 minutos para cada instância está disponível sem custos. Isso estimativa inclui o seguinte:

  • 3 jobs do Cloud Scheduler
  • 0,15 GB de mensagens do Pub/Sub
  • 51.840 invocações de 500 ms do Cloud Functions
  • Menos de 10 MB de dados no Firestore

A estimativa não inclui os custos de operação do banco de dados do Spanner. Usar as Calculadora de preços para gerar uma estimativa de custo com base na projeção de uso.

A seguir