Reatribuição de partições
Cenário
A reatribuição de partição é reatribuir réplicas de uma partição a diferentes brokers para resolver o problema da carga desbalanceada do broker.
A reatribuição de partição é necessária nos seguintes cenários:
- Depois que a quantidade de broker é aumentada para uma instância, as réplicas das partições de tópico originais são migradas para os novos brokers.
- A partição líder é degradada para ser um seguidor em um broker fortemente carregado.
- O número de réplicas é aumentado ou diminuído.
O console do DMS for Kafka fornece reatribuição automática e manual. A reatribuição automática é recomendada porque garante que os líderes sejam distribuídos uniformemente.
Impacto da operação
- A reatribuição de partição em tópicos com uma grande quantidade de dados consome uma grande quantidade de largura de banda de rede e armazenamento. Como resultado, as solicitações de serviço podem expirar ou a latência pode aumentar. Portanto, é recomendável que você realize a reatribuição durante o horário fora do horário de pico. Compare a carga de instância atual com base nas especificações da instância para decidir se a capacidade restante da instância pode oferecer suporte à reatribuição de partição. Não reatribuir partições quando houver largura de banda insuficiente ou quando o uso da CPU for maior que 90%.
- Uma limitação refere-se ao limite superior da largura de banda para replicação de um tópico, para garantir que outros tópicos na instância não sejam afetados. Observe que as limitações se aplicam à replicação acionada pela produção normal de mensagens e pela reatribuição de partição. Se a limitação for muito pequena, a produção normal de mensagens pode ser afetada e a reatribuição de partição pode nunca ser concluída.
- Não é possível excluir tópicos cujas tarefas de reatribuição foram iniciadas. Caso contrário, as tarefas nunca serão concluídas.
- Não é possível modificar a quantidade de partição de tópicos cujas tarefas de reatribuição foram iniciadas.
- As tarefas de reatribuição não podem ser interrompidas manualmente. Por favor, aguarde até que elas sejam concluídas.
- Se uma tarefa de reatribuição de partição agendada tiver sido configurada, nenhuma outra reatribuição poderá ser executada até que essa tarefa existente seja executada.
- Após a reatribuição da partição, os metadados do tópico mudam. Se o produtor não suportar o mecanismo de repetição, alguns pedidos falharão, fazendo com que algumas mensagens não sejam produzidas.
- A reatribuição leva muito tempo se o tópico tiver uma grande quantidade de dados. É aconselhável diminuir o tempo de envelhecimento do tópico com base no consumo do tópico para que os dados históricos do tópico possam ser excluídos em tempo hábil para acelerar a migração.
Preparar para reatribuição de partição
- Para reduzir a quantidade de dados a serem migrados, diminua o tempo de envelhecimento do tópico sem afetar os serviços e aguarde o envelhecimento das mensagens. Depois que a reatribuição for concluída, você poderá restaurar o tempo de envelhecimento.
- Certifique-se de que o broker de destino tenha capacidade de disco suficiente. Se a capacidade de disco restante do broker de destino estiver próxima da quantidade de dados a serem migrados para o broker, expanda a capacidade de disco antes da reatribuição.
Reatribuição automática
- Faça logon no console de gerenciamento.
- Clique em
no canto superior esquerdo para selecionar uma região.
Selecione a região onde sua instância do Kafka está localizada.
- Clique em
e escolha Middleware > Distributed Message Service (for Kafka) para abrir o console do DMS for Kafka. - Clique na instância do Kafka desejada para exibir os detalhes da instância.
- No painel de navegação, escolha a guia Topics.
- Reatribua partições usando um dos seguintes métodos:
- Selecione um ou mais tópicos e escolha Reassign > Auto acima da lista de tópicos.
- Na linha que contém o tópico desejado, escolha More > Reassign > Auto.
- Defina parâmetros de reatribuição automática.
- Na área Brokers, selecione os brokers aos quais atribuir as réplicas de partição do tópico.
- Na área Topics, insira o número de réplicas a serem reatribuídas automaticamente. O número de réplicas deve ser menor ou igual ao número de brokers.
- Especifique throttle. O valor padrão é -1, indicando que não há limitação (recomendado se a carga da instância for leve). Se uma limitação for necessária, é aconselhável defini-la para um valor maior ou igual à largura de banda total de produção do tópico a ser reatribuído multiplicado pelo número máximo de réplicas do tópico a ser reatribuído. Para mais detalhes, consulte Calcular uma limitação.
- Para Execute, especifique quando executar a reatribuição. Now significa executá-la imediatamente. As scheduled significa executá-la no horário agendado.
Figura 1 Definir parâmetros de reatribuição automática
- Clique em OK. A lista de tópicos é exibida.
No canto superior esquerdo da lista de tópicos, clique em View details para exibir o status da tarefa de reatribuição na página Background Tasks exibida.
- Para uma tarefa de reatribuição não agendada, selecione Background tasks no canto superior direito da página Background Tasks para exibir o status da tarefa. Quando o status da tarefa for Successful, a reatribuição foi concluída.
- Para uma tarefa de reatribuição agendada, selecione Scheduled tasks no canto superior direito da página Background Tasks para exibir o status da tarefa. Quando o status da tarefa é Pending, a reatribuição não foi executada. Quando o status da tarefa for Successful, a reatribuição foi concluída. Selecione Background tasks no canto superior direito da página para exibir o status da tarefa. Quando o status da tarefa for Successful, a reatribuição foi concluída.
Figura 2 Página de tarefas em segundo plano
- Não é possível excluir tópicos cujas tarefas de reatribuição foram iniciadas. Caso contrário, as tarefas nunca serão concluídas.
- Não é possível modificar a quantidade de partição de tópicos cujas tarefas de reatribuição foram iniciadas.
- As tarefas de reatribuição não podem ser interrompidas manualmente. Por favor, aguarde até que elas sejam concluídas.
- Se uma tarefa de reatribuição de partição agendada tiver sido configurada, nenhuma outra reatribuição poderá ser executada até que essa tarefa existente seja executada.
Reatribuição manual
- Faça logon no console de gerenciamento.
- Clique em
no canto superior esquerdo para selecionar uma região.
Selecione a região onde sua instância do Kafka está localizada.
- Clique em
e escolha Middleware > Distributed Message Service (for Kafka) para abrir o console do DMS for Kafka. - Clique na instância do Kafka desejada para exibir os detalhes da instância.
- No painel de navegação, escolha a guia Topics.
- Reatribua partições usando um dos seguintes métodos:
- Selecione um tópico e escolha Reassign > Manual acima da lista de tópicos. A reatribuição manual não oferece suporte a operações em lote.
- Na linha que contém o tópico desejado, escolha More > Reassign > Manual.
- Defina parâmetros de reatribuição manual.
- No canto superior direito da caixa de diálogo Manual, clique em Delete Replica ou Add Replica para reduzir ou aumentar o número de réplicas para cada partição do tópico.
- Sob o nome da réplica a ser reatribuída, clique no nome do broker ou
e selecione o broker de destino para o qual migrar a réplica. Atribua réplicas da mesma partição a diferentes brokers. - Especifique throttle. O valor padrão é -1, indicando que não há limitação (recomendado se a carga da instância for leve). Se uma limitação for necessária, é aconselhável defini-la para um valor maior ou igual à largura de banda total de produção do tópico a ser reatribuído multiplicado pelo número máximo de réplicas do tópico a ser reatribuído. Para mais detalhes, consulte Calcular uma limitação.
- Para Execute, especifique quando executar a reatribuição. Now significa executá-la imediatamente. As scheduled significa executá-la no horário agendado.
Figura 3 Configurar parâmetros de reatribuição manual
- Clique em OK. A lista de tópicos é exibida.
No canto superior esquerdo da lista de tópicos, clique em View details para exibir o status da tarefa de reatribuição na página Background Tasks exibida.
- Para uma tarefa de reatribuição não agendada, selecione Background tasks no canto superior direito da página Background Tasks para exibir o status da tarefa. Quando o status da tarefa for Successful, a reatribuição foi concluída.
- Para uma tarefa de reatribuição agendada, selecione Scheduled tasks no canto superior direito da página Background Tasks para exibir o status da tarefa. Quando o status da tarefa é Pending, a reatribuição não foi executada. Quando o status da tarefa for Successful, a reatribuição foi concluída. Selecione Background tasks no canto superior direito da página para exibir o status da tarefa. Quando o status da tarefa for Successful, a reatribuição foi concluída.
Figura 4 Página de tarefas em segundo plano
- Não é possível excluir tópicos cujas tarefas de reatribuição foram iniciadas. Caso contrário, as tarefas nunca serão concluídas.
- Não é possível modificar a quantidade de partição de tópicos cujas tarefas de reatribuição foram iniciadas.
- As tarefas de reatribuição não podem ser interrompidas manualmente. Por favor, aguarde até que elas sejam concluídas.
- Se uma tarefa de reatribuição de partição agendada tiver sido configurada, nenhuma outra reatribuição poderá ser executada até que essa tarefa existente seja executada.
Reagendar a reatribuição de partição
- No canto superior direito da página Background Tasks, selecione Scheduled tasks e um segmento de tempo para procurar a tarefa desejada.
Figura 5 Selecionar tarefas agendadas e um segmento de tempo
- Na linha que contém a tarefa desejada, clique em Modify.
- Na caixa de diálogo Change Schedule, altere o agendamento ou cancele a tarefa agendada.
- Para alterar o cronograma, selecione um horário e clique em OK.
- Para cancelar a tarefa, selecione Cancel (como mostrado na Figura 6) e clique em OK.
Calcular uma limitação
As limitações são afetadas pela duração da execução da reatribuição, distribuição líder/seguidor de réplicas de partição e taxa de produção de mensagens.
- Uma limitação limita o tráfego de replicação de todas as partições em um broker.
- Réplicas adicionadas após a atribuição são consideradas seguidores, e réplicas existentes são consideradas líderes. As limitações sobre líderes e seguidores são separadas.
- As limitações não distinguem entre a replicação causada pela produção normal de mensagens e aquela causada pela reatribuição de partição. Portanto, o tráfego gerado em ambos os casos é estrangulado.
Suponha que a tarefa de reatribuição de partição precisa ser concluída dentro de 200s e cada réplica tem 100 MB de dados. Calcule a limitação nos seguintes cenários:
Cenário 1: o Tópico 1 tem duas partições e duas réplicas, e o Tópico 2 tem uma partição e uma réplica. Todas as réplicas do líder estão no mesmo broker. Uma réplica precisa ser adicionada para o Tópico 1 e Tópico 2, respectivamente.
|
Nome do tópico |
Nome da partição |
Broker da réplica de líder |
Broker da réplica de seguidor |
|---|---|---|---|
|
Tópico 1 |
0 |
0 |
0, 1 |
|
Tópico 1 |
1 |
0 |
0, 2 |
|
Tópico 2 |
0 |
0 |
0 |
|
Nome do tópico |
Nome da partição |
Broker da réplica de líder |
Broker da réplica de seguidor |
|---|---|---|---|
|
Tópico 1 |
0 |
0 |
0, 1, 2 |
|
Tópico 1 |
1 |
0 |
0, 1, 2 |
|
Tópico 2 |
0 |
0 |
0, 2 |
Conforme mostrado em Figura 7, três réplicas buscam dados do Broker 0. Cada réplica no Broker 0 tem 100 MB de dados. O Broker 0 tem apenas réplicas de líder, e o Broker 1 e o Broker 2 têm apenas réplicas de seguidor.
- Largura de banda exigida pelo Broker 0 para completar a reatribuição de partição dentro de 200s = (100 MB + 100 MB + 100 MB + 100 MB)/200s = 1,5 MB/s
- Largura de banda exigida pelo Broker 1 para completar a reatribuição da partição dentro de 200s = 100 MB/200s = 0,5 MB/s
- Largura de banda exigida pelo Broker 2 para completar a reatribuição de partição dentro de 200s = (100 MB + 100 MB)/200s = 1 MB/s
Em conclusão, para concluir a tarefa de reatribuição de partição dentro de 200s, defina a limitação para um valor maior ou igual a 1,5 MB/s.
Cenário 2: o Tópico 1 tem duas partições e uma réplica, e o Tópico 2 tem duas partições e uma réplica. As réplicas de líder estão em brokers diferentes. Uma réplica precisa ser adicionada para o Tópico 1 e Tópico 2, respectivamente.
|
Nome do tópico |
Nome da partição |
Broker da réplica de líder |
Broker da réplica de seguidor |
|---|---|---|---|
|
Tópico 1 |
0 |
0 |
0 |
|
Tópico 1 |
1 |
1 |
1 |
|
Tópico 2 |
0 |
1 |
1 |
|
Tópico 2 |
1 |
2 |
2 |
|
Nome do tópico |
Nome da partição |
Broker da réplica de líder |
Broker da réplica de seguidor |
|---|---|---|---|
|
Tópico 1 |
0 |
0 |
0, 2 |
|
Tópico 1 |
1 |
1 |
1, 2 |
|
Tópico 2 |
0 |
1 |
1, 2 |
|
Tópico 2 |
1 |
2 |
2, 0 |
Conforme mostrado em Figura 8, o Broker 1 tem apenas réplicas de líder, e o Broker 0 e o Broker 2 têm réplicas de líder e seguidor. As réplicas líder e seguidor no Broker 0 e no Broker 2 são controladas separadamente.
- Largura de banda exigida pelo Broker 0 (líder) para completar a reatribuição da partição dentro de 200s = 100 MB/200s = 0,5 MB/s
- Largura de banda exigida pelo Broker 0 (seguidor) para completar a reatribuição da partição dentro de 200s = 100 MB/200s = 0,5 MB/s
- Largura de banda exigida pelo Broker 1 para completar a reatribuição de partição dentro de 200s = (100 MB + 100 MB)/200s = 1 MB/s
- Largura de banda exigida pelo Broker 2 (líder) para completar a reatribuição da partição dentro de 200s = 100 MB/200s = 0,5 MB/s
- Largura de banda exigida pelo Broker 2 (seguidor) para completar a reatribuição da partição dentro de 200s = (100 MB + 100 MB + 100 MB)/200s = 1,5 MB/s
Em conclusão, para concluir a tarefa de reatribuição de partição dentro de 200s, defina a limitação para um valor maior ou igual a 1,5 MB/s.
Cenário 3: tanto o Tópico 1 como o Tópico 2 têm uma partição e duas réplicas. Todas as réplicas do líder estão no mesmo broker. Uma réplica precisa ser adicionada ao Tópico 1. As mensagens são produzidas no Tópico 1, causando replicação.
|
Nome do tópico |
Nome da partição |
Broker da réplica de líder |
Broker da réplica de seguidor |
|---|---|---|---|
|
Tópico 1 |
0 |
0 |
0, 1 |
|
Tópico 2 |
0 |
0 |
0, 1 |
|
Nome do tópico |
Nome da partição |
Broker da réplica de líder |
Broker da réplica de seguidor |
|---|---|---|---|
|
Tópico 1 |
0 |
0 |
0, 1, 2 |
|
Tópico 2 |
0 |
0 |
0, 1 |
Conforme mostrado em Figura 9, uma réplica precisa buscar dados do Broker 0 para reatribuição de partição e a outra réplica precisa buscar dados do Broker 0 para produção de mensagens. Como a limitação não distingue entre a produção de mensagens e a reatribuição de partição, o tráfego causado por ambos é limitado e contado.
- Largura de banda exigida pelo Broker 0 para concluir a reatribuição de partição dentro de 200s = (100 MB + 700 KB/s x 200s)/200s + 700 KB/s = 1,9 MB/s
- Largura de banda exigida pelo Broker 2 para completar a reatribuição da partição dentro de 200s = 100 MB/200s = 0,5 MB/s
Em conclusão, para concluir a tarefa de reatribuição de partição dentro de 200s, defina a limitação para um valor maior ou igual a 1,9 MB/s.



