Dans les environnements de microservices à grande échelle, vous pouvez activer la fonctionnalité Multi-Buffer pour accélérer le traitement du protocole TLS (Transport Layer Security) par le proxy Envoy. Cette fonctionnalité gère efficacement un volume élevé de requêtes HTTPS simultanées en accélérant le chiffrement et le déchiffrement des paquets de données, ce qui réduit la latence réseau et améliore le débit ainsi que la sécurité du système.
Prérequis
Vous avez créé une instance ASM Enterprise Edition ou Ultimate Edition de version 1.10 ou ultérieure. Pour plus d'informations, consultez la rubrique Créer une instance ASM.
-
Vous avez créé un cluster ACK. Les nœuds du cluster doivent appartenir à une famille d'instances basée sur l'architecture CPU Intel Ice Lake, qui prend en charge Multi-Buffer. Pour plus d'informations, consultez la rubrique Créer un cluster ACK managé.
Contexte
Avec l'évolution des technologies de sécurité réseau, le protocole TLS est devenu fondamental pour les communications réseau. Une session TLS comprend deux phases principales : l'établissement de la connexion (handshake) et le transfert des données. Lors de l'établissement de la connexion, un chiffrement asymétrique est utilisé pour négocier une clé de session partagée. Pendant le transfert des données, un chiffrement symétrique utilise ensuite cette clé pour sécuriser les données transmises.
Dans une architecture de microservices, Envoy agit à la fois comme passerelle d'entrée et comme proxy sidecar, traitant un grand volume de requêtes TLS. La cryptographie asymétrique requise lors de la phase d'établissement de la connexion est gourmande en ressources CPU et peut devenir un goulot d'étranglement dans les déploiements à grande échelle. ASM s'intègre à la technologie Multi-Buffer d'Intel pour accélérer le traitement TLS dans Envoy.
La technologie Multi-Buffer utilise le jeu d'instructions AVX-512 des processeurs Intel pour traiter simultanément plusieurs buffers cryptographiques indépendants. Cela permet d'effectuer plusieurs opérations de chiffrement et de déchiffrement en un seul cycle d'exécution, améliorant ainsi considérablement l'efficacité. Cette fonctionnalité ne nécessite aucun matériel supplémentaire, seulement un processeur disposant du jeu d'instructions spécifique. Les processeurs Ice Lake d'Alibaba Cloud sont équipés du dernier jeu d'instructions AVX-512.
Procédure
Méthode 1 : Activation globale
Connectez-vous à la console ASM. Dans le volet de navigation de gauche, choisissez .
Sur la page Mesh Management, cliquez sur le nom de l'instance ASM. Dans le volet de navigation de gauche, choisissez .
Sur la page Base Information, cliquez sur Settings à droite.
-
Dans le panneau Settings Update, sélectionnez Enable MultiBuffer-based TLS encryption and decryption performance optimization et cliquez sur OK.
Si vous utilisez des nœuds de la famille d'instances généralistes g7, l'activation de Multi-Buffer peut augmenter le nombre de requêtes par seconde (QPS) jusqu'à 75 %. Si vous utilisez des nœuds ECS Bare Metal Instance, le gain de performance est encore plus important.
Méthode 2 : Activation au niveau de la passerelle
Pour une nouvelle passerelle ASM
Connectez-vous à la console ASM. Dans le volet de navigation de gauche, choisissez .
Sur la page Mesh Management, cliquez sur le nom de l'instance ASM. Dans le volet de navigation de gauche, choisissez .
-
Sur la page Ingress Gateway, cliquez sur Create. Dans la section Advanced Options de la page Create, sélectionnez TLS performance optimization, configurez les paramètres pertinents, puis cliquez sur Create.
Pour plus d'informations sur les paramètres, consultez la rubrique Créer une passerelle d'entrée.
|
**Paramètre**
|
**Description**
| | --- | --- | |
**supported nodeaffinity**
|
Sélectionne les nœuds pour l'optimisation des performances en fonction des libellés de nœud.
| |
**Poll Delay(ms)**
|
Il n'est généralement pas nécessaire d'ajuster ce paramètre.
Multi-Buffer traite plusieurs opérations cryptographiques par lots. Par exemple, s'il est configuré pour traiter un lot de huit opérations, il attend que huit requêtes soient mises en file d'attente avant l'exécution. Si le volume de requêtes est élevé, le lot se remplit rapidement. Si le volume est faible, l'attente peut être longue. La définition d'un délai d'interrogation force Multi-Buffer à traiter les requêtes actuellement en file d'attente même si le lot n'est pas complet, réduisant ainsi le temps d'attente pour le trafic à faible volume.
|
Pour une passerelle ASM existante
Connectez-vous à la console ASM. Dans le volet de navigation de gauche, choisissez .
Sur la page Service Mesh, cliquez sur le nom de l'instance ASM. Dans le volet de navigation de gauche, choisissez .
-
Pour plus d'informations sur les paramètres, consultez la rubrique Créer une passerelle d'entrée.
Sur la page Ingress Gateway, cliquez sur le nom de la passerelle cible. Sur la page , repérez la section Overview. Cliquez sur l'icône
|
à côté de Gateway Details, sélectionnez Advanced Options, configurez les paramètres, puis cliquez sur Performance Optimization.
**Paramètre**
|
**Description**
| | --- | --- | |
**supported nodeaffinity**
|
Sélectionne les nœuds pour l'optimisation des performances en fonction des libellés de nœud.
| |
**Poll Delay(ms)**
|
Il n'est généralement pas nécessaire d'ajuster ce paramètre.
Multi-Buffer traite plusieurs opérations cryptographiques par lots. Par exemple, s'il est configuré pour traiter un lot de huit opérations, il attend que huit requêtes soient mises en file d'attente avant l'exécution. Si le volume de requêtes est élevé, le lot se remplit rapidement. Si le volume est faible, l'attente peut être longue. La définition d'un délai d'interrogation force Multi-Buffer à traiter les requêtes actuellement en file d'attente même si le lot n'est pas complet, réduisant ainsi le temps d'attente pour le trafic à faible volume.
|
Méthode 3 : Activation au niveau du pod
Cette méthode nécessite ASM version 1.14.3 ou ultérieure. Pour mettre à jour votre instance, consultez la rubrique Mettre à niveau une instance ASM.
Assurez-vous que le pod est planifié sur un nœud qui prend en charge Multi-Buffer.
-
Ajoutez une annotation spécifique au pod.
Voici un exemple d'annotation :
proxy.istio.io/config: | privateKeyProvider: cryptomb: pollDelay: 10ms Redémarrez le pod pour appliquer les modifications.
FAQ
Que se passe-t-il si Multi-Buffer est activé sur des nœuds non pris en charge ?
Le proxy Envoy enregistre un avertissement et la fonctionnalité Multi-Buffer ne prend pas effet.
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.
Les instances ASM Enterprise Edition et Ultimate Edition de version 1.10 ou ultérieure offrent une vérification adaptative pour cette fonctionnalité. Si un pod de service ou de passerelle est planifié sur un nœud qui n'est pas un modèle Intel Ice Lake, le plan de contrôle ne pousse pas la configuration d'accélération et l'accélération TLS reste désactivée pour ce pod.
Comment ajouter et activer Multi-Buffer sur un nœud ?
Ajoutez un nouveau nœud à votre cluster Kubernetes. Le nœud doit utiliser une instance d'une famille basée sur l'architecture CPU Intel Ice Lake. Pour plus d'informations, consultez la rubrique Ajouter des nœuds existants.
Définissez le libellé
multibuffer-support:truesur le nœud nouvellement ajouté. Pour plus d'informations, consultez la rubrique Gérer les libellés et les taints de nœud.-
Ajoutez la configuration YAML suivante à la définition de votre passerelle ASM. Pour plus d'informations, consultez la rubrique Champs CRD pour une passerelle ASM.
Cela ajoute une affinité de nœud pour garantir que l'instance de passerelle est planifiée sur un nœud nouvellement ajouté compatible avec Multi-Buffer.
affinity: nodeAffinity: preferredDuringSchedulingIgnoredDuringExecution: - preference: matchExpressions: - key: feature.node.kubernetes.io/mb-feature-enabled operator: In values: - 'true' weight: 1 -
Activez la fonctionnalité Multi-Buffer pour votre instance ASM Enterprise Edition ou Ultimate Edition. Pour plus d'informations, consultez les procédures décrites précédemment dans cette rubrique.
Après avoir activé la fonctionnalité, le nouveau nœud peut utiliser Multi-Buffer pour accélérer le traitement TLS.
Documents connexes
ASM propose des fonctionnalités telles que le périmètre de découverte de services, les recommandations de ressources sidecar et l'optimisation adaptative du push de configuration. Ces fonctionnalités optimisent l'efficacité du push de configuration du plan de contrôle et réduisent la taille de la configuration des sidecars. Pour plus d'informations, consultez la rubrique Présentation de l'optimisation du push de configuration.