Em ambientes de microsserviços de grande escala, ative o recurso Multi-Buffer para acelerar o processamento de Transport Layer Security (TLS) pelo proxy Envoy. Esse recurso gerencia eficientemente altos volumes de solicitações HTTPS simultâneas ao acelerar a criptografia e a descriptografia de pacotes de dados, reduzir a latência de rede e aumentar o throughput e a segurança do sistema.
Pré-requisitos
Crie uma instância do ASM Enterprise Edition ou Ultimate Edition na versão 1.10 ou posterior. Para obter instruções, consulte Criar uma instância do ASM.
-
Crie um cluster ACK. Os nós do cluster devem usar uma família de instâncias baseada na arquitetura de CPU Intel Ice Lake, compatível com o Multi-Buffer. Para obter instruções, consulte Criar um cluster gerenciado ACK.
Contexto
Com a evolução das tecnologias de segurança de rede, o TLS tornou-se fundamental para a comunicação em rede. Uma sessão TLS envolve duas fases principais: o handshake e a transferência de dados. Durante o handshake, utiliza-se criptografia assimétrica para negociar uma chave de sessão compartilhada. Na fase de transferência de dados, a criptografia simétrica usa essa chave para proteger os dados transmitidos.
Na arquitetura de microsserviços, o Envoy atua como gateway de entrada e proxy sidecar, processando um grande volume de solicitações TLS. A criptografia assimétrica necessária durante a fase de handshake exige muito da CPU e pode se tornar um gargalo de desempenho em implantações de grande escala. O ASM integra-se à tecnologia Multi-Buffer da Intel para acelerar o processamento de TLS no Envoy.
A tecnologia Multi-Buffer utiliza o conjunto de instruções AVX-512 da CPU Intel para processar vários buffers criptográficos independentes simultaneamente. Isso permite concluir múltiplas operações de criptografia e descriptografia em um único ciclo de execução, melhorando significativamente a eficiência. Esse recurso não requer hardware adicional, apenas uma CPU com o conjunto de instruções específico. Os processadores Ice Lake da Alibaba Cloud contam com o mais recente conjunto de instruções AVX-512.
Procedimento
Método 1: Ativação global
Faça login no console do ASM. No painel de navegação à esquerda, escolha .
Na página Mesh Management, clique em nome da instância do ASM. No painel de navegação à esquerda, escolha .
Na página Base Information, clique em Settings à direita.
-
No painel Settings Update, selecione Enable MultiBuffer-based TLS encryption and decryption performance optimization e clique em OK.
Se você utilizar nós da família de instâncias de uso geral g7, a ativação do Multi-Buffer pode aumentar as consultas por segundo (QPS) em até 75%. Caso utilize nós ECS Bare Metal Instance, o ganho de desempenho é ainda maior.
Método 2: Ativação no nível do gateway
Para um novo gateway do ASM
Faça login no console do ASM. No painel de navegação à esquerda, escolha .
Na página Mesh Management, clique em nome da instância do ASM. No painel de navegação à esquerda, escolha .
-
Na página Ingress Gateway, clique em Create. Na seção Advanced Options da página Create, selecione TLS performance optimization, defina as configurações relevantes e clique em Create.
Para mais informações sobre os parâmetros, consulte Criar um gateway de entrada.
Parâmetro
Descrição
supported nodeaffinity
Seleciona nós para otimização de desempenho com base nos rótulos dos nós.
Poll Delay(ms)
Geralmente, não é necessário ajustar este parâmetro.
O Multi-Buffer processa várias operações criptográficas em lotes. Por exemplo, se configurado para processar um lote de oito operações, ele aguarda até que oito solicitações estejam na fila antes da execução. Se o volume de solicitações for alto, o lote é preenchido rapidamente. Se o volume for baixo, a espera pode ser longa. Definir um atraso de sondagem força o Multi-Buffer a processar as solicitações atualmente enfileiradas mesmo que o lote não esteja cheio, reduzindo o tempo de espera para tráfego de baixo volume.
Para um gateway do ASM existente
Faça login no console do ASM. No painel de navegação à esquerda, escolha .
Na página Mesh Management, clique em nome da instância do ASM. No painel de navegação à esquerda, escolha .
-
Para mais informações sobre os parâmetros, consulte Criar um gateway de entrada.
Na página Ingress Gateway, clique em nome do gateway desejado. Na página , localize a seção Advanced Options. Clique em ícone
ao lado de Performance Optimization, selecione TLS performance optimization, configure os parâmetros e clique em Submit.Parâmetro
Descrição
supported nodeaffinity
Seleciona nós para otimização de desempenho com base nos rótulos dos nós.
Poll Delay(ms)
Geralmente, não é necessário ajustar este parâmetro.
O Multi-Buffer processa várias operações criptográficas em lotes. Por exemplo, se configurado para processar um lote de oito operações, ele aguarda até que oito solicitações estejam na fila antes da execução. Se o volume de solicitações for alto, o lote é preenchido rapidamente. Se o volume for baixo, a espera pode ser longa. Definir um atraso de sondagem força o Multi-Buffer a processar as solicitações atualmente enfileiradas mesmo que o lote não esteja cheio, reduzindo o tempo de espera para tráfego de baixo volume.
Método 3: Ativação no nível do pod
Este método requer a versão 1.14.3 ou posterior do ASM. Para atualizar sua instância, consulte Atualizar uma instância do ASM.
Garanta que o pod esteja agendado em um nó compatível com Multi-Buffer.
-
Adicione uma anotação específica ao pod.
Veja abaixo um exemplo de anotação:
proxy.istio.io/config: | privateKeyProvider: cryptomb: pollDelay: 10ms Reinicie o pod para aplicar as alterações.
Perguntas frequentes
O que acontece se o Multi-Buffer for ativado em nós incompatíveis?
O proxy Envoy registra um aviso e o recurso Multi-Buffer não entra em vigor.
2021-11-09T15:24:03.269127Z info sds service generate, Multibuffer enable: true
2021-11-09T15:24:03.269158Z info cache returned workload trust anchor from cache ttl=23h59m59.730845791s
2021-11-09T15:24:03.269177Z info proxyConfig: config_path:"/etc/istio/proxy" binary_path:"/usr/local/bin/envoy" service_cluster:"istio-ingressgateway" drain_duration:<seconds:45 > parent_shutdown_duration:<seconds:60 > discovery_address:"istiod.istio-system.svc:15012" proxy_admin_port:15000 control_plane_auth_policy:MUTUAL_TLS stat_name_length:189 concurrency:<> tracing:<zipkin:<address:"zipkin.istio-system:9411" > > proxy_metadata:<key:"DNS_AGENT" value:"" > status_port:15020 termination_drain_duration:<seconds:5 > multi_buffer:<enabled:true poll_delay:<nanos:20000000 > >
2021-11-09T15:24:03.269185Z info sds service generate, Multibuffer enable: true
2021-11-09T15:24:03.269211Z info cache returned workload certificate from cache ttl=23h59m59.730792927s
2021-11-09T15:24:03.269223Z info pollDelay config: 20ms
2021-11-09T15:24:03.269456Z info sds SDS: PUSH resource=ROOTCA
2021-11-09T15:24:03.269589Z info sds SDS: PUSH resource=default
2021-11-09T15:24:03.270330Z warning envoy config gRPC config for type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.Secret rejected: Multi-buffer CPU instructions not available.
2021-11-09T15:24:03.271696Z warn ads ADS:SDS: ACK ERROR router~172.18.96.137~istio-ingressgateway1-d7447cb55-khr8s.istio-system~istio-system.svc.cluster.local-2 Internal:Multi-buffer CPU instructions not available.
2021-11-09T15:24:04.309379Z info Initialization took 1.267025329s
2021-11-09T15:24:04.309416Z info Envoy proxy is ready
2021-11-09T15:24:04.458149Z warning envoy config gRPC config for type.googleapis.com/envoy.config.cluster.v3.Cluster rejected: Error adding/updating cluster(s) outbound|15021||istio-ingressgateway1.istio-system.svc.cluster.local: Multi-buffer CPU instructions not available., outbound|80||istio-ingressgateway1.istio-system.svc.cluster.local: Multi-buffer CPU instructions not available., outbound|443||istio-ingressgateway1.istio-system.svc.cluster.local: Multi-buffer CPU instructions not available.
Instâncias do ASM Enterprise Edition e Ultimate Edition na versão 1.10 ou posterior oferecem uma verificação adaptativa para esse recurso. Se um pod de serviço ou gateway for agendado em um nó que não seja do modelo Intel Ice Lake, o plano de controle não envia a configuração de aceleração e a aceleração TLS permanece desativada para esse pod.
Como adicionar e ativar o Multi-Buffer em um nó?
Adicione um novo nó ao seu cluster Kubernetes. O nó deve usar uma instância de uma família baseada na arquitetura de CPU Intel Ice Lake. Para obter instruções, consulte Adicionar nós existentes.
Defina o rótulo
multibuffer-support:trueno nó recém-adicionado. Para mais informações, consulte Gerenciar rótulos e taints de nós.-
Adicione a seguinte configuração YAML à definição do seu gateway do ASM. Para obter instruções, consulte Campos CRD para um gateway do ASM.
Isso adiciona afinidade de nó para garantir que a instância do gateway seja agendada em um nó recém-adicionado e compatível com Multi-Buffer.
affinity: nodeAffinity: preferredDuringSchedulingIgnoredDuringExecution: - preference: matchExpressions: - key: feature.node.kubernetes.io/mb-feature-enabled operator: In values: - 'true' weight: 1 -
Ative o recurso Multi-Buffer para sua instância do ASM Enterprise Edition ou Ultimate Edition. Para obter instruções, consulte os procedimentos descritos anteriormente neste tópico.
Após ativar o recurso, o novo nó poderá usar o Multi-Buffer para acelerar o processamento de TLS.
Documentos relacionados
O ASM oferece recursos como escopo de descoberta de serviços, recomendações de recursos para sidecars e otimização adaptativa de envio de configurações. Esses recursos otimizam a eficiência do envio de configurações pelo plano de controle e reduzem o tamanho das configurações dos sidecars. Para mais informações, consulte Visão geral da otimização de envio de configurações.