Diretrizes de dimensionamento
Visão geral das diretrizes de dimensionamento
Ao planejar a implantação de serviços de dados do Azure Arc, planeje a quantidade correta de:
- Computação
- Memória
- Armazenamento
Esses recursos são necessários para:
- O controlador de dados
- Instâncias gerenciadas do SQL
- Servidores PostgreSQL
Como os serviços de dados habilitados para Azure Arc são implantados no Kubernetes, você tem a flexibilidade de adicionar mais capacidade ao cluster do Kubernetes ao longo do tempo por nós de computação ou armazenamento. Este guia explica os requisitos mínimos e recomenda tamanhos para alguns requisitos comuns.
Requisitos gerais de dimensionamento
Observação
Caso você não conheça os conceitos deste artigo, leia mais sobre a Governança de recursos do Kubernetes e a Notação de tamanho do Kubernetes.
Os números de núcleos precisam ser um valor inteiro maior ou igual a um.
Ao implantar com a CLI do Azure (az), use uma potência de dois números para definir os valores de memória. Especificamente, use os sufixos:
Ki
Mi
Gi
Os valores de limite devem ser sempre maiores que o valor da solicitação, se especificado.
Os valores de limite dos núcleos são a métrica faturável na Instância Gerenciada de SQL e nos servidores do PostgreSQL.
Requisitos mínimos de implantação
O tamanho mínimo da implantação dos serviços de dados habilitados para Azure Arc pode ser considerado o controlador de dados do Azure Arc, mais uma Instância Gerenciada de SQL e um servidor do PostgreSQL. Para essa configuração, você precisa de pelo menos 16 GB de RAM e 4 núcleos de capacidade disponível no cluster do Kubernetes. Você deve garantir que você tenha um tamanho mínimo de nó Kubernetes de 8 GB de RAM e 4 núcleos e uma capacidade total de soma de 16 GB de RAM disponível em todos os nós do Kubernetes. Por exemplo, você pode ter um nó com 32 GB de RAM e 4 núcleos ou pode ter dois nós com 16 GB de RAM e 4 núcleos cada.
Confira o artigo Configuração de armazenamento para ver detalhes sobre o dimensionamento de armazenamento.
Detalhes de dimensionamento do controlador de dados
O controlador de dados é uma coleção de pods implantados no cluster do Kubernetes para fornecer uma API, o serviço do controlador, o inicializador e o monitoramento de bancos de dados e painéis. Esta tabela descreve os valores padrão para solicitações e limites de memória e CPU.
Nome do pod | Solicitação de CPU | Solicitação de memória | Limite da CPU | Limite de memória |
---|---|---|---|---|
bootstrapper |
100m |
100Mi |
200m |
200Mi |
control |
400m |
2Gi |
1800m |
2Gi |
controldb |
200m |
4Gi |
800m |
6Gi |
logsdb |
200m |
1600Mi |
2 |
1600Mi |
logsui |
100m |
500Mi |
2 |
2Gi |
metricsdb |
200m |
800Mi |
400m |
2Gi |
metricsdc |
100m |
200Mi |
200m |
300Mi |
metricsui |
20m |
200Mi |
500m |
200Mi |
metricsdc
é um daemonset
, que é criado em cada um dos nós do Kubernetes em seu cluster. Os números na tabela são por nó. Se você definir allowNodeMetricsCollection = false
no arquivo de perfil de implantação antes de criar o controlador de dados, esse daemonset
não será criado.
Você pode substituir as configurações padrão para os pods de controldb
e controle no arquivo YAML do controlador de dados. Exemplo:
resources:
controller:
limits:
cpu: "1000m"
memory: "3Gi"
requests:
cpu: "800m"
memory: "2Gi"
controllerDb:
limits:
cpu: "800m"
memory: "8Gi"
requests:
cpu: "200m"
memory: "4Gi"
Confira o artigo Configuração de armazenamento para ver detalhes sobre o dimensionamento de armazenamento.
Detalhes de dimensionamento da Instância Gerenciada de SQL
Cada Instância Gerenciada de SQL deve ter as seguintes limites e solicitações de recursos mínimos:
Camada de serviço | Uso Geral | Comercialmente Crítico |
---|---|---|
Solicitação de CPU | Mínimo: 1 Máximo: 24 Padrão: 2 |
Mínimo: 3 Máximo: ilimitado Padrão: 4 |
Limite da CPU | Mínimo: 1 Máximo: 24 Padrão: 2 |
Mínimo: 3 Máximo: ilimitado Padrão: 4 |
Solicitação de memória | Mínimo: 2Gi Máximo: 128Gi Padrão: 4Gi |
Mínimo: 2Gi Máximo: ilimitado Padrão: 4Gi |
Limite de memória | Mínimo: 2Gi Máximo: 128Gi Padrão: 4Gi |
Mínimo: 2Gi Máximo: ilimitado Padrão: 4Gi |
Cada pod de Instância Gerenciada de SQL criado tem três contêineres:
Nome do contêiner | Solicitação de CPU | Solicitação de memória | Limite de CPU | Limite de Memória | Observações |
---|---|---|---|---|---|
fluentbit |
100m |
100Mi |
Não especificado | Não especificado | As solicitações de recurso de contêiner fluentbit são além de as solicitações especificadas para a instância gerenciada de SQL. |
arc-sqlmi |
Especificado pelo usuário ou não especificado. | Especificado pelo usuário ou não especificado. | Especificado pelo usuário ou não especificado. | Especificado pelo usuário ou não especificado. | |
collectd |
Não especificado | Não especificado | Não especificado | Não especificado |
O tamanho do volume padrão para todos os volumes persistentes é 5Gi
.
Detalhes de dimensionamento do servidor PostgreSQL
Cada nó de servidor PostgreSQL precisa ter as seguintes solicitações de recursos mínimas:
- Memória:
256Mi
- Núcleos: 1
Cada pod de servidor PostgreSQL criado tem três contêineres:
Nome do contêiner | Solicitação de CPU | Solicitação de memória | Limite de CPU | Limite de Memória | Observações |
---|---|---|---|---|---|
fluentbit |
100m |
100Mi |
Não especificado | Não especificado | As solicitações de recurso de contêiner fluentbit são além de as solicitações especificadas para o servidor PostgreSQL. |
postgres |
Especificado pelo usuário ou não especificado. | Usuário especificado ou 256Mi (padrão). |
Especificado pelo usuário ou não especificado. | Especificado pelo usuário ou não especificado. | |
arc-postgresql-agent |
Não especificado | Não especificado | Não especificado | Não especificado |
Dimensionamento cumulativo
O tamanho geral de um ambiente necessário para os serviços de dados habilitados para Azure Arc é principalmente uma função do número e do tamanho das instâncias de banco de dados. O tamanho geral pode ser difícil de prever antecipadamente sabendo que o número de instâncias pode aumentar e diminuir e a quantidade de recursos necessários para cada instância de banco de dados pode mudar.
O tamanho da linha de base para um determinado ambiente de serviços de dados habilitado para Azure Arc é o tamanho do controlador de dados, que requer 4 núcleos e 16 GB de RAM. A partir daí, adicione o total cumulativo de núcleos e memória necessários para as instâncias de banco de dados. A Instância Gerenciada de SQL requer um pod para cada instância. O servidor PostgreSQL cria um pod para cada servidor.
Além dos núcleos e memória que você solicita para cada instância de banco de dados, você deve adicionar 250m
de núcleos e 250Mi
de RAM para os contêineres do agente.
Cálculo de dimensionamento de exemplo
Requisitos:
- "SQL1": 1 instância gerenciada de SQL com 16 GB de RAM, 4 núcleos
- "SQL2": 1 instância gerenciada de SQL com 256 GB de RAM, 16 núcleos
- "Postgres1": 1 servidor PostgreSQL a 12 GB de RAM, 4 núcleos
Cálculos de dimensionamento:
O tamanho de "SQL1" é:
1 pod * ([16Gi RAM, 4 cores] + [250Mi RAM, 250m cores])
. Para os agentes por pod, use16.25 Gi
RAM e 4,25 núcleos.O tamanho de "SQL2" é:
1 pod * ([256Gi RAM, 16 cores] + [250Mi RAM, 250m cores])
. Para os agentes por pod, use256.25 Gi
RAM e 16,25 núcleos.O tamanho total do SQL 1 e do SQL 2 é:
(16.25 GB + 256.25 Gi) = 272.5-GB RAM
(4.25 cores + 16.25 cores) = 20.5 cores
O tamanho de "Postgres1" é:
1 pod * ([12Gi RAM, 4 cores] + [250Mi RAM, 250m cores])
. Para os agentes por pod, use12.25 Gi
RAM e4.25
núcleos.A capacidade total necessária:
- Para as instâncias de banco de dados:
- 272.5-GB RAM
- 20,5 núcleos
- Para o SQL:
- 12,25 GB DE RAM
- 4,25 núcleos
- Para o servidor PostgreSQL
- 284,75 GB DE RAM
- 24,75 núcleos
- Para as instâncias de banco de dados:
A capacidade total necessária para as instâncias de banco de dados mais o controlador de dados é:
- Para a instância do banco de dados
- 284,75 GB DE RAM
- 24,75 núcleos
- Para o controlador de dados
- 16 GB de RAM
- 4 núcleos
- No total:
- 300,75 GB DE RAM
- 28,75 núcleos.
- Para a instância do banco de dados
Confira o artigo Configuração de armazenamento para ver detalhes sobre o dimensionamento de armazenamento.
Outras considerações
Tenha em mente que uma determinada solicitação de tamanho de instância de banco de dados para núcleos ou RAM não pode exceder a capacidade disponível dos nós do Kubernetes no cluster. Por exemplo, se o maior nó do Kubernetes que você tem no cluster do Kubernetes for 256 GB de RAM e 24 núcleos, você não poderá criar uma instância de banco de dados com uma solicitação de 512 GB de RAM e 48 núcleos.
Mantenha pelo menos 25% da capacidade disponível nos nós do Kubernetes. Essa capacidade permite que o Kubernetes:
- Agendar pods com eficiência para serem criados
- Habilitar o dimensionamento elástico
- Dá suporte a atualizações sem interrupção dos nós do Kubernetes
- Facilita o crescimento de longo prazo sob demanda
Em seus cálculos de dimensionamento, adicione os requisitos de recursos dos pods do sistema do Kubernetes e quaisquer outras cargas de trabalho, que podem estar compartilhando capacidade com os serviços de dados habilitados para Azure Arc no mesmo cluster do Kubernetes.
Para manter a alta disponibilidade durante a manutenção planejada e a continuidade de desastres, planeje que pelo menos um dos nós do Kubernetes em seu cluster fique indisponível a qualquer momento. O Kubernetes tenta reagendar os pods que estavam em execução em um determinado nó que foi retirado para manutenção ou devido a uma falha. Se não houver capacidade disponível nos nós restantes, esses pods não serão reagendados para criação até que haja capacidade disponível novamente. Tenha cuidado extra com instâncias de banco de dados grandes. Por exemplo, se houver apenas um nó do Kubernetes grande o suficiente para atender aos requisitos de recursos de uma instância de banco de dados grande e esse nó falhar, o Kubernetes não agenda o pod da instância do banco de dados para outro nó do Kubernetes.
Lembre-se dos limites máximos de tamanho de um cluster do Kubernetes.
O administrador do Kubernetes pode ter configurado cotas de recursos em seu namespace/projeto. Tenha essas cotas em mente ao planejar os tamanhos da instância do banco de dados.