Share via


Dimensionar para cima e para baixo um Banco de Dados do Azure para servidor PostgreSQL usando CLI (az ou kubectl)

Há momentos em que você pode precisar alterar as características ou a definição de um servidor. Por exemplo:

  • Aumente ou diminua o número de vCores que o servidor usa
  • Dimensionar para cima ou para baixo a memória que o servidor usa

Este guia explica como dimensionar vCore e/ou memória.

Escalar para cima ou para baixo as configurações de vCore ou memória do seu servidor significa que você tem a possibilidade de definir um mínimo e/ou máximo para cada uma das configurações de vCore e memória. Se você quiser configurar seu servidor para usar um número específico de vCore ou uma quantidade específica de memória, você deve definir as configurações mínimas iguais às configurações máximas. Antes de aumentar o valor definido para vCores e Memória, você deve garantir que

  • você tem recursos suficientes disponíveis na infraestrutura física que hospeda sua implantação e
  • cargas de trabalho colocadas no mesmo sistema não estão competindo pelos mesmos vCores ou memória.

Nota

Como funcionalidade de pré-visualização, a tecnologia apresentada neste artigo está sujeita aos Termos de Utilização Suplementares para Pré-visualizações do Microsoft Azure.

As atualizações mais recentes estão disponíveis nas notas de versão.

Mostrar a definição atual do servidor

Para mostrar a definição atual do seu servidor e ver quais são as configurações atuais de vCore e Memória, execute um dos seguintes comandos:

Com a CLI do Azure (az)

az postgres server-arc show -n <server name> --k8s-namespace <namespace> --use-k8s

CLI com kubectl

kubectl describe postgresql/<server name> -n <namespace name>

Ele retorna a configuração do seu grupo de servidores. Se você criou o servidor com as configurações padrão, você deve ver a definição da seguinte maneira:

Spec:
  Dev:  false
  Scheduling:
    Default:
      Resources:
        Requests:
          Memory:  256Mi
...

Interpretar a definição do servidor

Na definição de um servidor, a seção que carrega as configurações de vCore mínimo ou máximo por nó e memória mínima ou máxima por nó é a seção "agendamento ". Nessa seção, as configurações máximas serão mantidas em uma subseção chamada "limites" e as configurações mínimas serão persistidas na subseção chamada "solicitações".

Se você definir configurações mínimas diferentes das configurações máximas, a configuração garantirá que seu servidor receba os recursos solicitados, se necessário. Ele não excederá os limites que você definiu.

Os recursos (vCores e memória) que serão realmente usados pelo seu servidor estão até as configurações máximas e dependem das cargas de trabalho e dos recursos disponíveis no cluster. Se você não limitar as configurações com um máximo, seu servidor poderá usar até todos os recursos que o cluster do Kubernetes aloca para os nós do Kubernetes nos quais seu servidor está agendado.

Em uma configuração padrão, apenas a memória mínima é definida como 256Mi, pois é a quantidade mínima de memória recomendada para executar o servidor PostgreSQL.

Nota

Definir um mínimo não significa que o servidor necessariamente usará esse mínimo. Isso significa que, se o servidor precisar, é garantido que ele será alocado pelo menos esse mínimo. Por exemplo, vamos considerar que definimos --minCpu 2. Isso não significa que o servidor estará usando pelo menos 2 vCores em todos os momentos. Em vez disso, isso significa que o sever pode começar a usar menos de 2 vCores se não precisar de tanto e é garantido que será alocado pelo menos 2 vCores se precisar deles mais tarde. Isso implica que o cluster Kubernetes aloca recursos para outras cargas de trabalho de tal forma que pode alocar 2 vCores para o servidor, se ele precisar deles. Além disso, escalar para cima e para baixo não é uma operação online, pois requer a reinicialização dos pods do kubernetes.

Nota

Antes de modificar a configuração do seu sistema, certifique-se de se familiarizar com o modelo de recursos do Kubernetes aqui:

Aumente e diminua a escala do servidor

Escalonamento refere-se ao aumento dos valores para os vCores e/ou configurações de memória do seu servidor. Reduzir a escala refere-se à diminuição dos valores para os vCores e/ou configurações de memória do seu servidor.

