Verificação confluente
Realizamos a verificação com o Confluent Platform 6.2 Tiered Storage no NetApp StorageGRID. As equipes da NetApp e da Confluent trabalharam juntas nessa verificação e executaram os casos de teste necessários para a verificação.
Configuração da plataforma Confluent
Usamos a seguinte configuração para verificação.
Para verificação, usamos três tratadores, cinco corretores, cinco servidores de execução de scripts de teste, servidores de ferramentas nomeadas com 256 GB de RAM e 16 CPUs. Para armazenamento NetApp , usamos o StorageGRID com um balanceador de carga SG1000 com quatro SGF6024s. O armazenamento e os corretores foram conectados por meio de conexões de 100 GbE.
A figura a seguir mostra a topologia de rede da configuração usada para verificação do Confluent.
Os servidores de ferramentas atuam como clientes de aplicativos que enviam solicitações aos nós do Confluent.
Configuração de armazenamento em camadas confluente
A configuração de armazenamento em camadas requer os seguintes parâmetros no Kafka:
Confluent.tier.archiver.num.threads=16 confluent.tier.fetcher.num.threads=32 confluent.tier.enable=true confluent.tier.feature=true confluent.tier.backend=S3 confluent.tier.s3.bucket=kafkasgdbucket1-2 confluent.tier.s3.region=us-west-2 confluent.tier.s3.cred.file.path=/data/kafka/.ssh/credentials confluent.tier.s3.aws.endpoint.override=http://kafkasgd.rtpppe.netapp.com:10444/ confluent.tier.s3.force.path.style.access=true
Para verificação, usamos StorageGRID com o protocolo HTTP, mas HTTPS também funciona. A chave de acesso e a chave secreta são armazenadas no nome do arquivo fornecido no confluent.tier.s3.cred.file.path
parâmetro.
Armazenamento de objetos NetApp - StorageGRID
Configuramos a configuração de site único no StorageGRID para verificação.
Testes de verificação
Concluímos os cinco casos de teste a seguir para verificação. Esses testes são executados no framework Trogdor. Os dois primeiros foram testes de funcionalidade e os três restantes foram testes de desempenho.
Teste de correção de armazenamento de objetos
Este teste determina se todas as operações básicas (por exemplo, obter/colocar/excluir) na API de armazenamento de objetos funcionam bem de acordo com as necessidades do armazenamento em camadas. É um teste básico que todo serviço de armazenamento de objetos deve esperar passar antes dos testes seguintes. É um teste assertivo que pode ser aprovado ou reprovado.
Teste de correção da funcionalidade de hierarquização
Este teste determina se a funcionalidade de armazenamento em camadas de ponta a ponta funciona bem com um teste assertivo que passa ou falha. O teste cria um tópico de teste que, por padrão, é configurado com camadas habilitadas e um tamanho de hotset altamente reduzido. Ele produz um fluxo de eventos para o tópico de teste recém-criado, aguarda que os corretores arquivem os segmentos no armazenamento de objetos e, então, consome o fluxo de eventos e valida se o fluxo consumido corresponde ao fluxo produzido. O número de mensagens produzidas no fluxo de eventos é configurável, o que permite ao usuário gerar uma carga de trabalho suficientemente grande de acordo com as necessidades de teste. O tamanho reduzido do hotset garante que as buscas do consumidor fora do segmento ativo sejam atendidas somente pelo armazenamento de objetos; isso ajuda a testar a exatidão do armazenamento de objetos para leituras. Realizamos este teste com e sem uma injeção de falha de armazenamento de objeto. Simulamos uma falha de nó interrompendo o serviço do gerenciador de serviços em um dos nós no StorageGRID e validando se a funcionalidade de ponta a ponta funciona com o armazenamento de objetos.
Benchmark de busca de nível
Este teste validou o desempenho de leitura do armazenamento de objetos em camadas e verificou o intervalo de solicitações de leitura de busca sob carga pesada de segmentos gerados pelo benchmark. Neste benchmark, a Confluent desenvolveu clientes personalizados para atender às solicitações de busca de camadas.
Benchmark de carga de trabalho de produção e consumo
Este teste gerou indiretamente carga de trabalho de gravação no armazenamento de objetos por meio do arquivamento de segmentos. A carga de trabalho de leitura (segmentos lidos) foi gerada a partir do armazenamento de objetos quando grupos de consumidores buscavam os segmentos. Esta carga de trabalho foi gerada pelo script de teste. Este teste verificou o desempenho de leitura e gravação no armazenamento de objetos em threads paralelos. Testamos com e sem injeção de falha de armazenamento de objetos, assim como fizemos para o teste de correção da funcionalidade de camadas.
Referência de carga de trabalho de retenção
Este teste verificou o desempenho de exclusão de um armazenamento de objetos sob uma carga de trabalho pesada de retenção de tópicos. A carga de trabalho de retenção foi gerada usando um script de teste que produz muitas mensagens em paralelo a um tópico de teste. O tópico de teste foi a configuração com uma configuração agressiva de retenção baseada em tamanho e tempo que fazia com que o fluxo de eventos fosse continuamente eliminado do armazenamento de objetos. Os segmentos foram então arquivados. Isso levou a um grande número de exclusões no armazenamento de objetos pelo broker e à cobrança do desempenho das operações de exclusão do armazenamento de objetos.