A ferramenta de escalonamento automático foi projetada para permitir flexibilidade e acomodar a separação existente de responsabilidades entre as equipes de operações e aplicativos. 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.
Este documento faz parte de uma série que também inclui:
- Spanner com escalonamento automático
- Visão geral da ferramenta de escalonamento automático
- Implantar a ferramenta Autoscaler para Spanner no Google Kubernetes Engine (GKE)
Esta série é destinada a equipes de TI, operações e engenharia de confiabilidade do site (SRE) que querem reduzir a sobrecarga operacional e otimizar o custo das implantações do Spanner.
Esta página apresenta três maneiras de implantar o Autoscaler para funções do Cloud Run, de acordo com seus requisitos:
- Uma topologia de implantação por projeto. A infraestrutura do escalonador automático é implantada no mesmo projeto que o Spanner que precisa ser escalonado automaticamente. Recomendamos essa topologia para equipes independentes que queiram gerenciar a própria configuração e infraestrutura do escalonador automático. Uma topologia de implantação por projeto também é um bom ponto de partida para testar os recursos do escalonador automático.
- Uma topologia de implantação centralizada. A ferramenta de escalonamento automático é implantada em um projeto e gerencia uma ou mais instâncias do Spanner em projetos diferentes. Recomendamos essa topologia para equipes que gerenciam a configuração e a infraestrutura de uma ou mais instâncias do Spanner e mantêm os componentes e a configuração do escalonador automático em um local central. Na topologia centralizada, além de um projeto do escalonador automático, você configura um segundo projeto, que neste tutorial é chamado de projeto do aplicativo. O projeto de aplicativo mantém os recursos do aplicativo, incluindo o Spanner.
- Uma topologia de implantação 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. Recomendamos essa topologia para organizações com várias equipes, em que as equipes que têm as instâncias do Spanner querem gerenciar apenas os parâmetros de configuração do escalonador automático para as instâncias, mas o restante da infraestrutura do escalonador automático é gerenciado por uma equipe central.
Sem servidor para facilitar a implantação e o gerenciamento
Nesse modelo, a ferramenta de escalonamento automático é criada usando apenas ferramentas de processamento e de baixo gerenciamento 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 Google Cloud integradas, a ferramenta Autoscaler pode aproveitar ao máximo o Identity and Access Management (IAM) para autenticação e autorização.
Configuração
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": "my-spanner",
"scalerPubSubTopic": "projects/my-spanner-project/topics/spanner-scaling",
"units": "NODES",
"minSize": 1,
"maxSize": 3
},
{
"projectId": "different-project",
"instanceId": "another-spanner",
"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.
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.
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 o guia explicativo de implantação por projeto.
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.
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 saber como configurar o escalonador automático usando uma topologia centralizada, consulte o guia explicativo de implantação centralizada.
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.
Função do encaminhador
O Cloud Scheduler só pode publicar mensagens em tópicos no mesmo projeto. Portanto, para a topologia distribuída, é necessário um componente intermediário chamado a função de encaminhador.
A função de encaminhador usa as mensagens publicadas do Pub/Sub no Cloud Scheduler, verifica a sintaxe JSON e as encaminha para o tópico do Pub/Sub. O tópico pode pertencer a um projeto separado para o Cloud Scheduler.
O diagrama a seguir mostra os componentes usados para o mecanismo de encaminhamento:
Como mostrado no diagrama anterior, as instâncias do Spanner estão em projetos chamados Aplicativo 1 e Aplicativo 2:
- O Cloud Scheduler é o mesmo projeto que as instâncias do Spanner.
(2a) O Cloud Scheduler publica suas mensagens no tópico "Encaminhamento" nos projetos do Aplicativo 1 e do Aplicativo 2.
(2b) A função encaminhador lê as mensagens do tópico Encaminhamento.
(c) A função de encaminhador encaminha as mensagens para o tópico de pesquisa que reside no projeto do escalonador automático.
A função de pesquisa lê as mensagens do tópico de pesquisa e o processo continua, conforme descrito na seção Poller.
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 o escalonador automático usando uma topologia distribuída, consulte o guia explicativo de implantação distribuída.
A seguir
- Saiba como implantar a ferramenta de escalonamento automático no GKE.
- Leia mais sobre os limites recomendados do Spanner.
- Saiba 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.