É possível editar um cluster do Serviço Gerenciado para Apache Kafka para atualizar propriedades como o tamanho do cluster (contagem de vCPUs e memória), a lista de sub-redes conectadas, a configuração de reequilíbrio automático e a configuração de mTLS.
Para editar um cluster, use o Google Cloud console, a Google Cloud CLI, a biblioteca de cliente ou a API Managed Kafka. Não é possível usar a API Apache Kafka de código aberto para atualizar um cluster.
A atualização de determinadas propriedades, como a contagem de vCPUs e a memória, pode exigir que o serviço reinicie o cluster. O cluster é reiniciado um broker por vez. Durante esse processo, as solicitações para brokers individuais podem falhar, mas essas falhas são temporárias. As bibliotecas de cliente usadas com frequência processam esses erros automaticamente.
Papéis e permissões necessárias
Para receber as permissões necessárias para atualizar um cluster, peça ao administrador para conceder a você o papel do IAM de editor de cluster do Kafka gerenciado (roles/managedkafka.clusterEditor) no seu projeto.
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Esse papel predefinido contém as permissões necessárias para atualizar um cluster. Para acessar as permissões exatas que são necessárias, expanda a seção Permissões necessárias:
Permissões necessárias
As permissões a seguir são necessárias para atualizar um cluster:
-
Editar um cluster:
managedkafka.clusters.update
Essas permissões também podem ser concedidas com funções personalizadas ou outros papéis predefinidos.
O papel de editor de cluster do Kafka gerenciado não permite criar, excluir ou modificar tópicos e grupos de consumidores em clusters do Serviço Gerenciado para Apache Kafka. Ele também não permite o acesso ao plano de dados para publicar ou consumir mensagens em clusters. Para mais informações sobre esse papel, consulte Papéis predefinidos do Serviço Gerenciado para Apache Kafka.
Como reescalonar um cluster
Se você atualizar a contagem de vCPUs ou a memória de um cluster, as seguintes regras serão aplicadas:
A proporção geral de vCPU para memória do cluster precisa sempre permanecer entre 1:1 e 1:8.
Se você fizer um downgrade, será necessário ter pelo menos 1 vCPU e 1 GiB de memória para cada broker. O número de brokers nunca diminui.
Se você fizer um upgrade e a mudança resultar na adição de novos brokers, a vCPU e a memória médias por broker não poderão diminuir em mais de 10% em comparação com as médias antes da atualização.
Por exemplo, se você tentar fazer upgrade de um cluster de 45 vCPUs (3 brokers) para 48 vCPUs (4 brokers), a operação vai falhar. Isso ocorre porque a vCPU média por broker diminui de 15 para 12, o que é uma redução de 20%, excedendo o limite de 10%.
Para mais informações, consulte Atualizar o tamanho do cluster.
Edite um cluster
Para editar um cluster, siga estas etapas:
Console
No Google Cloud console, acesse a página Clusters.
Na lista de clusters, clique naquele cujas propriedades você quer editar.
A página de detalhes do cluster é exibida.
Na página de detalhes do cluster, clique em Editar.
Edite as propriedades conforme necessário. As seguintes propriedades de um cluster podem ser editadas no console:
- Memória
- vCPUs
- Sub-rede
- Configuração de reequilíbrio
- Configuração de mTLS
- Rótulos
Clique em Salvar.
gcloud
-
No Google Cloud console, ative o Cloud Shell.
Na parte de baixo do Google Cloud console, uma sessão do Cloud Shell é iniciada e exibe um prompt de linha de comando. O Cloud Shell é um ambiente shell com a Google Cloud CLI já instalada e com valores já definidos para o projeto atual. A inicialização da sessão pode levar alguns segundos.
Execute o
gcloud managed-kafka clusters updatecomando:gcloud managed-kafka clusters update CLUSTER_ID \ --location=LOCATION \ --cpu=CPU \ --memory=MEMORY \ --subnets=SUBNETS \ --auto-rebalance \ --labels=LABELSSubstitua:
- CLUSTER_ID: o ID ou nome do cluster. Não é possível atualizar esse valor.
- LOCATION: o local do cluster. Não é possível atualizar esse valor.
- CPU: o número de CPUs virtuais do cluster.
- MEMORY: a quantidade de memória do cluster. Use unidades "MB", "MiB", "GB", "GiB", "TB" ou "TiB". Por exemplo, "10GiB".
- SUBNETS: a lista de sub-redes a serem conectadas. Use vírgulas para separar vários valores de sub-rede.
auto-rebalance: ativa o reequilíbrio automático de partições de tópicos entre brokers quando o número de CPUs no cluster muda. Essa opção está ativada por padrão.- LABELS: rótulos a serem associados ao cluster.
Se você usar a flag --async com o comando, o sistema vai enviar a solicitação de atualização e retornar uma resposta imediatamente, sem esperar a conclusão da operação. Com a flag --async, é possível continuar com outras tarefas enquanto a atualização do cluster acontece em segundo plano. Se você não usar a flag --async, o sistema vai esperar a conclusão da operação antes de retornar uma resposta. É necessário aguardar até que o cluster seja totalmente atualizado antes de continuar com outras tarefas.
REST
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
-
PROJECT_ID: ID do seu Google Cloud projeto -
LOCATION: o local do cluster -
CLUSTER_ID: o ID do cluster -
UPDATE_MASK: quais campos atualizar, como uma lista separada por vírgulas de nomes totalmente qualificados. Exemplo:capacityConfig.vcpuCount,capacityConfig.memoryBytes -
CPU_COUNT: o número de vCPUs para o cluster -
MEMORY: a quantidade de memória do cluster, em bytes -
SUBNET_ID: ID da sub-rede a ser conectada
Método HTTP e URL:
PATCH https://managedkafka.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/clusters/CLUSTER_ID?updateMask=UPDATE_MASK
Corpo JSON da solicitação:
{
"capacityConfig": {
"vcpuCount": CPU_COUNT,
"memoryBytes": MEMORY
},
"gcpConfig": {
"accessConfig": {
"networkConfigs": [
{
"subnet": "projects/PROJECT_ID/regions/LOCATION/subnetworks/SUBNET_ID"
}
]
}
}
}
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{
"name": "projects/PROJECT_ID/locations/LOCATION/clusters/CLUSTER_ID/topics/TOPIC_ID",
"partitionCount": PARTITION_COUNT,
"replicationFactor": REPLICATION_FACTOR
}
No corpo da solicitação, inclua apenas os campos que você está atualizando, conforme
especificado no UPDATE_MASK parâmetro de consulta. Para adicionar uma sub-rede, anexe uma nova entrada a networkConfigs.
Go
Antes de testar esta amostra, siga as instruções de configuração para Go em Instalar as bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Go do Serviço Gerenciado para Apache Kafka.
Para autenticar no Serviço Gerenciado para Apache Kafka, configure o Application Default Credentials(ADC). Para mais informações, consulte Configurar o ADC para um ambiente de desenvolvimento local.
Java
Antes de testar esta amostra, siga as instruções de configuração para Java em Instalar as bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Java do Serviço Gerenciado para Apache Kafka.
Para autenticar no Serviço Gerenciado para Apache Kafka, configure o Application Default Credentials. Para mais informações, consulte Configurar o ADC para um ambiente de desenvolvimento local.
Python
Antes de testar esta amostra, siga as instruções de configuração para Python em Instalar as bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Python do Serviço Gerenciado para Apache Kafka.
Para autenticar no Serviço Gerenciado para Apache Kafka, configure o Application Default Credentials. Para mais informações, consulte Configurar o ADC para um ambiente de desenvolvimento local.
Limitações
Depois de criar um cluster do Serviço Gerenciado para Apache Kafka, não é possível atualizar as seguintes propriedades:
- O nome do cluster
- O local do cluster
- O tipo de criptografia
Embora não seja possível mudar o tipo de criptografia, é possível revezar as chaves de criptografia.