Esta página apresenta a ferramenta Autoscaler para Spanner (Autoscaler), uma ferramenta de código aberto que pode ser usada como uma ferramenta complementar ao Spanner. Essa ferramenta permite aumentar ou reduzir automaticamente a capacidade de computação em uma ou mais instâncias do Spanner com base na capacidade em uso.
Para mais informações sobre o escalonamento no Spanner, consulte Escalonamento automático do Spanner. Para informações sobre como implantar a ferramenta Autoscaler, consulte:
- Implantar uma ferramenta centralizada de escalonamento automático ou por projeto para o Spanner
- Implantar uma ferramenta de escalonador automático distribuído para o Spanner
Esta página apresenta os recursos, a arquitetura, a configuração e as topologias de implantação do escalonador automático. Os tópicos que continuam esta série orientam você na implantação do escalonador automático em cada uma das diferentes topologias.
Escalonador automático
A ferramenta Autoscaler é útil para gerenciar a utilização e o desempenho das implantações do Spanner. Para ajudar você a equilibrar o controle de custos com necessidades de desempenho, a ferramenta Autoscaler monitora suas instâncias e adiciona ou remove nós ou unidades de processamento automaticamente para garantir que eles permaneçam nos seguintes parâmetros:
- Os valores máximos recomendados para utilização da CPU.
O limite recomendado de armazenamento por nó
mais ou menos uma margem configurável.
O escalonamento automático das implantações do Spanner permite que a infraestrutura se adapte e dimensione 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 de escalonador automático consiste no Cloud Scheduler, dois tópicos do Pub/Sub, duas funções do Cloud Run e o Firestore. A API Cloud Monitoring é usada para receber métricas de uso e armazenamento da CPU para instâncias do Spanner.
Cloud Scheduler
Ao usar o Cloud Scheduler, você define com que frequência a ferramenta de escalonador automático verifica os limites de métricas de escalonamento de instâncias do Spanner. 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.
Função do Cloud Run do Poller
A função de pesquisa do Cloud Run é responsável por coletar e processar as métricas de séries temporais de uma ou mais instâncias do Spanner. O Poller pré-processa os dados das métricas para cada instância do Spanner. Assim, somente os pontos de dados mais relevantes são avaliados e enviados para a função Scaler Cloud Run. O pré-processamento feito pela função de pesquisa do Cloud Run também simplifica o processo de avaliação de limites para instâncias regionais, birregionais e multirregionais do Spanner.
Função Scaler Cloud Run
A função de escalonamento do Cloud Run avalia os pontos de dados recebidos da função de pesquisa do Cloud Run e determina se você precisa ajustar o número de nós ou unidades de processamento e, em caso afirmativo, até que ponto. A função do Cloud Run compara os valores da métrica com o limite, com adição de uma margem permitida ou menos, e ajusta o número de nós ou unidades de processamento com base no método de escalonamento configurado. Para mais detalhes sobre métodos de escalonamento, consulte Recursos do escalonador automático.
Fluxo operacional
Esta seção detalha o modelo operacional da ferramenta Autoscaler, conforme mostrado no diagrama de arquitetura a seguir.
- Você define a programação, a hora e a frequência dos jobs de escalonamento automático no Cloud Scheduler.
- Na programação definida por você, o Cloud Scheduler envia uma mensagem contendo um payload JSON com os parâmetros de configuração da ferramenta do escalonador automático para uma ou mais instâncias do Spanner no tópico de pesquisa do Pub/Sub.
- Quando a mensagem é publicada no tópico de pesquisa, uma instância da função de pesquisa do Cloud Run é criada para processar a mensagem.
- A função de pesquisa do Cloud Run lê o payload da mensagem e consulta a API Cloud Monitoring para recuperar as métricas de utilização de cada instância do Spanner.
- Para cada instância do Spanner enumerada na mensagem, a função de pesquisa envia uma mensagem ao tópico de escalonamento do Pub/Sub, contendo as métricas e os parâmetros de configuração a serem avaliados para a instância específica do Spanner.
Para cada mensagem enviada ao tópico de escalonamento, a função do Cloud Run faz o seguinte:
- Compara as métricas da instância do Spanner com os limites configurados mais ou menos uma margem configurável.
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 precisa ser escalonada com base no método de escalonamento escolhido.
A função Scaler do Cloud Run recupera o tempo em que a instância foi escalonada pela última vez no Firestore e a compara com o horário atual para determinar se o escalonamento vertical ou horizontal é permitido com base nos períodos de espera.
Se o período de espera configurado tiver passado, a função de escalonamento do Cloud Run vai enviar uma solicitação para a instância do Spanner para aumentar ou diminuir a escala.
Durante o fluxo, a ferramenta Autoscaler cria um resumo das recomendações e ações no Cloud Logging para rastreamento e auditoria.
Independentemente da topologia de implantação escolhida, a operação geral da ferramenta de escalonamento automático permanece a mesma.
Recursos do escalonador automático
Esta seção descreve os principais recursos da ferramenta Autoscaler.
Gerenciar várias instâncias
A ferramenta de escalonamento automático gerencia várias instâncias do Spanner em vários projetos. As instâncias multirregionais, birregionais e regionais têm limites de utilização diferentes que são usados no escalonamento. Por exemplo, implantações multirregionais e birregionais são escalonadas a 45% de uso de CPU de alta prioridade, enquanto implantações regionais são escalonadas a 65% de uso de CPU de alta prioridade, mais ou menos uma margem permitida. Para mais informações sobre os diferentes limites de escalonamento, consulte Alertas para 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 programações de pesquisa. Cada programação de pesquisa tem o próprio conjunto de parâmetros de configuração.
Esses parâmetros determinam os seguintes fatores:
- O número mínimo e máximo de nós ou unidades de processamento que controlam o quanto a 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 da 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 diferentes para aumentar e diminuir o escalonamento das instâncias do Spanner: em etapas, linear e direto. Cada método é projetado para aceitar diferentes tipos de cargas de trabalho. Ao criar programações de pesquisa independentes, é possível aplicar um ou mais métodos a cada instância do Spanner que está sendo escalonada automaticamente.
Etapas
O escalonamento em etapas é útil para cargas de trabalho com picos pequenos ou múltiplos. Ele provisiona a capacidade para suavizar todos 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.
Quando o limite de carga é ultrapassado, esse método provisiona e remove nós ou unidades de processamento usando um número fixo, mas configurável. Por exemplo, três nós são adicionados ou removidos para cada ação de escalonamento. Ao mudar a configuração, é possível permitir que incrementos de capacidade maiores sejam adicionados ou removidos 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. O número de nós ou unidades de processamento adicionados ou removidos em cada evento de escalonamento não é limitado a um valor fixo de etapas.
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.
A ferramenta Autoscaler usa a proporção da utilização observada em relação ao limite de utilização para calcular se é preciso adicionar ou subtrair nós ou unidades de processamento do 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 a instância até o número máximo de nós ou unidades de processamento especificado na programação e se destina a ser usado além de um método linear ou de etapa.
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.
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 com as instâncias do Spanner que ela gerencia. A ferramenta de escalonamento automático foi projetada para permitir flexibilidade e acomodar a separação existente de responsabilidades entre as equipes de operação e de aplicativo. A responsabilidade de configurar o escalonamento automático das instâncias do Spanner pode ser centralizada com uma única equipe de operações ou distribuída para as equipes mais próximas dos aplicativos atendidos por essas instâncias do Spanner.
Os diferentes modelos de implantação são discutidos em mais detalhes em Topologias de implantação.
Sem servidor para facilitar a implantação e o gerenciamento
A ferramenta Autoscaler é criada somente com ferramentas de processamento e de baixo gerenciamento do Google Cloud, como funções do Cloud Run, Pub/Sub, Cloud Scheduler e Firestore. Essa abordagem minimiza o custo e a sobrecarga operacional da execução da ferramenta Autoscaler.
Ao usar as ferramentas integradas do Google Cloud , a ferramenta de escalonamento automático pode aproveitar ao máximo o IAM (IAM) para autenticação e autorização.
Configuração
A ferramenta de escalonamento 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 descrevem as opções de configuração básicas e mais avançadas.
Configuração básica
A ferramenta Autoscaler gerencia instâncias do Spanner pela configuração definida no Cloud Scheduler. Se várias instâncias do Spanner precisarem ser pesquisadas com o mesmo intervalo, recomendamos que você as configure no mesmo job do Cloud Scheduler. A configuração de cada instância é representada como um objeto JSON. Confira a seguir um exemplo de configuração em que duas instâncias do Spanner são gerenciadas com um 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 de escalonamento automático tem opções avançadas de configuração para você controlar melhor quando e como as instâncias do Spanner são gerenciadas. As seções a seguir apresentam uma seleção desses controles.
Limites personalizados
A ferramenta de escalonamento automático determina o número de nós ou unidades de processamento a serem adicionados ou subtraídos de uma instância usando os limites recomendados do Spanner para as seguintes métricas de carga:
- 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. No entanto, em alguns casos, talvez você queira modificar os limites usados pela ferramenta de escalonamento automático. Por exemplo, use limites menores para fazer a ferramenta de escalonamento automático reagir mais rapidamente do que para limites mais altos. Essa modificação ajuda a evitar que os alertas sejam acionados em limites mais altos.
Métricas personalizadas
Embora as métricas padrão na ferramenta de escalonamento automático abordem a maioria dos cenários de desempenho
e escalonamento, em alguns casos, talvez seja necessário especificar as próprias
métricas usadas para determinar quando fazer reduzir escalonamento horizontal e horizontal. Para esses cenários,
defina métricas personalizadas na configuração usando a
propriedade metrics
.
Margens
Uma margem define um limite superior e um limite menor em torno do limite. A ferramenta de escalonamento automático só aciona um evento de escalonamento automático se o valor da métrica for maior que o limite máximo ou menor que o 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 seguinte intervalo, de acordo com o valor desejado para o valor da métrica:
[threshold - margin, threshold + margin]
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 Autoscaler, decida qual das topologias a seguir é melhor para atender às suas necessidades técnicas e operacionais:
- Topologia por projeto: a infraestrutura do escalonador automático é implantada no mesmo projeto que o Spanner que precisa ser escalonado automaticamente.
- Topologia centralizada: a ferramenta de escalonamento 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 é implantada em um projeto, mas alguns componentes da infraestrutura são implantados com as 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 é um bom ponto de partida para testar os recursos da ferramenta Autoscaler.
No diagrama a seguir, mostramos uma visão conceitual de alto nível de uma implantação por projeto.
As implantações por projeto mostradas no diagrama anterior têm estas características:
- Dois aplicativos, o Aplicativo 1 e o Aplicativo 2, usam suas próprias instâncias do Spanner.
- As instâncias do Spanner (A) residem nos projetos do Aplicativo 1 e do Aplicativo 2.
- Um escalonador automático independente (B) é implantado em cada projeto para controlar o escalonamento automático das instâncias em um projeto.
Para um diagrama mais detalhado de uma implantação por projeto, consulte a seção Arquitetura.
Uma implantação por projeto tem as seguintes vantagens e desvantagens.
Vantagens:
- Design mais simples: a topologia por projeto é o design mais simples das três topologias, porque todos os componentes do escalonador automático são implantados com as instâncias do Spanner que estão sendo escalonadas automaticamente.
- Configuração: o controle sobre os parâmetros do programador pertence à equipe que é proprietária da instância do Spanner. Isso dá à equipe mais liberdade para adaptar a ferramenta de escalonamento automático às necessidades do que uma topologia centralizada ou 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:
- Mais manutenção geral: cada equipe é responsável pela configuração e pela infraestrutura do escalonador automático. Por isso, pode ser difícil garantir que todas as ferramentas do escalonador automático na empresa sigam as mesmas diretrizes de atualização.
- 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 Implantar uma ferramenta de escalonador automático por projeto ou centralizada para o Spanner.
Topologia centralizada
Como na topologia por projeto, em uma implantação de topologia centralizada, todos os componentes da ferramenta de escalonamento automático residem no mesmo projeto. No entanto, as instâncias do Spanner estão localizadas em diferentes projetos. Essa implantação é adequada para uma equipe que gerencia a configuração e a infraestrutura de várias instâncias do Spanner de uma única implantação da ferramenta Autoscaler em um local central.
O diagrama a seguir mostra uma visão conceitual de alto nível de uma implantação de projeto centralizado:
A implantação centralizada mostrada no diagrama anterior tem as seguintes características:
- Dois aplicativos, o Aplicativo 1 e o Aplicativo 2, usam suas próprias instâncias do Spanner.
- As instâncias do Spanner (A) estão nos respectivos projetos do Aplicativo 1 e do Aplicativo 2.
- O escalonador automático (B) é implantado em um projeto separado para controlar o escalonamento automático das instâncias do Spanner nos projetos do Aplicativo 1 e do Aplicativo 2.
Para um diagrama mais detalhado de uma implantação de projeto centralizado, consulte Implantar uma ferramenta de escalonamento automático por projeto ou centralizada para o Spanner.
Uma implantação centralizada tem as seguintes vantagens e desvantagens:
Vantagens:
- Configuração e infraestrutura centralizadas: uma única equipe controla os parâmetros do programador e a infraestrutura do escalonador automático. Essa abordagem pode ser útil em setores fortemente regulamentados.
- Menos manutenção geral: a manutenção e a configuração geralmente são menos trabalhosas que precisam ser mantidas em comparação a 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 que solicite a mudança seja proprietária da instância do Spanner.
- Potencial de risco adicional: a equipe centralizada pode se tornar um único ponto de falha, mesmo que a infraestrutura do escalonador automático tenha sido projetada com alta disponibilidade.
Para conferir um tutorial passo a passo sobre como configurar a ferramenta de escalonamento automático usando essa opção, consulte Implantar uma ferramenta de escalonamento automático por projeto ou centralizada para o Spanner.
Topologia distribuída
Em uma implantação de topologia distribuída, as instâncias do Cloud Scheduler e do Spanner que precisam ser escalonadas automaticamente residem no mesmo projeto. Os outros componentes da ferramenta de escalonamento automático residem em um projeto gerenciado centralmente. Essa implantação é híbrida. As equipes que têm as instâncias do Spanner gerenciam apenas os parâmetros de configuração do escalonador automático para as instâncias, e uma equipe central gerencia o restante da infraestrutura do escalonador automático.
O diagrama a seguir mostra uma visão conceitual de alto nível de uma implantação de projeto distribuído.
A implantação híbrida representada no diagrama anterior tem as seguintes características:
- Dois aplicativos, o Aplicativo 1 e o Aplicativo 2, usam suas próprias 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 faz o escalonamento automático das instâncias do Spanner nos projetos do Aplicativo 1 e do Aplicativo 2 usando as configurações enviadas pelos 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 a configuração e as programações: o Cloud Scheduler é implantado com as instâncias do Spanner que estão sendo escalonadas automaticamente. Assim, as equipes de aplicativo têm mais controle sobre a configuração e a programação.
- A equipe de operações controla a infraestrutura: os componentes principais da ferramenta de escalonador automático são implantados de modo centralizado, permitindo que as equipes de operações controlem a infraestrutura do escalonador automático.
- Manutenção centralizada: a infraestrutura do escalonador é centralizada, reduzindo a sobrecarga.
Desvantagens:
- Configuração mais complexa: as equipes de aplicativo precisam fornecer contas de serviço para gravar no tópico de pesquisa.
- Potencial de risco adicional: a infraestrutura compartilhada pode se tornar um único ponto de falha, mesmo que a infraestrutura tenha sido projetada com alta disponibilidade em mente.
Para saber como configurar a ferramenta de escalonamento automático em uma implantação distribuída, consulte Implantar uma ferramenta de escalonador automático distribuída para o Spanner.
Divisão de dados
O Spanner atribui intervalos de dados chamados divisões a nós ou subdivisões de um nó chamados de unidades de processamento. As unidades de processamento ou nós gerenciam e exibem os dados nas divisões divididas de maneira independente. As divisões de dados são criadas com base em vários fatores, incluindo o volume de dados e os padrões de acesso. Para mais detalhes, consulte Spanner: esquema e modelo de dados.
Os dados são organizados em divisões, e o Spanner gerencia automaticamente as divisões. Portanto, quando a ferramenta Autoscaler adiciona ou remove nós ou unidades de processamento, ela precisa permitir que o back-end do Spanner reatribua e reorganize as divisões conforme a nova capacidade é adicionada ou removida das instâncias.
A ferramenta de escalonamento automático usa períodos de espera em eventos de escalonamento vertical e vertical para controlar a rapidez com que é possível adicionar ou remover nós ou unidades de processamento de uma instância. Com esse método, a instância tem o tempo necessário para reorganizar as relações entre as notas de computação ou unidades de processamento e divisões de dados. Por padrão, os períodos de aumento ou redução de escala são definidos com os seguintes 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 resfriamento, consulte Como escalonar instâncias do Spanner.
Custos
O consumo de recursos da ferramenta de escalonamento automático é mínimo, portanto, para a 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, executar uma ferramenta de escalonador automático para gerenciar três instâncias do Spanner com um intervalo de pesquisa de cinco minutos para cada instância está disponível sem custo. Essa estimativa inclui o seguinte:
- 3 jobs do Cloud Scheduler
- 0,15 GB de mensagens do Pub/Sub
- 51.840 invocações de 500 ms da função do Cloud Run
- Menos de 10 MB de dados no Firestore
A estimativa não inclui os custos de operação do banco de dados do Spanner. Use a calculadora de preços para gerar uma estimativa de custo com base no uso previsto.
A seguir
- Saiba como implantar a ferramenta de escalonamento automático em uma topologia por projeto ou centralizada.
- Saiba como implantar a ferramenta de escalonamento automático em uma topologia distribuída.
- Leia mais sobre os limites recomendados do Spanner.
- Leia mais sobre as métricas de uso de CPU e as métricas de latência do Spanner.
- Conheça as práticas recomendadas para o design de esquemas do Spanner para evitar pontos de acesso e carregar dados no Spanner.
- Confira arquiteturas de referência, diagramas, tutoriais e práticas recomendadas do Google Cloud. Confira o Centro de arquitetura do Cloud.