Acesso rápido a um conjunto de hash no Varnish

Acesso rápido a um conjunto de hash no Varnish

Estou desenvolvendo um pipeline de Varnish que atende uma combinação de recursos públicos e restritos.

Como o acesso a recursos públicos representa a grande maioria (>99,9%) do tráfego, quero criar atalhos para ignorar a validação de token de autenticação e outras coisas semelhantes para recursos não restritos – ou melhor ainda, passar apenas pelo authN/Z caminho se o recurso estiver em uma espécie de lista negra.

Esta lista negra pode conter até cerca de 1 milhão (nos próximos anos) de entradas UUID4. Um arquivo desse tipo em texto simples ocupa cerca de 3,7 Gb no disco, então uma máquina com boa capacidade de RAM deve ser capaz de manter tudo isso na memória.

Minha dúvida é sobre como implementar essa lista negra para que as pesquisas sejam muito rápidas. Pensei em um conjunto de hash "nativo", ou Memcached, ou métodos semelhantes. O Memcached provavelmente desaceleraria as coisas se fosse distribuído. Alguém implementou uma abordagem semelhante? Que ferramentas o Varnish tem à minha disposição?

Responder1

No Varnish você não tem acesso direto ao hash de um objeto.

No entanto, como você indicou, você poderia armazenar uma lista de recursos restritos em um armazenamento de valores-chave.

KVStore em Varnish Enterprise

Quando falamos sobre pura velocidade de execução,Varnish Enterprise possui um módulo KVStore. EsseKVStoreé mantido na memória local e pode ser reconstruído a partir de um arquivo quando ocorrer uma reinicialização.

O Varnish Enterprise não é gratuito e requer a compra de uma chave de licença. Se você deseja uma barreira de entrada menor para a versão empresarial, existem imagens oficiais de máquinas do Varnish Enterprise na AWS, Azure, GCP e OCI. Tanto para Ubuntu quanto para Red Hat. Você não paga nenhuma licença adiantada e é cobrado por hora. Verhttps://aws.amazon.com/marketplace/pp/B07L7HVVMF?ref_=srh_res_product_titlepara obter um exemplo na AWS

O Redis VMOD

SeEmpresa de vernizesnão é para você, você também pode usarRedis VMOD de Carlos Abalde. É gratuito, de código aberto e faz o trabalho muito bem.

Você pode até correrLUAscripts dentro da VCL para executar lógicas mais complexas no Redis.

Se você tem medo de que o Redis o deixe lento, você pode limitar o número de conexões e até mesmo garantir que a conexão seja compartilhada.

informação relacionada