Compartilhar via


Escalabilidade horizontal com clusters elásticos

Este artigo fornece instruções passo a passo para executar operações de dimensionamento horizontal no cluster elástico de um servidor flexível do Banco de Dados do Azure para PostgreSQL.

O Banco de Dados do Azure para Clusters Elásticos do PostgreSQL fornece dimensionamento horizontal adicionando mais nós de trabalho ao cluster. Ao dimensionar o Cluster Elástico do PostgreSQL, você pode lidar com o crescimento dando ao banco de dados mais recursos ou mais nós para processamento de consulta paralela. Você obtém todos esses benefícios com um tempo de indisponibilidade mínimo e gerenciamento integrado de shards.

Métodos de expansão

Use um dos vários métodos para adicionar nós de trabalho ao cluster elástico, incluindo o portal do Azure, a CLI do Azure ou a automação por meio de modelos e APIs do ARM, dependendo das suas necessidades de fluxo de trabalho e automação. As seções a seguir fornecem instruções passo a passo para o portal e a CLI, e explicam o rebalanceamento pós-escala.

Usando o portal do Azure:

  1. Abra o recurso: no portal do Azure, navegue até o Banco de Dados PostgreSQL do Azure – cluster elástico do Servidor Flexível.

  2. Vá para Computação + Armazenamento: na seção Configurações, selecione Computação + armazenamento. Esta página exibe a configuração atual dos nós do cluster.

    Captura de tela mostrando a página Visão geral de um cluster elástico.

  3. Ajustar contagem de nós: localize o campo contagem de nós. Aumente o número para o total de nós desejados (entre 2 e 20 para a maioria dos clusters em GA). Por exemplo, para dobrar um cluster de quatro nós para oito nós, aumente o controle deslizante para 8. O Azure provisiona nós de trabalho adicionais para atingir essa contagem.

    Captura de tela mostrando como selecionar a página Computação + armazenamento.

  4. Aplicar alterações: selecione Salvar. Confirme a operação de expansão quando solicitado. O Azure começa a adicionar nós ao cluster. Essa operação é executada online e normalmente não interrompe conexões ou consultas existentes. A implantação pode levar alguns minutos. Você pode monitorar o progresso nas notificações do portal. Após a conclusão, a contagem de nós do cluster reflete o novo valor.

Observação

Você deve acionar explicitamente o processo de reequilíbrio de fragmentos em segundo plano para permitir que os dados existentes sejam redistribuídos em todos os seus nós. Essa operação não envolve tempo de inatividade para leituras e gravações.

Reequilíbrio

Depois de adicionar nós ao cluster, quaisquer novas modificações de dados ou tabelas distribuídas recém-adicionadas usam todos os nós disponíveis. Os fragmentos de dados existentes permanecem onde estão até serem redistribuídos. O reequilíbrio online garante que as leituras e gravações do aplicativo continuem com interrupção mínima enquanto os dados estão sendo movidos.

Quando você expande o cluster elástico, o rebalanceamento do cluster garante que os dados existentes sejam totalmente distribuídos, e o banco de dados utilize todos os nós de computação disponíveis. Use a função citus_rebalance_start para iniciar o processo de rebalanceamento. Essa operação distribui dados existentes uniformemente em todos os nós.

SELECT citus_rebalance_start();

Rebalanceamento paralelo

A operação de rebalanceamento padrão executa vários movimentos de fragmento em uma ordem sequencial. Em alguns casos, talvez você prefira reequilibrar mais rapidamente em detrimento do uso de mais recursos, como computação, memória e largura de banda de rede. Nessas situações, você pode configurar uma operação de rebalanceamento para executar muitos movimentos de fragmentos em paralelo.

O parâmetro citus.max_background_task_executors_per_node permite que tarefas como o reequilíbrio de fragmentos operem em paralelo. Você pode aumentar o valor padrão (1) conforme desejado para aumentar o paralelismo.

ALTER SYSTEM SET citus.max_background_task_executors_per_node = 2;
SELECT pg_reload_conf();

Além disso, você pode configurar a função citus_rebalance_start para reequilibrar fragmentos de acordo com diferentes estratégias para melhor corresponder à carga de trabalho do banco de dados. Agora que você adicionou executores de tarefas extras em segundo plano, aqui está um exemplo de rebalanceamento de fragmentos usando trabalhos paralelos:

SELECT citus_rebalance_start(parallel_transfer_colocated_shards := true, parallel_transfer_reference_tables := true);

Considerações

Monitore seu cluster após o dimensionamento: verifique a utilização da CPU, o uso de memória e o consumo de E/S nos gráficos de Monitoramento do portal do Azure para seu cluster elástico. Após uma operação de expansão, verifique se a adição de nós reflete melhorias métricas em taxa de transferência e tempos de resposta, dependendo da carga de trabalho. Faça mais ajustes, se necessário.

O dimensionamento de um cluster elástico afeta o custo linearmente com os recursos. A adição de nós multiplica os custos de computação e armazenamento pelo número de nós. Por exemplo, um cluster de quatro nós com dois vCores custa aproximadamente quatro vezes o que um único servidor de dois vCore custa, já que você está executando quatro servidores. Sempre examine o impacto de preços no portal. O Custo Estimado é atualizado no portal do Azure quando você altera a configuração antes de salvar para garantir que ela atenda ao seu orçamento.

Alta disponibilidade: se o cluster tiver alta disponibilidade com redundância de zona habilitada, as operações de dimensionamento também provisionarão recursos em espera para quaisquer novos nós. O serviço do Azure lida com isso automaticamente. Espere que a expansão demore um pouco mais enquanto configura réplicas de HA para cada nó adicionado. As características de processo e tempo de inatividade permanecem quase as mesmas, multiplicadas pelos pares primários e em espera.

Réplicas de leitura: se o cluster estiver configurado para usar réplicas de leitura, você deverá seguir uma ordem específica de operações ao adicionar nós ao cluster. Primeiro, adicione o número de nós ao cluster primário e salve as alterações. Depois que for concluído com êxito, faça a alteração correspondente no ambiente de réplica de leitura e salve as alterações. Seus novos nós no cluster primário não são qualificados para operações de cluster até que os ambientes de réplica primária e de leitura sejam atualizados e sincronizados.

Observação

A capacidade de remover nós de um cluster elástico (scale-in) ainda não está disponível.

Usando as técnicas de dimensionamento anteriores, os clusters elásticos do Banco de Dados do Azure para PostgreSQL oferecem a flexibilidade para começar pequeno e expandir seu banco de dados de forma integrada à medida que a demanda aumenta. Você obtém a simplicidade de um único endpoint com o poder da infraestrutura distribuída do PostgreSQL. Continue monitorando a documentação do Azure para obter as atualizações mais recentes sobre os recursos de Clusters Elásticos e as práticas recomendadas para dimensionamento.