As configurações que você está prestes a definir devem ser consideradas dentro da configuração definida para o cluster do Kubernetes. Certifique-se de que você não está definindo valores que seu cluster Kubernetes não será capaz de satisfazer. Isso pode levar a erros ou comportamento imprevisível, como a indisponibilidade da instância do banco de dados. Por exemplo, se o status do servidor permanecer em atualização de status por muito tempo depois de alterar a configuração, pode ser uma indicação de que você define os parâmetros abaixo para valores que o cluster do Kubernetes não pode satisfazer. Se for esse o caso, reverta a alteração ou leia o _troubleshooting_section.

Que configurações você deve definir?

  • Para definir vCore mínimo, defina --cores-request.
  • Para definir o vCore máximo, defina --cores-limit.
  • Para definir a memória mínima, defina --memory-request
  • Para definir a memória máxima, defina --memory-limit

Atenção

Com o Kubernetes, configurar uma configuração de limite sem configurar a configuração de solicitação correspondente força o valor da solicitação a ser o mesmo valor que o limite. Isso pode potencialmente levar à indisponibilidade do seu servidor, pois seus pods podem não ser reagendados se não houver um nó Kubernetes disponível com recursos suficientes. Como tal, para evitar essa situação, os exemplos abaixo mostram como definir as configurações de solicitação e limite.

A sintaxe geral é:

az postgres server-arc edit -n <server name> --memory-limit/memory-request/cores-request/cores-limit <val> --k8s-namespace <namespace> --use-k8s

O valor que você indica para a configuração de memória é um número seguido por uma unidade de volume. Por exemplo, para indicar 1Gb, você indicaria 1024Mi ou 1Gi. Para indicar um número de núcleos, basta passar um número sem unidade.

Exemplos usando a CLI do Azure

Configure o servidor para não exceder 2 núcleos:

 az postgres server-arc edit -n postgres01 --cores-request 1, --cores-limit 2  --k8s-namespace arc --use-k8s

Nota

Para obter detalhes sobre esses parâmetros, execute az postgres server-arc update --help.

Exemplo usando ferramentas nativas do Kubernetes como kubectl

Execute o comando:

kubectl edit postgresql/<server name> -n <namespace name>

Isso leva você ao editor, vi onde você pode navegar e alterar a configuração. Use o seguinte para mapear a configuração desejada para o nome do campo na especificação:

Atenção

Abaixo está um exemplo fornecido para ilustrar como você pode editar a configuração. Antes de atualizar a configuração, certifique-se de definir os parâmetros para valores que o cluster do Kubernetes pode respeitar.

Por exemplo, se você quiser definir as seguintes configurações para as funções de coordenador e de trabalho com os seguintes valores:

  • vCore mínimo = 2
  • vCore máximo = 4
  • Memória mínima = 512Mb
  • Memória máxima = 1Gb

Você deve definir a definição do seu grupo de servidores para que ele corresponda à configuração abaixo:

...
  spec:
  dev: false
  scheduling:
    default:
      resources:
        requests:
          cpu: "2"
          memory: 256Mi
        limits:
          cpu: "4"
          memory: 1Gi
...

Se você não estiver familiarizado com o vi editor, veja uma descrição dos comandos que você pode precisar aqui:

  • Modo de edição: i
  • Movimente-se com setas
  • Interromper a edição: esc
  • Saia sem salvar: :qa!
  • Saia depois de salvar: :qw!

Redefinir para valores padrão

Para redefinir os limites de núcleo/memória/parâmetros de solicitações para seus valores padrão, edite-os e passe uma cadeia de caracteres vazia em vez de um valor real. Por exemplo, se você quiser redefinir o parâmetro core limit, execute os seguintes comandos:

az postgres server-arc edit -n postgres01 --cores-request '' --k8s-namespace arc --use-k8s
az postgres server-arc edit -n postgres01 --cores-limit '' --k8s-namespace arc --use-k8s

ou

az postgres server-arc edit -n postgres01 --cores-request '' --cores-limit '' --k8s-namespace arc --use-k8s